搜索引擎研究工具

一个基于Next.js的MCP服务器,提供Google自动补全、趋势分析和关键词聚类功能,适用于搜索引擎优化和内容策略研究。

  • by seovimalraj
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 seovimalraj/google-ads-mcp

使用说明

谷歌搜索MCP服务器

Next.js应用路由器部署,公开了一个 模型上下文协议(MCP) 服务器专注于有机搜索研究。服务器提供三个工具--get_autocomplete_suggestions, get_trend_index, 和 get_keyword_clusters--基于谷歌建议、谷歌趋势和搜索控制台构建。自动补全和趋势依赖于 公共端点,而群集使用Search Console服务帐户进行身份验证。

特性

  • 谷歌自动补全:将最多三个种子查询扩展为谷歌用户现在键入的真实短语。
  • 谷歌趋势:使用可选的地理和类别过滤器,返回最多三个关键字的随时间变化的兴趣指数。
  • 关键字聚类:将Search Console查询和Google自动补全扩展合并到带有页面推荐的意图驱动组中。
  • Next.js 15应用路由器 使用严格的TypeScript、ESLint和Prettier配置。
  • 结构化MCP响应 具有一致的错误处理和轻量级速率限制。

需求

  • Node.js 18.18或更新版本。
  • pnpm 或 npm 用于依赖性管理。
  • Google Search Console服务帐户凭据(仅适用于 get_keyword_clusters).

在本地开始

pnpm install
pnpm dev

开发服务器默认为 http://localhost:3000.

搜索控制台凭据

关键字聚类工具使用服务帐户查询Google Search Console Search Analytics API。在运行服务器之前设置以下环境变量:

  • GOOGLE_CLIENT_EMAIL –可访问Search Console属性的服务帐户电子邮件。
  • GOOGLE_PRIVATE_KEY –服务帐户的私钥(换行符转义为 \n 在 .env).

备选变量名(GOOGLE_SERVICE_ACCOUNT_EMAIL, GOOGLE_SERVICE_ACCOUNT_KEY,以及 GOOGLE_SERVICE_ACCOUNT_PRIVATE_KEY)也因兼容性而得到认可。

MCP工具

所有工具共享相同的POST端点: POST /api/mcp 带有JSON有效载荷 {"tool": "<name>", "input": { ... } }.答复 遵循 ToolResponse 形状({ ok: true, data } 或 { ok: false, error }).

服务器也理解 MCP流式HTTP JSON-RPC信封, 因此,与之谈判的代理人 initialize, tools/list,以及 tools/call 将在没有任何代理层的情况下工作。传统JSON 下面显示的格式仍然支持快速手动测试。

ping

{
  "tool": "ping"
}

结果:

{
  "ok": true,
  "data": { "status": "ok" }
}

get_autocomplete_suggestions

从Google Suggest获取实时建议。您可以继续发送单个 query 或与最多三个 queries 阵列。

{
  "tool": "get_autocomplete_suggestions",
  "input": { "queries": ["toroidal transformer", "toroidal core"] }
}

结果:

{
  "ok": true,
  "data": {
    "queries": ["toroidal transformer", "toroidal core"],
    "results": [
      {
        "query": "toroidal transformer",
        "suggestions": [
          "toroidal transformer winding",
          "toroidal transformer core"
        ]
      },
      {
        "query": "toroidal core",
        "suggestions": ["toroidal core material", "toroidal core design"]
      }
    ],
    "combinedSuggestions": [
      "toroidal transformer winding",
      "toroidal transformer core",
      "toroidal core material",
      "toroidal core design"
    ]
  }
}

get_trend_index

返回Google趋势随时间变化的兴趣数据。可选字段(geo, timeRange, category, property)直接映射到 API的基本趋势。提供 keyword 用于向后兼容性或批量处理最多三个术语 keywords.

{
  "tool": "get_trend_index",
  "input": {
    "keywords": ["toroidal transformer", "toroidal core"],
    "timeRange": "today 12-m",
    "geo": "US"
  }
}

结果(截断):

{
  "ok": true,
  "data": {
    "keyword": "toroidal transformer",
    "keywords": ["toroidal transformer", "toroidal core"],
    "geo": "US",
    "timeRange": "today 12-m",
    "seriesLabels": ["toroidal transformer", "toroidal core"],
    "averages": [42, 18],
    "points": [
      {
        "time": "1704067200",
        "formattedTime": "Dec 31, 2023",
        "values": [37, 12]
      }
    ]
  }
}

get_keyword_clusters

通过将Google Search Console性能数据与可选的Google自动补全扩展相结合,生成基于意图的关键字集群。提供经过验证的 siteUrl 以及一个可选的种子 query该工具对集群进行评分,将其映射到性能最佳的页面,并建议下一步行动。

{
  "tool": "get_keyword_clusters",
  "input": {
    "query": "solar panels",
    "siteUrl": "https://example.com/",
    "timeRange": "last_90_days",
    "maxKeywords": 1500
  }
}

结果(截断):

{
  "ok": true,
  "data": {
    "query": "solar panels",
    "siteUrl": "https://example.com/",
    "clusters": [
      {
        "label": "solar panel installation",
        "priority": 78,
        "representativeKeyword": "solar panel installation cost",
        "mappedPage": { "type": "existing", "url": "https://example.com/solar/installation" },
        "rollup": {
          "keywords": 9,
          "sumImpressions": 18400,
          "sumClicks": 1240,
          "avgCtr": 0.045,
          "avgPosition": 6.2
        },
        "recommendations": [
          "Update page for \"solar panel installation\" with FAQs and subtopics.",
          "Add internal links from related pages."
        ]
      }
    ]
  }
}

探索高级谷歌数据源

希望进一步扩展MCP服务器?谷歌公开了几个补充自动补全和趋势的额外表面:

  • 搜索控制台API:提取经过验证的网站绩效数据(点击、展示、点击率),以验证有机机会。
  • 人们还询问/相关搜索:报废或代理SERP模块,用于问题驱动的关键字构思。
  • 谷歌广告关键词规划师:当您有广告访问权限时,估算付费搜索量、出价范围和竞争分数。
  • 谷歌发现和新闻趋势:使用Discover提要和Google新闻API跟踪内容路线图的新兴故事。
  • 谷歌分析数据API:将现场参与度指标与关键字需求相结合,优先考虑高影响力的机会。

速率限制和错误

  • 速率限制:每个IP/用户代理组合每分钟10个请求。超出预算回报 429 随着 code: RATE_LIMIT_EXCEEDED.
  • 上游问题:从Google端点映射到的故障 UPSTREAM_ERROR 带有HTTP状态和服务名称。
  • 验证错误:返回的输入有效载荷无效 INVALID_ARGUMENT 并且包括Zod字段错误。
  • 意外故障:返回 500 随着 code: UNKNOWN 但切勿泄露秘密。

ChatGPT开发者模式集成

使用以下配置在ChatGPT中添加远程MCP服务器:

  • 服务器URL: https://<your-app>.vercel.app/api/mcp
  • 工具:自动发现(ping, get_autocomplete_suggestions, get_trend_index, get_keyword_clusters).
  • 认证流程:不需要——这两个工具都依赖于公共谷歌端点。

ChatGPT中的调用示例:

{
  "tool": "get_trend_index",
  "input": { "keyword": "toroidal transformer" }
}

期待一个随时间点变化的JSON有效负载,您可以将其与自动完成建议或 get_keyword_clusters 该工具用于验证季节性需求并确定内容的优先级。

故障排除

症状 解决
RATE_LIMIT_EXCEEDED 等待窗口重置(约60秒)或降低工具频率。
UPSTREAM_ERROR Google返回了错误状态。请稍后重试或调整查询/筛选器。
UNKNOWN 检查服务器日志以查找潜在异常。

验收检查表

  • [x] 自动补全MCP工具返回谷歌建议短语。
  • [x] 趋势MCP工具随时间返回兴趣数据。
  • [x] 关键字聚类MCP工具将Search Console查询分组为推荐。
  • [x] README涵盖了设置、使用和故障排除。