SuperAPI AI 工具集

webcrawl-mcp

webcrawl-mcp 是一个轻量级 MCP 服务器,为 Claude Code 或其他 MCP 客户端提供联网抓取、搜索、站点映射与爬取能力。它基于免费开源库构建,默认使用 trafilatura 在本地完成网页正文提取,仅在内容质量过差或遇到反爬响应时,才可选地回退到 Firecrawl(需自备 API Key)。抓取结果会通过 source 字段标明内容来源路径。项目要求 Python 3.12+,可按源码安装,也可通过 uvx 临时运行,并支持 Claude Code、Claude Desktop、Cursor、Cline、Continue、Zed 等 MCP 客户端。

访问官网

工具介绍

webcrawl-mcp 是一个轻量级 MCP(Model Context Protocol)服务器,旨在让 Claude Code 或任何兼容 MCP 的客户端具备抓取(scrape)、搜索(search)、映射(map)和爬取(crawl)网页的能力。它完全建立在免费开源的库之上,Firecrawl 仅作为可选回退方案,用于处理 JavaScript 渲染较重的站点(需要自备 API Key)。

设计思路

大多数网页抓取实际上并不需要无头浏览器。trafilatura 能在本地处理约 80% 的常见场景(文章、文档、博客),速度更快,并且把外部 API 的使用降到最低。该服务器把简单内容交给本地提取,只有在内容质量确实很差时才回退到 Firecrawl。

来源标识

抓取内容上的 source 字段取值可能为 static_http、static_http_retry、firecrawl_transport_fallback 或 firecrawl_quality_fallback,用于说明内容由哪条路径产生。

环境要求

需要 Python 3.12 及以上版本。

快速冒烟测试

运行后应打印 “Webcrawl MCP server running”,然后用 Ctrl-C 正常退出。

从源码安装(开发用)

通过源码检出方式进行安装和开发。

配置 MCP 客户端

在项目根目录创建 .mcp.json(或合并进 ~/.claude/settings.json)。该方式使用 uvx 在临时环境中运行包,无需手动安装。如果 uvx 不可用,可用 pip install webcrawl-mcp 安装,并把 "command" 设为 "webcrawl-mcp" 且不带参数。

若使用源码检出(开发),把 command 指向虚拟环境中的 Python,并使用 "args": ["-m", "webcrawl_mcp"]。

然后在 Claude Code 会话中运行 /mcp,应该能看到 webcrawl 被列出,并带有四个工具。

Claude Desktop 使用同样的 JSON 结构,放入 claude_desktop_config.json(各操作系统路径参见 Anthropic 文档),编辑后重启 Claude Desktop。

其他 MCP 客户端(Cursor、Cline、Continue、Zed 等)使用标准化的 command / args / env 结构,具体放置位置请查阅对应客户端的 MCP 文档。

验证是否工作

可以要求你的 agent 执行类似操作: 使用 webcrawl_scrape 工具抓取 https://docs.python.org/3/library/asyncio.html 并总结第一节内容。 你应在客户端 UI 中看到工具调用,随后看到基于实时页面内容的摘要。若无反应,参见排障部分。

环境变量

请在 MCP 配置的 env 块中设置,而不要在 shell 中设置——MCP 服务器运行在客户端之下,而不是你的终端中。

回退行为

抓取器会区分提取质量失败与传输失败,并通过 source 字段报告内容由哪条路径产生。

提取质量路径(默认): trafilatura 从 HTML 中提取正文 → source: static_http。 若失败或返回少于 200 字符,markdownify 转换原始 HTML。 若结果仍然质量不佳且已设置 FIRECRAWL_API_KEY,则作为最后手段使用 Firecrawl → source: firecrawl_quality_fallback。

传输路径(需主动开启): 若请求返回 403、429 或 503(典型的反爬响应): 在 POLITE_MODE=true(默认)下,带 Retry-After 头的 429 会获得一次有界重试原始请求 → 成功时 source: static_http_retry。 在 FALLBACK_ON_TRANSPORT_ERROR=true 且已设置 FIRECRAWL_API_KEY 时,请求会改走 Firecrawl 而不是抛错 → source: firecrawl_transport_fallback。 否则,传输错误会抛给调用方(当前行为)。

没有 Firecrawl Key 时,该工具完全自包含且免费;没有 Key 时 FALLBACK_ON_TRANSPORT_ERROR 不产生效果。

排障

客户端在 MCP 服务器中未列出 webcrawl:几乎总是命令路径问题,必须是虚拟环境中 Python 二进制的绝对路径,而不是简单的 python。可在终端测试:你配置的路径 -m webcrawl_mcp 应打印 Webcrawl MCP server running。 ModuleNotFoundError: webcrawl_mcp:可能是 pip install -e . 与 command 不在同一个虚拟环境中执行,或 PYTHONPATH 缺失/错误。请确认两者指向同一份检出。 Python 版本不匹配:需要 3.12+,虚拟环境内 python --version 应报告 ≥ 3.12,否则用更新版本 Python 重建虚拟环境。 抓取返回文本很少:部分站点使用 JavaScript 渲染,无法静态提取。可设置 FIRECRAWL_API_KEY 启用回退路径,或接受该工具不适用于该特定站点。 搜索慢或被限流:DuckDuckGo 对突发查询会限流。请拉长搜索间隔,或减少 num_results。

负责任使用

该工具用于为研究、编码辅助及类似合法用途获取公开网页内容。你需要负责:遵守目标站点的服务条款和 robots.txt;不要给服务器造成过载(内置的按域名限流有帮助,但不要绕过它);遵守你所在司法辖区关于自动访问和数据使用的适用法律。

许可证

MIT —— 见 LICENSE。

致谢

构建于 trafilatura、httpx、beautifulsoup4、markdownify、ddgs 和 fastmcp 之上。Firecrawl 集成使用公开的 Firecrawl API(无关联关系)。