返回市场
网页抓取MCP

网页抓取MCP

作者:MaitreyaM23 星标更新:2025-08-12

项目介绍

Crawl4AI Web Scraper MCP Server

License: MIT <!-- 可选:添加许可证 -->

该项目提供了一个使用**crawl4ai**库进行网络爬取和智能内容提取任务的MCP(模型上下文协议)服务器。它允许AI代理(如Claude或使用LangChain/LangGraph构建的代理)与网页交互,检索内容,搜索特定文本,并根据自然语言指令执行基于LLM的内容提取。

此服务器使用:

  • FastMCP: 创建MCP服务器端点。
  • crawl4ai: 核心网络爬取和提取逻辑。
  • dotenv: 通过.env文件管理API密钥。
  • (可选) Docker: 容器化部署,捆绑Python及其依赖项。

功能

  • 暴露用于网页交互的MCP工具:
    • scrape_url: 获取网页内容并以Markdown格式返回。
    • extract_text_by_query: 根据查询在页面上查找特定文本片段。
    • smart_extract: 使用配置的LLM(当前需要Google Gemini API密钥)根据自然语言指令提取结构化信息。
  • 通过环境变量(API密钥)进行配置。
  • 包含Docker配置(Dockerfile),便于独立部署。
  • 默认情况下通过端口8002上的服务器发送事件(SSE)进行通信。

暴露的MCP工具

scrape_url

爬取一个网页并返回其内容的Markdown格式。

参数:

  • url (str, 必需): 要爬取的网页URL。

返回值:

  • (str): 网页内容的Markdown格式,或错误消息。

extract_text_by_query

从包含特定搜索查询的网页中提取相关文本片段。返回找到的前5个匹配项。

参数:

  • url (str, 必需): 要在其内搜索的网页URL。
  • query (str, 必需): 要搜索的文本查询(不区分大小写)。
  • context_size (int, 可选): 在每个片段中包含匹配查询文本前后字符的数量。默认为300

返回值:

  • (str): 包含找到的文本片段的格式化字符串,或指示未找到匹配项的消息,或错误消息。

smart_extract

根据自然语言指令使用配置的LLM(当前需要Google Gemini API密钥)从网页中智能地提取特定信息。

参数:

  • url (str, 必需): 要分析和从中提取信息的网页URL。
  • instruction (str, 必需): 自然语言指令,指定要提取的信息(例如,“列出此页面上提到的所有演讲者”,“提取主要联系电子邮件地址”,“总结关键发现”)。

返回值:

  • (str): 提取的信息(通常根据指令格式化为JSON或结构化文本),或指示未找到相关信息的消息,或错误消息(包括如果缺少所需的API密钥)。

设置和运行

您可以选择本地运行此服务器或使用提供的Docker配置。

方案1:使用Docker运行(推荐用于部署)

该方法捆绑了Python和所有必要的库。您只需要在主机机器上安装Docker。

  1. 安装Docker: 下载并安装适用于您的操作系统的Docker Desktop。启动Docker Desktop。
  2. 克隆仓库:
    git clone https://github.com/your-username/your-repo-name.git # 替换为您的仓库URL
    cd your-repo-name
    
  3. 创建.env文件: 在项目根目录下创建一个名为.env的文件,并添加您的API密钥:
    # 对于smart_extract工具是必需的
    GOOGLE_API_KEY=your_google_ai_api_key_here
    
    # 可选,服务器检查但当前版本的工具未使用
    # OPENAI_API_KEY=your_openai_key_here
    # MISTRAL_API_KEY=your_mistral_key_here
    
  4. 构建Docker镜像:
    docker build -t crawl4ai-mcp-server .
    
  5. 运行容器: 启动服务器,使主机机器上的端口8002可用。它使用--env-file将本地.env文件中的API密钥安全地传递到容器的环境中。
    docker run -it --rm -p  8002:8002 --env-file .env crawl4ai-mcp-server
    
    • -it: 交互式运行。
    • --rm: 容器退出时删除。
    • -p 8002:8002: 将主机端口8002映射到容器端口8002。
    • --env-file .env: 从本地.env文件加载环境变量到容器中。对于API密钥至关重要。
    • crawl4ai-mcp-server: 您构建的镜像名称。
  6. 服务器正在运行: 日志将显示,表明服务器正在监听SSE(http://0.0.0.0:8002)。
  7. 连接客户端: 配置您的MCP客户端(例如,LangChain代理)连接到http://127.0.0.1:8002/sse,并设置transport: "sse"

方案2:本地运行

这需要在主机机器上安装Python和手动安装依赖项。

  1. 安装Python: 确保Python >= 3.9(如有必要,请检查crawl4ai需求,建议使用3.10+)。
  2. 克隆仓库:
    git clone https://github.com/your-username/your-repo-name.git # 替换为您的仓库URL
    cd your-repo-name
    
  3. 创建虚拟环境(推荐):
    python -m venv venv
    source venv/bin/activate # Linux/macOS
    # venv\Scripts\activate # Windows
    
    (或使用Conda: conda create --name crawl4ai-env python=3.11 -y && conda activate crawl4ai-env)
  4. 安装依赖项:
    pip install -r requirements.txt
    
  5. 创建.env文件: 在项目根目录下创建一个名为.env的文件,并添加您的API密钥(与Docker设置步骤3相同的内容)。
  6. 运行服务器:
    python your_server_script_name.py # 例如,python webcrawl_mcp_server.py
    
  7. 服务器正在运行: 它将在http://127.0.0.1:8002/sse上监听。
  8. 连接客户端: 配置您的MCP客户端连接到http://127.0.0.1:8002/sse

环境变量

服务器使用以下环境变量,通常从.env文件加载:

  • GOOGLE_API_KEY: 对于smart_extract工具的功能是必需的(使用Google Gemini)。从Google AI Studio获取。
  • OPENAI_API_KEY: 存在被检查但在此版本中任何工具均未使用。
  • MISTRAL_API_KEY: 存在被检查但在此版本中任何工具均未使用。

示例代理交互

# 使用之前设置的代理CLI示例

您: scrape_url https://example.com
代理: 正在思考...
[代理调用scrape_url工具]
代理: [example.com的Markdown内容]
------------------------------
您: 从https://en.wikipedia.org/wiki/Web_scraping使用查询"伦理考虑"提取文本
代理: 正在思考...
[代理调用extract_text_by_query工具]
代理: 在页面上找到了X个关于'伦理考虑'的匹配项。以下是相关的部分:
匹配1:
... 文本片段 ...
---
匹配2:
... 文本片段 ...
------------------------------
您: 在https://blog.google/technology/ai/google-gemini-ai/上使用smart_extract获取关于Gemini模型的主要要点
代理: 正在思考...
[代理使用Google API Key调用smart_extract工具]
代理: 成功根据您的指令提取了信息:
{
  "main_points": [
    "Gemini是Google最强大的AI模型家族(Ultra、Pro、Nano)。",
    "设计为多模态,理解文本、代码、音频、图像、视频。",
    "在各种基准测试中优于之前的模型。",
    "正在集成到Google产品中,如Bard和Pixel。"
  ]
}

文件

  • your_server_script_name.py: MCP服务器的主要Python脚本(例如,webcrawl_mcp_server.py)。
  • Dockerfile: 构建Docker容器镜像的说明。
  • requirements.txt: Python依赖项。
  • .env.example: (推荐)显示所需密钥的示例环境文件。不要提交实际的.env文件。
  • .gitignore: 指定Git有意忽略的文件(应包括.env)。
  • README.md: 此文件。

贡献

(如有需要,添加贡献指南)

许可证

(指定您的许可证,例如MIT许可证)