SERP数据抓取服务

一个通过Serper.dev获取Google SERP页面并通过单一工具暴露结构化数据的服务,专为需要跨多页获取结构化SERP数据的SEO代理设计。

  • by tbelfort
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 tbelfort/serper-mcp-server

使用说明

MCP SERP刮刀服务器

通过以下方式获取Google SERP页面的MCP服务器 Serper.dev 并通过一个单一的 serp_search 工具。它源自hello world模板,但专为需要跨多个页面的结构化SERP数据的SEO代理量身定制。

快速入门

  1. 安装依赖项并创建虚拟环境:
    uv sync
    
  2. 复制环境模板并提供您的Serper API密钥:
    cp .env.example .env
    # edit .env and set SERPER_API_KEY
    
  3. 通过stdio运行服务器(与Claude Inspector配合使用):
    scripts/dev-stdio.sh
    

HTTP传输仍然是一个存根;stdio是目前支持的路径。

工具概览

工具 说明
serp_search 呼叫Serper /search 对于1-10页,返回每页的 searchParameters 加上标准化 organic 结果。

输入参数(Pydantic模式):

  • q (str,必填) --搜索查询(1-200个字符)
  • pages (int,必填) --要获取的页数(1..10)
  • location (str,可选) --默认为 "United States"
  • gl (str,可选) --谷歌国家代码,默认为 "us"
  • hl (str,可选) --界面语言,默认为 "en"
  • autocorrect (bool,可选) --Serper的传递标志(默认 true)
  • tbs (str,可选) --Serper新鲜度过滤器,如 qdr:d

结构化响应:

{
  "query": "apple inc",
  "pages_requested": 2,
  "pages_returned": 2,
  "location": "United States",
  "gl": "us",
  "hl": "en",
  "engine": "google",
  "credits_total": 2,
  "results": [
    {
      "page": 1,
      "searchParameters": {"q": "apple inc", "page": 1, "location": "United States", "engine": "google", "gl": "us"},
      "organic": [
        {"title": "Apple", "link": "https://www.apple.com/", "snippet": "Explore ...", "position": 1},
        {"title": "Apple - Wikipedia", "link": "https://en.wikipedia.org/wiki/Apple_Inc.", "snippet": "Apple Inc. is ...", "position": 2}
      ]
    }
  ]
}

配置

环境变量(参见 .env.example):

  • MCP_SERVER_NAME, MCP_SERVER_VERSION
  • MCP_TRANSPORT (stdio 或 http)
  • HTTP_PORT
  • LOG_LEVEL
  • REQUEST_TIMEOUT_MS
  • MAX_CONCURRENCY
  • SERPER_API_KEY (必填)
  • INTER_PAGE_DELAY_MS (可选,默认 0)

SERPER_API_KEY 对每个Serper呼叫进行身份验证。 INTER_PAGE_DELAY_MS 如果需要遵守速率限制,可以在页面请求之间引入暂停。

环境优先级:由调用进程提供的环境变量(例如,Claude会话配置)始终获胜。服务器加载 .env 随着 override=False,所以 .env 仅填充缺失的变量,不能覆盖环境中已存在的密钥。

测试

uv run pytest

单元测试验证模式边界和工具的聚合逻辑(模拟Serper调用)。合约冒烟测试启动stdio服务器,列出工具和练习 serp_search.