你是否觉得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
开源状态公开状态
LanguagesPython 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/activate

Windows:

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_citationsraw_markdown格式获取完整内容。
  • 查看项目的源代码,调整fit_markdown中的最小词数阈值(默认10词),或者修改过滤规则的白名单。

Google搜索无法使用

Google搜索需要额外的配置:

  1. 在Google Cloud Console中启用Custom Search API,获取API密钥。
  2. 创建自定义搜索引擎(CSE),获取CSE ID。
  3. 在项目根目录创建config.json文件,填入:
{
    "google": {
        "api_key": "你的API密钥",
        "cse_id": "你的CSE ID"
    }
}

注意,免费版的Custom Search API每天有100次查询的限制。

在Claude Desktop中无法调用工具

首先检查配置文件路径是否正确,特别是cwdPYTHONPATH。其次,确认Python版本是3.9以上。最后,查看Claude Desktop的日志(通常在~/Library/Logs/Claude%APPDATA%\Claude\logs)以获取详细的错误信息。

Python依赖安装失败

建议使用虚拟环境。如果某个库安装失败,可以尝试单独安装:pip install crawl4aipip 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值得你花几分钟安装试用。它的智能内容提取功能,可能会让你在处理网络信息时感受到明显的效率提升。

标签: 内容抓取

已有 33 条评论

    1. StephenPerez StephenPerez

      I'm using this with Cline in VS Code. The integration was seamless.

    2. MelissaRoberts MelissaRoberts

      For a school project, this helped my AI agent research historical events efficiently.

    3. AndrewCollins AndrewCollins

      The combination of search and smart reading is all I need. No other tools required.