README
🚀 mcp-server-webcrawl
mcp-server-webcrawl 是一款用于网页爬虫数据的高级搜索与检索工具。它能让你的 AI 客户端按照你的指令或自主地对网页内容进行过滤和分析。该服务器具备全文搜索接口,支持布尔逻辑搜索,还能根据类型、HTTP 状态等对资源进行过滤。
🚀 快速开始
mcp-server-webcrawl 是免费且开源的,使用前需安装 Claude Desktop 和 Python(版本 >=3.10)。可通过以下命令在命令行进行安装:
pip install mcp-server-webcrawl
若需查看 MCP 服务器的详细设置步骤,请参考 设置指南。
✨ 主要特性
- 支持 Claude Desktop
- 兼容多种网页爬虫
- 可根据类型、状态等进行过滤
- 支持布尔搜索
- 支持 Markdown 和代码片段
- 可创建自己的网站知识库
📦 安装指南
在命令行中使用以下命令进行安装:
pip install mcp-server-webcrawl
💻 使用示例
基础用法
在安装完成后,你可以按照以下步骤使用 mcp-server-webcrawl 进行网页爬虫数据的搜索和分析。
高级用法
你可以使用预定义的提示例程来执行特定的任务,如 SEO 审计、404 审计等。以下是一些可用的提示例程:
| 提示例程 | 下载链接 | 类别 | 描述 |
|--------|----------|----------|-------------|
|🔍 SEO 审计 | auditseo.md | 审计 | 技术 SEO(搜索引擎优化)分析。涵盖基础内容,可深入分析。 |
|🔗 404 审计 | audit404.md | 审计 | 检测断链并进行模式分析。不仅能发现问题,还能提供修复建议。 |
|⚡ 性能审计 | auditperf.md | 审计 | 网站速度和优化分析。 |
|📁 文件审计 | auditfiles.md | 审计 | 文件组织和资产分析。了解网站构成。 |
|🌐 Gopher 接口 | gopher.md | 接口 | 受旧版 Gopher 客户端启发的老式搜索接口。 |
|⚙️ 搜索测试 | testsearch.md | 自测 | 一系列测试,用于检查搜索查询解析器和后续 FTS5 转换中的布尔逻辑一致性。 |
如果你想跳过网站选择步骤(减少一次查询),可粘贴 Markdown 内容,并在同一请求中输入 “run pasted for [网站名称或 URL]”,系统会自动处理。若粘贴时未提供额外上下文,系统会提示你从已爬取的网站列表中进行选择。
📚 详细文档
支持的爬虫/格式
mcp-server-webcrawl 支持多种爬虫和格式,具体如下: | 爬虫/格式 | 描述 | 平台 | 设置指南 | |----------------|-------------|-----------|-------------| | WARC | 标准网页存档格式 | 因客户端而异 | 设置指南 | | wget | CLI 网站镜像工具 | macOS/Linux | 设置指南 | | InterroBot | GUI 爬虫和分析器 | macOS/Windows | 设置指南 | | Katana | CLI 安全导向爬虫 | macOS/Windows/Linux | 设置指南 | | SiteOne | GUI 爬虫和分析器 | macOS/Windows/Linux | 设置指南 |
布尔搜索语法
查询引擎支持特定字段(field: value)搜索和复杂的布尔表达式。全文搜索结合了 URL、内容和头部字段。
以下是一些示例查询:
| 查询示例 | 描述 |
|--------------|-------------|
| privacy | 全文单关键字匹配 |
| "privacy policy" | 全文精确短语匹配 |
| boundar* | 全文通配符匹配以 boundar 开头的结果(如 boundary, boundaries) |
| id: 12345 | id 字段按 ID 匹配特定资源 |
| url: example.com/somedir | url 字段匹配 URL 包含 example.com/somedir 的结果 |
| type: html | type 字段仅匹配 HTML 页面 |
| status: 200 | status 字段匹配特定 HTTP 状态码(等于 200) |
| status: >=400 | status 字段匹配特定 HTTP 状态码(大于或等于 400) |
| content: h1 | content 字段匹配内容(HTTP 响应体,通常但不总是 HTML) |
| headers: text/xml | headers 字段匹配 HTTP 响应头部 |
| privacy AND policy | 全文同时匹配两个关键字 |
| privacy OR policy | 全文匹配任意一个关键字 |
| policy NOT privacy | 全文匹配不包含 privacy 的 policy |
| (login OR signin) AND form | 全文匹配包含 login 或 signin 且包含 form 的结果 |
| type: html AND status: 200 | 全文仅匹配 HTTP 状态为成功的 HTML 页面 |
字段搜索定义
字段搜索可提高搜索精度,允许你指定搜索索引的哪些列进行过滤。你可以将查询限制在特定属性上,如 URL、头部或内容主体,而不是搜索整个内容。这种方法在查找爬取数据中的特定属性或模式时可提高效率。 | 字段 | 描述 | |-------|-------------| | id | 数据库 ID | | url | 资源 URL | | type | 类型枚举列表(见类型表) | | size | 文件大小(字节) | | status | HTTP 响应码 | | headers | HTTP 响应头部 | | content | HTTP 主体 — HTML、CSS、JS 等 |
字段内容
部分字段可独立请求返回结果,而核心字段始终包含在结果中。使用 headers 和 content 字段会快速消耗令牌。请谨慎使用,或使用 extras 参数来处理更多结果以适应上下文窗口。字段是顶级参数,与查询中的任何字段搜索无关。 | 字段 | 描述 | |-------|-------------| | id | 始终可用 | | url | 始终可用 | | type | 始终可用 | | status | 始终可用 | | created | 可请求 | | modified | 可请求 | | size | 可请求 | | headers | 可请求 | | content | 可请求 |
内容类型
爬取的数据包含除 HTML 页面之外的资源类型。type: 字段搜索允许按广泛的内容类型组进行过滤,在过滤图像时无需复杂的扩展名查询,特别有用。例如,你可以搜索 type: html NOT content: login 以查找不包含 “login” 的页面,或 type: img 以分析图像资源。以下是搜索系统支持的所有内容类型:
| 类型 | 描述 |
|------|-------------|
| html | 网页 |
| iframe | 内联框架 |
| img | 网页图像 |
| audio | 网页音频文件 |
| video | 网页视频文件 |
| font | 网页字体文件 |
| style | CSS 样式表 |
| script | JavaScript 文件 |
| rss | RSS 聚合提要 |
| text | 纯文本内容 |
| pdf | PDF 文件 |
| doc | MS Word 文档 |
| other | 未分类 |
额外参数(Extras)
extras 参数提供了额外的处理选项,可转换 HTTP 数据(Markdown、代码片段、正则表达式、XPath),或将 LLM 连接到外部数据(缩略图)。这些选项可根据需要组合使用,以实现所需的结果格式。
| 额外参数 | 描述 |
|-------|-------------|
| thumbnails | 生成 base64 编码的图像,供 AI 模型查看和分析。在保持令牌输出最少的情况下,支持图像描述、内容分析和视觉理解。适用于图像,可在查询中使用 type: img 进行过滤。不支持 SVG。 |
| markdown | 将 HTML 内容字段转换为简洁的 Markdown,减少令牌使用,提高 LLM 的可读性。适用于 HTML,可在查询中使用 type: html 进行过滤。 |
| regex | 从爬取的文件(如 HTML、CSS、JavaScript 等)中提取正则表达式匹配项。对于 HTML 来说,不如 XPath 精确,但支持任何文本文件作为数据源。可使用 extrasRegex 参数请求一个或多个正则表达式模式。 |
| snippets | 将全文查询与内容中的上下文关键字使用情况进行匹配。在不请求 content 字段(或 markdown 额外参数)的情况下使用时,可在不下载完整页面内容的情况下有效优化搜索。也适用于将旧版高亮结果渲染为列表,就像 1999 年的 Google 搜索一样。适用于 HTML、CSS、JS 或任何基于文本的爬取文件。 |
| xpath | 提取 XPath 选择器数据,用于抓取 HTML 内容。使用 XPath 的 text() 选择器仅提取文本,元素选择器返回外部 HTML。仅支持 type: html,其他类型将被忽略。可使用 extrasXpath 参数请求一个或多个 XPath 选择器(如 //h1, count(//h1) 等)。 |
额外参数提供了一种高效生成 HTTP 内容响应的方法。Markdown 生成的字节数约为源 HTML 的 1/3,代码片段每个结果通常约 500 字节,XPath 可根据需要进行具体或广泛的设置。请求越聚焦,能在 LLM 会话中处理的结果就越多。
当然,理想情况下,LLM 会为你处理这些。如果你发现 LLM 倾向于使用 “content” 字段(完整 HTML),在聊天中提示使用 extras 功能来管理令牌预算即可。
微信扫一扫