通过MCP为Claude Code接入网页抓取
教程介绍将Crawl4AI的托管MCP服务接入Claude Code,让智能体抓取网页、提取结构化数据并搜索内容,也提供自托管开源库路径。文中给出连接命令、调用示例及API密钥管理提醒。
AI 深度解读
Claude Code 能写代码、整理资料,但遇到依赖 JavaScript 渲染的网页,仍需要工具把页面内容取出来。Crawl4AI 的作用,就是把网页转成适合模型读取的 Markdown,再通过 MCP 交给编程代理使用。
原文给了三条接入路线:托管服务、本地 Python 库、自建 Docker 服务。真正需要选的,是你想省掉浏览器维护,还是保留抓取配置和运行环境的控制权。
让 Claude Code 读网页,托管接入最省步骤
托管方式需要在 crawl4ai.com 注册并验证邮箱,再用 API key 连接 MCP。MCP 可以理解成代理调用外部工具的统一接口,接好之后,就能用自然语言要求 Claude Code 抓页面、整理安装方案。
下面两步分别设置密钥、注册 HTTP MCP 服务:
export CRAWL4AI_KEY="your-key-here"
claude mcp add --transport http crawl4ai https://api.crawl4ai.com/mcp \
--header "Authorization: Bearer $CRAWL4AI_KEY"
要看的是 --header:请求通过 Bearer token 认证,费用计入这个 key,别把真实的 CRAWL4AI_KEY 放进共享脚本。
按原文引用的 README,免费档每月提供 1,000 credits,每分钟 10 次请求、同时 2 个请求,不需要银行卡;付费档从每月 $10 起,每分钟 120 次、同时 10 个请求。原文没解释不同接口怎样消耗 credits,不能直接把 1,000 credits 当成 1,000 个页面。
同一个 key 能调用 /scrape 把网页转成 Markdown,调用 /extract 提取 JSON,后者不需要用户另备 LLM key。另有 /search 网页搜索、仍处于 beta 的 /serp Google 结果页数据,以及实验性的 /answer 带来源回答。
原文称托管端会处理重度 JavaScript 页面和反爬阻拦,但没有给成功率或站点测试结果。这应当作为待验证的服务能力。
本地运行,适合先验证内容能不能用
不想使用托管 API,可以直接安装开源 Python 库。安装顺序是 pip install -U crawl4ai、crawl4ai-setup、crawl4ai-doctor,分别负责安装包、配置浏览器和检查环境。浏览器安装失败时,原文给出的补救命令是 python -m playwright install --with-deps chromium。
下面这段代码展示了最短的网页转 Markdown 流程:
import asyncio
from crawl4ai import AsyncWebCrawler
async def main():
async with AsyncWebCrawler() as crawler:
result = await crawler.arun(url="https://news.ycombinator.com")
print(result.markdown)
asyncio.run(main())
关键是 result.markdown:它才是后续交给模型或保存到检索库的内容。能返回 Markdown,不代表已经把正文筛干净。
原文还提到「fit Markdown」过滤器:PruningContentFilterLXML、BM25ContentFilter 和 LLMContentFilter,用于移除菜单、页脚等重复内容。但没有给出配置代码,也没比较三者的效果。
不写 Python 也能试:crwl https://news.ycombinator.com -o markdown 直接输出 Markdown;crwl https://docs.crawl4ai.com --deep-crawl bfs --max-pages 10 则按广度优先遍历,最多抓 10 页。
这些结果可以作为 RAG,也就是检索增强生成的输入。后续如何切分、建立索引、验证检索质量,原文没有展开。
多个工具共用时,再考虑 Docker 服务
Docker 路线适合把抓取能力变成一个可共享的服务。原文使用 unclecode/crawl4ai:latest,通过 -p 11235:11235 暴露端口,设置 --name crawl4ai、--shm-size=1g,并用 -e CRAWL4AI_API_TOKEN="$CRAWL4AI_API_TOKEN" 传入令牌。
令牌由 export CRAWL4AI_API_TOKEN="$(openssl rand -hex 32)" 生成。原文提醒,不配置 token 时,服务只响应容器内部的请求。启动大约等待 10 秒,再向本地 /md 发请求验证。
自建服务提供 /md、/html、/crawl、/screenshot、/pdf、/execute_js,还有 /dashboard 管理界面和 /playground 调试入口。
这里有个容易漏掉的区别:启动 Docker 服务,不等于已经完成 Claude Code 的 MCP 配置。 原文只说自建服务支持 MCP,具体连接步骤需要另查自建指南,文章本身没有提供。
托管 /scrape 和本地 /md 的验证示例,都使用 curl -s,携带 Authorization: Bearer 与 Content-Type: application/json,提交包含 url 的 JSON,再通过 jq -r .markdown 取正文。两条路线的地址、令牌变量和端点不同。
我的判断
这篇指南最有用的地方,是把运行方式分清楚了:Python 库进入自己的进程,代理和配置自己管;Docker 让多个工具共享服务;托管端省去浏览器运维,并且按原文说法,只有托管端提供 /search、/serp 和 /answer。
局限也很明确。作者提供的是接入示例,没有展示实测输出,也没有和普通 HTTP 抓取、直接使用 Playwright 做对照。因此,页面清洗是否更好、反爬处理是否可靠,都不能从这些示例直接下结论。
我的取舍是:如果只是固定静态页面,现有 HTTP 抓取流程可能已经够用;如果需要浏览器渲染、Markdown 输出和代理调用,Crawl4AI 值得做一次小规模验证。开源免费指软件使用,机器、浏览器进程和维护仍有成本。
能拿来做什么
- 给 Claude Code 配好托管 MCP 后,先选一个熟悉的文档页,让它整理安装选项,并人工核对版本、命令和遗漏内容。
- 准备给项目文档做 RAG 时,先保存少量
result.markdown,检查导航和页脚污染,再决定是否启用过滤器。 - 需要多个开发工具共用抓取能力时,再部署 Docker,并分别验证
/md和 MCP 连接;抓取范围应遵守目标站点条款与 robots 规则。