关于 crawl4ai-mcp
crawl4ai-mcp 使用 Crawl4AI 为 AI 系统提供网页抓取和爬取能力,包含 4 个工具、2 个资源和 3 个提示词。它支持 stdio 与 Streamable HTTP,并由服务生命周期管理无头 Chromium 浏览器。
主要功能
- 01抓取网页并提取内容
- 02支持列表与深度爬取
- 03提供会话关闭和制品获取
- 04注册配置与版本资源
- 05提供页面总结等提示词
- 06支持 stdio 与 Streamable HTTP
适用场景
- 01抓取网页并转换为 Markdown 或文本
- 02递归遍历网站页面
- 03总结、提取或比较网页内容
MCP 相关
该 MCP 服务向客户端提供网页抓取与爬取工具、配置和版本资源,以及用于总结、提取和比较页面的提示词。支持 stdio 和 Streamable HTTP 传输。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
概述
MCP-Crawl4AI 是一个 模型上下文协议 服务,可让 AI 系统访问实时网络。它基于 FastMCP v3 和 Crawl4AI 构建,通过标准化的 MCP 接口提供 4 个工具、2 个资源和 3 个提示词,并由一个生命周期托管的无头 Chromium 浏览器提供支持。
运行时依赖仅有 2 个 — fastmcp 和 crawl4ai。
提示
主要功能
- 完全符合 MCP 规范,通过 FastMCP v3 实现,并支持工具注解(
readOnlyHint、destructiveHint等) - 4 个专用工具,围绕标准的抓取/爬取以及会话生命周期/制品展开
- 3 个提示词,用于常见的大模型工作流(总结、提取架构、比较页面)
- 2 个资源,提供服务配置和版本信息
- 无头 Chromium 作为生命周期单例管理(启动一次,到处复用)
- 多种传输方式 — stdio(默认)和 Streamable HTTP
- 针对大模型优化的输出 — Markdown、清理后的 HTML、原始 HTML 或纯文本
- 标准选项组,涵盖提取、运行时、诊断、会话、渲染和遍历
- 列表和深度遍历,统一使用一个
crawl契约 - 感知会话的工作流,提供显式关闭会话和获取制品的工具
- 自动设置浏览器 — 检测缺失的 Playwright 浏览器并自动安装
安装
pip
pip install mcp-crawl4ai
mcp-crawl4ai --setup # one-time: installs Playwright browsers
uv(推荐)
uv add mcp-crawl4ai
mcp-crawl4ai --setup # one-time: installs Playwright browsers
Docker
docker build -t mcp-crawl4ai .
docker run -p 8000:8000 mcp-crawl4ai
Docker 镜像已包含 Playwright 浏览器 — 无需单独设置。
开发
git clone https://github.com/wyattowalsh/mcp-crawl4ai.git
cd mcp-crawl4ai
uv sync --group dev
mcp-crawl4ai --setup
说明
服务会在首次启动时自动检测缺失的 Playwright 浏览器,并尝试自动安装。你也可以随时手动运行
mcp-crawl4ai --setup或crawl4ai-setup。
快速开始
stdio(默认 — 适用于 Claude Desktop、Cursor 等)
mcp-crawl4ai
HTTP 传输
mcp-crawl4ai --transport http --port 8000
说明
HTTP 默认绑定到
127.0.0.1(仅限私有/本地访问);如需对外开放,请显式设置--host,并使用反向代理处理 TLS/身份验证。
Claude Desktop 配置
将以下内容添加到 Claude Desktop MCP 设置(claude_desktop_config.json):
{
"mcpServers": {
"crawl4ai": {
"command": "mcp-crawl4ai",
"args": ["--transport", "stdio"]
}
}
}
Claude Code 配置
claude mcp add crawl4ai -- mcp-crawl4ai --transport stdio
MCP Inspector
npx @modelcontextprotocol/inspector uv --directory . run mcp-crawl4ai
工具
标准接口现提供 4 个工具:
scrape
使用单一标准封装响应抓取一个 URL 或有数量限制的 URL 列表(最多 20 个)。
- 输入:
targets(str | list[str])以及可选的分组options - 支持提取(
schema、extraction_mode)、运行时控制、诊断、会话设置、渲染设置和制品捕获 - 返回包含
schema_version、tool、ok、data/items、meta、warnings、error的标准 JSON 封装
crawl
使用标准遍历控制进行爬取。
- 对有数量限制的列表遍历,使用
options.traversal.mode="list" - 从单个种子递归进行 BFS/DFS 遍历,使用
options.traversal.mode="deep" - 与抓取共用选项组和相同的封装格式,并额外支持遍历选项
close_session
关闭通过 options.session.session_id 创建的有状态会话。
get_artifact
获取在 scrape 或 crawl 期间捕获的制品元数据/内容;需启用 options.conversion.capture_artifacts。
选择核心用法还是高级用法
- 核心路径(推荐): 使用
scrape/crawl并搭配最少选项(runtime、conversion.output_format、traversal.mode="list")。对于大多数 Agent 工作流,这样可以保持行为可预测且风险较低。 - 高级路径(显式启用): 仅在任务结果需要时,使用深度遍历、自定义调度器控制、JS 转换、提取架构和制品捕获。
- 安全预算和门控: 检查
config://server中的settings.defaults、settings.limits、settings.policies和settings.capabilities,了解当前启用的约束和功能门控,然后再启用高级选项。
资源
| URI | MIME 类型 | 描述 |
|---|---|---|
config://server | application/json | 当前服务配置:名称、版本、工具列表、浏览器配置 |
crawl4ai://version | application/json | 服务和依赖项的版本信息(server、crawl4ai、fastmcp) |
提示词
| 提示词 | 参数 | 描述 |
|---|---|---|
summarize_page | url、focus(默认值:"key points") | 抓取页面并根据指定重点总结其内容 |
build_extraction_schema | url、data_type | 检查页面并为 scrape 构建 CSS 提取架构 |
compare_pages | url1、url2 | 抓取两个页面并生成结构化比较结果 |
架构
graph TD
A[MCP Client] -->|stdio / HTTP| B[FastMCP v3]
B --> C[Tool Router]
C --> D[scrape]
C --> E[crawl]
C --> F[close_session]
C --> G[get_artifact]
D & E & F & G --> N[AsyncWebCrawler Singleton]
N --> O[Headless Chromium]
B --> P[Resources]
B --> Q[Prompts]
style B fill:#4B8BBE,color:#fff
style N fill:#FF6B35,color:#fff
style O fill:#2496ED,color:#fff
该服务采用单模块架构:
- FastMCP v3 负责 MCP 协议协商、传输、工具/资源/提示词注册和消息路由
- 由生命周期管理的
AsyncWebCrawler在服务启动时启动一个无头 Chromium 浏览器,并在所有工具调用间共享;服务退出时会正常关闭浏览器 - 4 个工具函数通过
@mcp.tool()装饰器定义规范接口 - 2 个资源函数通过
@mcp.resource()装饰器返回 JSON - 3 个提示词函数通过
@mcp.prompt装饰器返回结构化的Message列表
重要
没有中间管理器类或自定义 HTTP 客户端。服务将所有抓取工作委托给 crawl4ai 的
AsyncWebCrawler,并将所有协议处理委托给 FastMCP。运行时依赖项仅有 2 个。
配置
CLI 标志
| 标志 | 默认值 | 描述 |
|---|---|---|
--transport | stdio | 传输协议:stdio 或 http |
--host | 127.0.0.1 | 要绑定的主机(仅限 HTTP 传输) |
--port | 8000 | 要绑定的端口(仅限 HTTP 传输) |
--setup | — | 安装 Playwright 浏览器并退出 |
环境变量
无需设置环境变量。服务的所有配置均使用合理的默认值。如果设置了 Crawl4AI 自身的环境变量(例如 CRAWL4AI_VERBOSE),服务也会采用这些变量。
测试
# Run all tests
uv run pytest
# Coverage gate (>=90%)
uv run pytest --cov=mcp_crawl4ai --cov-report=term-missing
# Smoke tests only
uv run pytest -m smoke
# Unit tests only
uv run pytest -m unit
# Integration workflow tests
uv run pytest -m integration
# End-to-end workflow tests
uv run pytest -m e2e
# Manual live test (requires browser)
uv run python tests/manual/test_live.py
说明
所有自动化测试都使用
fastmcp.Client(mcp)在内存中运行,无需浏览器或网络。测试套件会模拟AsyncWebCrawler,以实现快速、确定性的执行。
贡献
有关设置开发环境、编码规范和拉取请求流程的详情,请参阅贡献指南。
许可证
本项目采用 MIT 许可证。详情请参阅 LICENSE 文件。
MCP-Crawl4AI — 连接 AI 与实时网络
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。