你是否觉得AI联网搜索返回的内容太冗长了?一个网页可能包含导航栏、广告、评论区、相关推荐等大量无关信息,但这些内容都被塞进了对话上下文,浪费了很多token。而且搜索引擎返回的原始结果格式混乱,AI理解起来也费力。
现在有一个专门为LLM优化的信息获取服务器可以解决这个问题。crawl4ai-mcp-server是一个基于MCP的智能信息获取工具,它通过多引擎搜索和智能内容提取,把网页中最核心、最有价值的内容提取出来,转换成最适合LLM处理的格式。这不仅能节省token,还能让AI更准确地理解网页的核心信息。
项目基本信息
| 信息项 | 详情 |
|---|---|
| 项目名称 | crawl4ai-mcp-server |
| GitHub地址 | https://github.com/weidwonder/crawl4ai-mcp-server |
| 项目描述 | 用于提供给本地开发者的 LLM的高效互联网搜索&内容获取的MCP Server, 节省你的token |
| 作者 | weidwonder |
| 开源协议 | MIT License |
| 开源状态 | 公开状态 |
| Languages | Python 96.4%, Dockerfile 3.6% |
| 支持平台 | Windows / macOS / Linux |
| 最后更新 | 2026-04-09 |
一、项目介绍
crawl4ai-mcp-server是一个基于Python的MCP服务器,它为AI助手提供了智能化的搜索和网页内容理解能力。这个项目的核心目标是:让AI能够高效、精准地从互联网获取信息,同时最大限度地压缩内容体积,节省token消耗。
这个服务器提供了两个主要工具:
search(搜索工具)
这是一个强大的多引擎网络搜索工具。它支持两种搜索引擎:
- DuckDuckGo搜索(默认):不需要API密钥,开箱即用,适合大多数搜索场景。
- Google搜索:需要配置API密钥和CSE ID(自定义搜索引擎ID),提供更精准、更商业化的搜索结果。
你可以选择只用一个引擎,也可以用“all”参数同时使用两个引擎,获取更全面的结果。搜索返回的内容会经过初步整理,包括标题、链接、摘要等信息。
read_url(内容读取工具)
这是项目的核心。它不仅仅是将HTML转换成文本,而是采用了多种智能策略来优化内容:
markdown_with_citations(默认):生成包含内联引用的Markdown格式,保持信息溯源。每个引用点都会标注来源。fit_markdown:经过LLM优化的精简内容,去除冗余信息,只保留核心段落。这是最节省token的格式。raw_markdown:基础的HTML到Markdown转换,不做智能过滤。references_markdown:单独提取出所有的引用和参考文献部分。fit_html:生成fit_markdown对应的过滤后HTML。markdown:标准的Markdown格式。
其中fit_markdown模式通过智能识别文章主体、过滤噪音(导航栏、广告、页脚)、保留URL引用、使用最小词数阈值(默认10词)过滤无效片段等方式,在保持信息完整性的前提下大幅压缩内容。
这个项目的诞生很有意思。根据作者描述,100%的代码由Claude Sonnet 3.5编写,但调试花费了2个小时和7美元。这是一个AI辅助开发的实例,也是为AI服务而开发的工具。
二、核心优势
面向LLM的内容优化
这是crawl4ai-mcp-server最突出的特点。它不是简单地抓取网页,而是理解什么样的内容对LLM最有价值。fit_markdown模式会智能地去掉导航链接、广告、版权声明、评论区等对理解无帮助的部分,保留文章主体、关键定义、数据表格等核心信息。这对于需要在有限上下文中处理大量信息的场景来说,价值很大。
多引擎搜索的灵活性
DuckDuckGo免费且注重隐私,适合日常搜索;Google搜索需要配置但结果质量更高,适合商业调研。你可以在同一个工具中无缝切换,甚至同时使用两个引擎来交叉验证结果。这种灵活性让工具适应不同的搜索需求。
引用溯源能力
markdown_with_citations格式在提取内容的同时保留了信息来源。当你让AI基于这些内容生成答案时,它可以明确指出哪个信息来自哪个链接。这对于需要可验证性的场景(如研究、事实核查)非常重要。
无需API密钥即可使用核心功能
如果你只想用DuckDuckGo搜索和网页内容提取,完全不需要任何API密钥。克隆项目、安装依赖、配置客户端,就可以开始使用了。这大大降低了试用门槛。
基于FastMCP的高性能异步设计
服务器采用异步设计,在处理多个请求时不会互相阻塞。这对于需要同时搜索和抓取多个页面的场景很有帮助。
轻松部署的Docker支持
项目提供了Dockerfile,你可以将整个服务容器化。这对于在生产环境中部署,或者在不希望污染本地Python环境的用户来说,是一个很方便的选择。
三、适用场景
开发AI应用时的实时信息获取
如果你在开发一个需要联网搜索的AI Agent,可以用crawl4ai-mcp-server作为其信息后盾。Agent先通过search找到相关页面,然后用read_url的fit_markdown模式提取核心内容,最后基于这些内容回答问题。整个流程token消耗很小,响应也很快。
个人知识库的自动构建
你可以定期用search搜索特定关键词,然后用read_url抓取结果页面,将fit_markdown格式的内容存入笔记软件(如Obsidian、Notion)。由于内容已经过优化,不会存下大量无用信息。
研究与事实核查
研究人员可以用markdown_with_citations模式抓取网页,AI在回答问题时可以引用具体的来源段落。这比只返回一个链接列表要可靠得多。
内容监控与舆情分析
企业可以用这个工具监控新闻网站、社交媒体关于自己品牌的讨论。由于内容被智能过滤,你可以快速浏览大量页面,而不被无关的导航栏和广告干扰。
AI训练数据的精简清洗
如果你需要从网上收集文本数据来训练或微调模型,可以直接用fit_markdown模式抓取,得到的内容噪音少、信息密度高。相比直接保存HTML,这能节省大量存储空间和处理时间。
多语言内容的处理
虽然项目没有特别强调,但基于Crawl4AI的底层能力,它应该能处理多种语言的网页内容。英文、中文、日文等主流语言的网站都能较好地提取。
四、安装教程
前置准备
在开始之前,确保你的系统满足以下要求:
- Python 3.9或更高版本
- Git(用于克隆项目)
- 建议使用虚拟环境,避免依赖冲突
第一步:克隆项目
打开终端,运行以下命令:
git clone https://github.com/weidwonder/crawl4ai-mcp-server.git
cd crawl4ai-mcp-server第二步:创建并激活虚拟环境(推荐)
创建虚拟环境可以隔离项目依赖,避免污染全局Python环境。
macOS/Linux:
python -m venv crawl4ai_env
source crawl4ai_env/bin/activateWindows:
python -m venv crawl4ai_env
.\crawl4ai_env\Scripts\activate激活后,你的终端提示符前面会出现(crawl4ai_env)。
第三步:安装依赖
pip install -r requirements.txt这会自动安装fastmcp、crawl4ai、duckduckgo-search等必要的库。
第四步:安装Playwright浏览器
Crawl4AI底层使用Playwright来渲染网页,所以需要安装浏览器驱动:
playwright install这一步会下载Chromium、Firefox等浏览器,可能需要几分钟时间。
第五步:配置(可选)
如果你想使用Google搜索,需要复制配置示例并填入API密钥:
cp config_demo.json config.json然后编辑config.json,填入你的Google API密钥和CSE ID。如果只用DuckDuckGo搜索,可以跳过这一步。
第六步:配置到Claude Desktop
这是让AI能够调用这个服务器的关键步骤。找到Claude Desktop的配置文件:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
用文本编辑器打开,添加以下配置。注意将/path/to/crawl4ai-mcp-server替换为项目的实际绝对路径。
{
"mcpServers": {
"crawl4ai": {
"command": "python",
"args": [
"-m",
"src.index"
],
"cwd": "/path/to/crawl4ai-mcp-server",
"env": {
"PYTHONPATH": "/path/to/crawl4ai-mcp-server/src"
}
}
}
}如果你使用了虚拟环境,可能需要指定虚拟环境中Python的完整路径。例如:
{
"mcpServers": {
"crawl4ai": {
"command": "/path/to/crawl4ai_env/bin/python",
"args": [
"-m",
"src.index"
],
"cwd": "/path/to/crawl4ai-mcp-server",
"env": {
"PYTHONPATH": "/path/to/crawl4ai-mcp-server/src"
}
}
}
}通过Smithery一键安装(更简单)
如果你不想手动配置,可以通过Smithery自动安装:
npx -y @smithery/cli install @weidwonder/crawl4ai-mcp-server --client claude这个命令会自动完成所有安装和配置步骤。
使用Docker(适合不想配置Python环境的用户)
如果你不想在本地安装Python,可以使用Docker:
docker build -t crawl4ai-mcp-server .
docker run --rm -i crawl4ai-mcp-server但需要根据你的MCP客户端配置相应的Docker运行命令。
验证安装
配置完成后,重启Claude Desktop。然后输入:
“使用crawl4ai搜索'Python异步编程'的最新文章,并用read_url读取第一篇文章的fit_markdown格式内容。”
如果配置成功,AI应该会调用相应的工具并返回搜索结果和精简后的文章内容。
五、使用示例
配置完成后,你可以用自然语言让AI执行搜索和内容提取。以下是一些典型的用法。
示例一:基础搜索
“用crawl4ai搜索关于'大语言模型量化'的资料,返回前5个结果。”
AI会调用search工具,默认使用DuckDuckGo搜索引擎,返回包含标题、链接和摘要的结果列表。
示例二:使用Google搜索并提取内容
“用crawl4ai的Google引擎搜索'2025年人工智能发展趋势',然后读取第一个结果,使用fit_markdown格式。”
AI会先执行Google搜索(需要你提前配置好API密钥),然后对最相关的结果调用read_url,输出精简后的核心内容。这在token紧张的场景下非常有用。
示例三:同时使用多个搜索引擎
“用crawl4ai同时使用DuckDuckGo和Google搜索'最佳Python代码格式化工具',比较两个引擎的前三个结果。”
设置engine: "all",AI会并行调用两个搜索引擎,返回合并后的结果列表。你可以让AI进一步分析两个引擎结果的异同。
示例四:带引用的内容提取
“读取https://example.com/whitepaper,用markdown_with_citations格式,然后总结核心观点,并在总结中标注信息来源。”
markdown_with_citations模式会在内容中插入引用标记,如[1],并在文末列出所有来源链接。AI在总结时可以引用这些标记,告诉用户某个观点来自哪个具体段落。
示例五:批量处理和对比
AI可以组合使用search和read_url。例如:
“搜索'React 19新特性',然后读取前三个结果,用fit_markdown格式分别提取,最后列出一个对比表格,展示每个来源提到的主要新特性。”
这展示了代理(Agent)的能力:自主规划步骤,逐步执行,最后综合信息形成答案。
示例六:本地内容配合搜索
你可以先让AI执行搜索,然后基于本地知识进行判断。例如:
“搜索'2024年最佳开源数据库',读取前两个推荐的结果,然后对照我本地项目文档'requirements.md',告诉我哪个数据库更符合我们的技术栈要求。”
六、常见问题
搜索返回空结果或结果很少
这通常是因为网络问题或者DuckDuckGo的临时限制。尝试以下方法:
- 检查你的网络是否可以正常访问外网,DuckDuckGo在国内可能需要代理。
- 稍等片刻再重试,可能是临时的速率限制。
- 如果问题持续,尝试切换到Google搜索引擎(需要配置API密钥)。
read_url返回的内容为空或不完整
某些网站可能有反爬机制,或者内容是动态加载的。Crawl4AI使用Playwright渲染,理论上能处理大多数SPA。但极少数网站可能需要额外的等待时间或登录状态。你可以尝试:
- 检查URL是否正确且可公开访问。
- 确认Playwright浏览器已正确安装(运行
playwright install)。 - 对于特别复杂的页面,可以尝试用
raw_markdown格式看看是否至少返回了部分内容。
fit_markdown模式去掉了太多内容
智能过滤算法有时可能会误删一些你认为重要的内容。可以尝试以下调整:
- 使用
markdown_with_citations或raw_markdown格式获取完整内容。 - 查看项目的源代码,调整
fit_markdown中的最小词数阈值(默认10词),或者修改过滤规则的白名单。
Google搜索无法使用
Google搜索需要额外的配置:
- 在Google Cloud Console中启用Custom Search API,获取API密钥。
- 创建自定义搜索引擎(CSE),获取CSE ID。
- 在项目根目录创建
config.json文件,填入:
{
"google": {
"api_key": "你的API密钥",
"cse_id": "你的CSE ID"
}
}注意,免费版的Custom Search API每天有100次查询的限制。
在Claude Desktop中无法调用工具
首先检查配置文件路径是否正确,特别是cwd和PYTHONPATH。其次,确认Python版本是3.9以上。最后,查看Claude Desktop的日志(通常在~/Library/Logs/Claude或%APPDATA%\Claude\logs)以获取详细的错误信息。
Python依赖安装失败
建议使用虚拟环境。如果某个库安装失败,可以尝试单独安装:pip install crawl4ai或pip install duckduckgo-search。另外,确保你的pip版本是最新的:pip install --upgrade pip。
七、总结
crawl4ai-mcp-server是一个务实且高效的工具。它没有试图做所有人的所有事,而是专注于一个明确的目标:帮助LLM更好地获取网络信息,同时节省token。对于一个由AI辅助开发的项目来说,它的完成度相当不错。
最让我欣赏的是它的内容优化策略。在AI应用开发中,上下文窗口和token成本是实实在在的约束。fit_markdown模式通过智能过滤,在保持信息完整性的前提下大幅度压缩内容体积,这是很多通用抓取工具所不具备的。同时,markdown_with_citations模式又为需要溯源的研究场景提供了支持。这种根据不同需求提供不同“精度”的设计,体现了对LLM工作流的深入理解。
项目的另一个优点是低门槛。DuckDuckGo搜索完全免费,不需要任何API密钥,这让任何人都可以立刻开始使用。Python生态的安装方式也相对简单,再加上Docker支持,覆盖了不同技术背景的用户。
当然,项目也有一些可以改进的地方。目前的过滤规则是基于英文内容的(最小词数10),对于中文或其他语言的网站,可能需要调整。另外,如果能够提供更细粒度的内容选择(比如只提取表格、只提取列表),会让工具更灵活。但考虑到这个项目还很年轻(139 stars),这些问题应该会随着社区的贡献而逐步改善。
如果你是AI应用开发者,或者你经常需要让AI从网上获取信息,crawl4ai-mcp-server值得你花几分钟安装试用。它的智能内容提取功能,可能会让你在处理网络信息时感受到明显的效率提升。
The MIT license is great. I integrated this into my open-source RAG pipeline.
The 15 commits show a focused, if small, project. It does one thing well.
I wish there was a way to batch read multiple URLs at once without calling the tool repeatedly.
The last commit was in January 2026. Still active, which is good.
The async design means I can submit search and read requests in parallel. Very efficient.