网页爬取和搜索工具

gqy2025/crawl-mcp
Hosted
1 Stars 188 次浏览 qy 更新于 2026-08-23

基于 crawl4ai 和 FastMCP 的 MCP 服务器,提供网页爬取和搜索功能。它包括单页爬取、站点爬取、批量爬取以及文本、新闻、图片、图书和视频等多种搜索功能。还提供了可选的AI功能,如LLM后处理和图片分析。

MCP 服务配置

复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用

{
  "mcpServers": {
    "crawl-mcp": {
      "args": [
        "crawl-mcp"
      ],
      "command": "uvx"
    }
  }
}

可用工具 (8 个)

该服务在 MCP 协议中暴露的工具,AI 可按需调用

crawl_single 5 个参数 需填 1 项

爬取单个网页(自动降级:快速提取 → 浏览器渲染) 适用于已经知道一个明确 URL、需要提取该页面正文 Markdown 的场景。 默认先尝试轻量级快速提取(适合静态文章/文档页),失败、内容过短或检测到 SPA 骨架页时 自动切换到浏览器渲染。若要从一个入口页继续发现站内链接,请使用 crawl_site; 若已有多个明确 URL,请使用 crawl_batch。 参数组合: - 默认 prefer_fast=True:先快提取,必要时 fallback 到浏览器。 - prefer_fast=False:跳过快速提取,强制直接使用浏览器。 - enhanced=True:只影响浏览器路径的等待时间;不会单独跳过快速提取。 如需强制浏览器增强模式,请同时设置 prefer_fast=False, enhanced=True。

必填参数:url

crawl_site 4 个参数 需填 1 项

从入口页开始递归爬取站内页面(浏览器 + BFS 深度爬取) 适用于只有一个网站入口、希望沿站内链接抓取若干页面的场景。 与 crawl_batch 不同,本工具会从起始页发现链接;与 crawl_single/crawl_batch 不同, 本工具不走快速提取自动降级,也不支持 LLM 后处理。

必填参数:url

crawl_batch 6 个参数 需填 1 项

批量爬取多个网页(自动降级版) 适用于已经有一组明确 URL、需要并行抓取多个页面的场景。 默认对所有 URL 并行快速提取;只有失败、内容过短或 SPA 骨架页才进入浏览器 fallback。 若只有一个 URL,请使用 crawl_single;若只有入口页并希望发现站内链接,请使用 crawl_site。 参数组合: - prefer_fast=True:静态页走快速路径,失败项才走浏览器 fallback。 - prefer_fast=False:所有 URL 都直接走浏览器,不返回 fast/fallback 方法标记。 - min_content_length 只影响快速提取是否被认为足够完整。

必填参数:urls

search_text 5 个参数 需填 1 项

搜索网页内容(通用搜索) 适用于搜索技术文档、百科、博客、论坛、教程等网页内容。 只返回搜索结果摘要和链接,不抓取页面正文;如需正文,请对结果 URL 再调用 crawl_single/crawl_batch。

必填参数:query

search_news 5 个参数 需填 1 项

搜索新闻内容 适用于搜索突发新闻、时事、财经、体育等时效性内容。 只返回新闻搜索结果摘要和来源链接,不抓取全文;如需全文,请对结果 URL 再调用 crawl_single。

必填参数:query

search_books 3 个参数 需填 1 项

搜索图书 适用于查找技术书籍、学术资料、电子书等。

必填参数:query

search_videos 5 个参数 需填 1 项

搜索视频 适用于查找教程视频、演示视频、课程录像等。

必填参数:query

search_images 15 个参数 需填 1 项

搜索图片(支持下载和分析) === 基础搜索 === query: 搜索关键词 max_results: 搜索结果数量(默认:10) === 搜索过滤 === region: 区域代码 (wt-wt/us-en/cn-zh等) safesearch: 安全搜索 (on/moderate/off) timelimit: 时间限制 (d=天, w=周) size: 图片尺寸 (Small/Medium/Large/Wallpaper) color: 颜色过滤 (如 "Red", "Monochrome") type_image: 类型 (photo/clipart/gif/transparent/line) layout: 布局 (Square/Tall/Wide) === 下载选项 === download: 是否下载到本地(默认:False) download_count: 下载数量(默认:全部) output_dir: 下载目录(默认:./downloads/images) === 分析选项 === analyze: 是否使用图片模型分析(默认:False) analysis_prompt: 分析提示词 analyze_concurrent: 图片分析并发数(默认:3) === 返回格式 === { "success": True, "query": "butterfly", "search_results": { "count": 10, "results": [ { "title": "...", "image": "https://...", "thumbnail": "https://...", "width": 1920, "height": 1080, "source": "Bing" }, ... ] }, "download_results": { # 仅当 download=True 时 "total": 5, "downloaded": 5, "output_dir": "./downloads/images" }, "analysis_results": { # 仅当 analyze=True 时 "count": 5, "results": [ { "image": "...", "type": "local", "analysis": "这是一张..." } ] } }

必填参数:query

服务介绍

crawl_mcp

基于 crawl4ai 和 FastMCP 的 MCP 服务器,提供网页爬取和搜索功能。

PyPI Version
GitHub

功能

爬取工具

  • crawl_single - 单页爬取(自动降级:快速提取 → 浏览器渲染)
  • crawl_site - 递归爬取整个网站
  • crawl_batch - 批量爬取(自动降级,三阶段并行优化)

搜索工具

  • search_text - 通用网页搜索
  • search_news - 新闻内容搜索
  • search_images - 图片搜索(支持下载和 AI 分析)
  • search_books - 图书/电子书搜索
  • search_videos - 视频搜索(含时长、播放量等)

可选 AI 能力

  • LLM 后处理(实验性)- 对已爬取的 Markdown 进行 AI 摘要/结构化提取
  • 图片分析 - 使用视觉模型分析图片内容

核心定位:专业爬取工具。不配置 API Key 即可使用全部爬取和搜索功能。

性能

crawl_single / crawl_batch 内置自动降级:静态页走快速路径(~0.5s),SPA 自动 fallback 到浏览器。

场景 耗时 说明
crawl_single(静态博客) ~0.5s 快速提取路径
crawl_single(SPA 网站) ~0.6s + ~23s 快速检测失败 → 浏览器降级
crawl_batch 10 页(全静态) ~0.5s 并行快速提取
crawl_batch 10 页(混合) ~24s 静态页快速 + SPA 浏览器
search_text / news / books / videos ~1.5-2s ddgs 搜索

关键优势

  • 无需手动选择工具crawl_single 自动判断用快速提取还是浏览器
  • 静态页面享受亚秒级速度,SPA 自动降级保证完整性
  • 批量爬取智能分流:静态 URL 并行快提取,失败项才走浏览器
  • 搜索类工具全部基于 ddgs,秒级响应
  • 无需配置任何 API Key 即可使用核心功能

安装

pip install crawl-mcp

MCP 配置

基础配置(推荐,无需 API Key)

默认配置不需要任何 API Key。以下工具都可以直接使用:

  • crawl_single / crawl_batch / crawl_site
  • search_text / search_news / search_books / search_videos / search_images

只有两类可选能力需要 API Key:

  • 传入 llm_config 做 LLM 后处理
  • 调用 search_images 且设置 analyze=true 做图片分析
{
  "mcpServers": {
    "crawl-mcp": {
      "command": "uvx",
      "args": ["crawl-mcp"]
    }
  }
}

可选 AI 配置(仅在需要 LLM / 图片分析时)

如果需要 llm_config 后处理或图片分析,再增加 env

{
  "mcpServers": {
    "crawl-mcp": {
      "command": "uvx",
      "args": ["crawl-mcp"],
      "env": {
        "CRAWL_MCP_API_KEY": "your-api-key",
        "CRAWL_MCP_BASE_URL": "https://api.openai.com/v1",
        "CRAWL_MCP_TEXT_MODEL": "glm-4.7",
        "CRAWL_MCP_VISION_MODEL": "glm-4.6v"
      }
    }
  }
}

环境变量

变量 说明 必需 默认值
CRAWL_MCP_API_KEY LLM 后处理 / 图片分析使用的 API 密钥 -
CRAWL_MCP_BASE_URL OpenAI 兼容 API 基础 URL https://api.openai.com/v1
CRAWL_MCP_TEXT_MODEL LLM 后处理模型名称 glm-4.7
CRAWL_MCP_VISION_MODEL 图片分析模型名称 glm-4.6v

不配置 CRAWL_MCP_API_KEY 时,所有爬取和搜索工具仍可正常使用。传入 llm_config 时会跳过 LLM 后处理并返回 llm_skippedsearch_images(analyze=true) 会返回图片分析配置错误,但普通图片搜索和下载不受影响。

LLM 后处理(实验性功能)

crawl_singlecrawl_batch 支持可选的 llm_config 参数:

{
  "instruction": "提取产品信息",
  "schema": {
    "type": "object",
    "properties": {
      "name": {"type": "string"},
      "price": {"type": "number"}
    }
  }
}
  • instruction: 提取指令
  • schema: 可选的 JSON Schema(用于结构化数据提取)

前提条件:必须配置 CRAWL_MCP_API_KEY,否则会优雅跳过并在结果中返回 llm_skipped 提示。

工具用法

crawl_single - 单页爬取(自动降级)

已知一个明确 URL、需要提取页面正文 Markdown 时使用。内置「快速提取 → 浏览器渲染」自动降级策略:

{
  "name": "crawl_single",
  "arguments": {
    "url": "https://example.com/article"
  }
}

返回示例

{
  "success": true,
  "markdown": "# Article Title\n\nContent...",
  "title": "Article Title",
  "method": "fast_extract"
}

可选参数

  • enhanced: 浏览器增强模式,适用于 SPA/慢加载页面;只在浏览器路径生效
  • prefer_fast: 是否优先快速提取(默认 true,设 false 强制浏览器)
  • min_content_length: 快速提取最小内容长度阈值(默认 200 字符)
  • llm_config: LLM 后处理配置(实验性,需 API Key)

若要强制浏览器增强模式,请同时设置 prefer_fast=falseenhanced=true
fallback_reason 仅在快速提取失败后进入浏览器 fallback 时返回。

crawl_batch - 批量爬取多个明确 URL

已知一组 URL、需要并行抓取多个页面时使用。它会先并行快速提取所有 URL,只把失败、内容不足或 SPA 骨架页送入浏览器 fallback。

{
  "name": "crawl_batch",
  "arguments": {
    "urls": [
      "https://example.com/a",
      "https://example.com/b"
    ],
    "concurrent": 3
  }
}

可选参数

  • concurrent: 浏览器 fallback 并发数(默认 3)
  • prefer_fast: 是否优先快速提取(默认 true,设 false 时所有 URL 直接走浏览器)
  • min_content_length: 快速提取最小内容长度阈值(默认 200 字符)
  • llm_config: LLM 后处理配置(实验性,需 API Key)
  • llm_concurrent: LLM 后处理并发数(默认 3)

返回为结果列表。method 仅在 prefer_fast=true 的快速/降级路径中出现;fallback_reason 仅在单项发生浏览器 fallback 时出现。

crawl_site - 从入口页递归爬站

只有一个网站入口、希望沿站内链接发现并抓取若干页面时使用。它使用浏览器和 BFS 深度策略,不走快速提取,也不支持 LLM 后处理。

{
  "name": "crawl_site",
  "arguments": {
    "url": "https://example.com",
    "depth": 2,
    "pages": 10,
    "concurrent": 3
  }
}

参数

  • depth: 最大链接深度(默认 2)
  • pages: 最大页面数(默认 10)
  • concurrent: 浏览器爬取并发数(默认 3)

返回包含 successful_pagestotal_pagessuccess_rateresults

search_text - 通用网页搜索

适用于搜索技术文档、百科、博客、论坛、教程等网页内容。搜索工具只返回摘要和链接,不抓取页面正文;如需正文,请对结果 URL 再调用 crawl_singlecrawl_batch

{
  "name": "search_text",
  "arguments": {
    "query": "Python 快速排序算法",
    "region": "cn-zh",
    "max_results": 5
  }
}

返回格式

{
  "success": true,
  "query": "Python 快速排序算法",
  "count": 5,
  "results": [
    {"title": "...", "href": "https://...", "body": "..."}
  ]
}

search_images - 图片搜索

搜索图片,支持下载到本地和 AI 分析。

{
  "name": "search_images",
  "arguments": {
    "query": "cute cat",
    "max_results": 10,
    "download": true,
    "download_count": 5,
    "analyze": true,
    "analysis_prompt": "描述这张图片的内容和风格"
  }
}

返回格式

{
  "success": true,
  "query": "cute cat",
  "search_results": {"count": 10, "results": [...]},
  "download_results": {"total": 5, "downloaded": 5, ...},
  "analysis_results": {"count": 5, "results": [...]}
}

search_books / search_videos

图书搜索和视频搜索,用法与 search_text 类似。返回字段由 ddgs 上游决定,通常包含标题、链接、摘要或媒体信息,具体字段会随来源变化。

开发

uv sync
uv run pytest
uv run python -m crawl4ai_mcp.fastmcp_server --http

发布

当前准备发布版本:0.2.0

发布前检查:

uv run pytest tests/unit
uv run ruff check .
uv run ruff format --check .
uv build

创建并推送 tag 后会触发 GitHub Actions 发布到 PyPI:

git tag v0.2.0
git push origin v0.2.0

许可证

MIT License

相关 MCP 服务