你是否觉得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. ChristopherJackson ChristopherJackson

      Compared to other MCP search servers, this one has the best content extraction.

    2. BarbaraWhite BarbaraWhite

      The read_url with JSON format would be a nice addition. But markdown is already good.

    3. DanielHarris DanielHarris

      I'm using this to monitor news about my company. The content filtering saves me hours.

    4. KarenMartin KarenMartin

      The response time for search is usually under 2 seconds. Very snappy.

    5. PaulRobinson PaulRobinson

      Can the tool extract content from behind a login? I guess not, since it can't log in.