crawl4ai-mcp-server
sadiuysal/crawl4ai-mcp-server加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:你给 Claude 或 GPT 布置了一个任务——"帮我调研竞品官网的所有产品特性"。传统的做法是:你手动复制粘贴几十个页面的内容,再粘贴给 AI 处理。费时费力,而且当竞品更新了页面,你的调研就过时了。
Crawl4AI MCP Server 正是来解决这个问题的。它是一个开源的 Model Context Protocol(MCP)服务器,能让 AI 代理自主发起网页抓取,无需人类在中间当"搬运工"。你可以把它理解为:给 AI 装上一双"眼睛",让它自己去网上看世界。
它对标的是 Firecrawl 的商业 API,但完全免费、可自托管,且代码完全开源(MIT License)。
要理解这个项目,先得了解两个技术背景。
Model Context Protocol(MCP) 是 Anthropic 在 2024 年推出的开放协议,旨在标准化 AI 代理(Agent)与外部工具之间的通信方式。类比来说,如果 AI 是一个大脑,MCP 就是让它能连接各种"手"(工具)的标准化接口。Cursor、Claude Code、OpenAI Agents SDK 都已支持 MCP。
Crawl4AI 则是这个项目所基于的核心爬虫引擎。它是一个专为 LLM 设计的网页抓取库,与传统爬虫不同,Crawl4AI 能够智能提取页面中的语义内容(Markdown 格式),去除广告、导航栏等噪音,输出 AI 友好的干净文本。更重要的是,它内置 Playwright 浏览器自动化,能够处理 JavaScript 渲染的动态页面。
crawl4ai-mcp-server 将这两者结合:用 MCP 协议包装 Crawl4AI 的能力,暴露为 4 个标准化工具(scrape、crawl、crawl_site、crawl_sitemap),让任何支持 MCP 的 AI 代理都能直接调用。
项目暴露了 4 个 MCP 工具,完整覆盖了从单页抓取到全站爬取的需求:
scrape — 单页抓取
传入一个 URL,返回页面的 Markdown 内容、页面内链接和元数据。适合快速获取单篇文章或产品页面的内容。超时时间可配置(默认 45 秒,最长 10 分钟),还支持传入 C4A-Script 脚本与页面进行交互(如点击、滚动)。
crawl — 深度爬取
从种子 URL 开始,按广度优先方式向下探索,可设置最大深度(1-4 层)和最大页面数(1-100 个)。支持正则表达式过滤 URL(包含/排除规则),以及自适应爬取模式——开启后,爬虫会自动评估已收集内容是否"足够",从而提前停止,避免无意义地爬完全站。
crawl_site — 全站爬取
这是大规模抓取的利器。最多可爬取 5000 个页面,支持深度 6 层,输出格式可选 Markdown、JSONL 或链接 CSV,遵循 robots.txt 规则,内置 500ms 礼貌延迟,避免对目标网站造成压力。所有结果持久化到本地文件系统。
crawl_sitemap — Sitemap 驱动爬取
直接解析 sitemap.xml,按站点地图结构爬取,比全站爬取更精准、更高效。
项目代码位于 crawler_agent/ 目录,各模块职责明确:
| 模块 | 作用 |
|---|---|
mcp_server.py | 核心 MCP 服务器,基于 mcp 库实现 stdio 通信,定义 4 个工具的输入输出 schema(Pydantic 模型验证) |
safety.py | 安全守卫,拦截私有 IP、localhost、file:// 等危险 URL |
adaptive_strategy.py | 自适应爬取策略,内容量超过阈值时自动停止 |
persistence.py | 持久化层,将抓取结果写入 manifest.json、Markdown 文件和 JSONL 日志 |
sitemap_utils.py | Sitemap 解析工具 |
smoke_client.py | 冒烟测试客户端 |
agents_example.py | OpenAI Agents SDK 集成示例 |
服务器架构采用经典的 stdio 通信模式:MCP 服务器通过标准输入/输出与 AI 代理进程通信。这种方式简单可靠,特别适合容器化部署(docker run -i),也是 Claude Code 和 Cursor 推荐的方式。
这是该项目最值得称道的地方——安装体验极其顺滑。
方式一(推荐):使用预构建镜像
docker pull uysalsadi/crawl4ai-mcp-server:latest
配置好 .mcp.json 后,Cursor 和 Claude Code 会自动识别并加载工具,全过程无需手动配置 Python 环境。
方式二:docker-compose 编排
克隆仓库后,docker-compose up crawl4ai-mcp 一键启动,同时暴露了 dev(开发)和 test(测试)两个 profile,适合需要调试的场景。
方式三:手动安装
pip install -r requirements.txt
python -m playwright install --with-deps chromium
手动安装多了 Playwright 浏览器依赖这一步,但文档清晰,没有坑。
所有部署方式都支持将抓取结果持久化到宿主机目录(./crawls:/app/crawls 卷挂载),数据不会因容器重启而丢失。
项目最重要的使用场景是与 AI 代理深度集成。README 详细演示了与 OpenAI Agents SDK、Cursor 和 Claude Code 的集成方式。
以 OpenAI Agents SDK 为例,只需几行代码就能创建一个具备网页抓取能力的 AI Agent:
from agents import Agent, Runner
from agents.mcp.server import MCPServerStdio
async with MCPServerStdio(
params={"command": "python", "args": ["-m", "crawler_agent.mcp_server"]},
cache_tools_list=True
) as server:
agent = Agent(
name="Research Assistant",
instructions="使用 scrape 和 crawl 工具研究主题",
mcp_servers=[server]
)
result = await Runner.run(agent, "研究最新 AI 安全论文")
这意味着任何熟悉 OpenAI Agents SDK 的开发者都能在 5 分钟内为自己的 Agent 赋能网页抓取能力。
尽管项目设计优秀,仍有几处值得注意:
无 Web UI:项目完全是命令行/API 驱动,没有图形界面。对于非技术用户,配置 MCP 工具仍需要编辑 JSON 配置文件,有一定门槛。Firecrawl 等商业产品在这点上更友好。
Playwright 依赖较重:Docker 镜像超过 2GB(因为内置 Chromium 浏览器),在中国大陆网络环境下 docker pull 可能较慢。手动安装时 Playwright 浏览器下载也容易失败。
自适应爬取策略尚浅:当前的自适应停止策略仅基于字符数量阈值(5000 字),缺乏 LLM 级别的语义判断。如果页面内容高度重复(如论坛帖子列表),可能抓取过多相似页面。
文档一致性风险:项目同时维护 README.md、CLAUDE.md 和 .cursorrules 三套文档,贡献者需要确保三者同步,增加维护负担。
Crawl4AI MCP Server 的出现,折射出一个更大的趋势:AI 代理正在从"被动回答问题"向"主动获取信息"进化。
过去一年,Firecrawl、Bright Data、BrowseComp 等商业服务相继推出面向 AI 的网页抓取 API,市场需求旺盛。但商业方案存在成本、数据主权和定制化限制。该项目用完全开源的方式证明了:构建一个生产级的 AI 网页抓取工具,在技术上并不困难。
同时,MCP 协议的生态正在快速扩张。crawl4ai-mcp-server 兼容 Claude Code、Cursor 和 OpenAI Agents SDK,意味着它可以成为多种 AI 工作流的通用数据源入口。
从 GitHub 趋势看,该项目在 MCP 相关生态中增长较快(2025 年中发布,2 个月内 stars 突破 100),社区反馈积极,issues 响应及时。对于需要为 AI Agent 构建"实时信息获取"能力的团队,这是一个值得关注的开源方案。