关于 seo-stack-mcp
seo-stack-mcp 是面向 SEO 和网站分析团队的开源、可自托管 MCP 服务,整合七种数据源及分析工具。它可计算查询下滑、内容差距和每周报告等结果,而不只返回原始数据。
主要功能
- 01连接七种 SEO 与分析数据源
- 02分析搜索表现和趋势
- 03发现关键词蚕食与内容差距
- 04生成每周表现报告
- 05仅提供已配置数据源的工具
适用场景
- 01查看流量下滑的搜索查询
- 02找出有优化空间的页面
- 03跨数据源比较网站表现
- 04准备定期 SEO 报告
MCP 相关
它向 MCP 客户端提供已配置数据源的工具和内置 SEO 分析功能。它支持 Claude Desktop、Claude Code、Cursor 及其他 MCP 客户端。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx seo-stack-mcpGOOGLE_APPLICATION_CREDENTIALS密钥Path to a Google service-account JSON key (enables GSC + GA4)SEO_STACK_OAUTH_CLIENT密钥Path to a Google OAuth desktop client secrets JSON (alternative to service account)GA4_PROPERTY_IDDefault GA4 property IDGSC_SITE_URLDefault Search Console property (e.g. sc-domain:example.com)ADSENSE_ACCOUNT_IDAdSense account (accounts/pub-XXXX...) — enables AdSense tools on top of the Google credentialsADSENSE_CURRENCYReporting currency for AdSense tools (default USD)BING_WEBMASTER_API_KEY密钥Bing Webmaster Tools API key (enables Bing tools)BING_SITE_URLDefault Bing site URLCLARITY_API_TOKEN密钥Microsoft Clarity Data Export API token (enables Clarity tools)GOOGLE_ADS_DEVELOPER_TOKEN密钥Google Ads developer token (enables Keyword Planner tools; needs the google-ads extra)GOOGLE_ADS_CLIENT_IDGoogle Ads OAuth client idGOOGLE_ADS_CLIENT_SECRET密钥Google Ads OAuth client secretGOOGLE_ADS_REFRESH_TOKEN密钥Google Ads OAuth refresh token (adwords scope)GOOGLE_ADS_CUSTOMER_IDGoogle Ads customer id (10 digits)GOOGLE_ADS_LOGIN_CUSTOMER_IDManager account id, if the customer is under an MCCOPENPAGERANK_API_KEY密钥Open PageRank API key (enables the pagerank_score tool)本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
seo-stack-mcp
面向 AI Agent 的完整开源 SEO 数据栈。 在一个 MCP 服务中整合 Google Search Console、Google Analytics 4、Bing Webmaster Tools、Microsoft Clarity、Google AdSense、Google Keyword Planner 和 Open PageRank,并内置分析工具(关键词蚕食检查、易得成果、内容差距、每周报告),而不只是原始 API 封装。
可自托管、免费,采用 MIT 许可证。适用于 Claude Desktop、Claude Code、Cursor 和任何 MCP 客户端。
为什么不选择多个独立服务?
- 一次安装,一份配置 —— 无需分别配置 7 个不同的 MCP 服务和 7 套身份验证。
- 内置分析工具 —— 询问 “本月哪些查询量在下降?” 或 “找出容易获得成果的关键词”,即可获得由服务端计算的答案,而不是需要 Agent 自行处理的原始数据。
- 数据源可选 —— 只配置你要使用的数据源;只有已配置数据源对应的工具才会显示。
- 可自托管 —— 令牌保留在你的设备上。没有会读取你 Search Console 数据的第三方托管网关。
快速开始(60 秒)
添加到 MCP 客户端配置中(Claude Desktop 的 claude_desktop_config.json、Cursor 的 mcp.json,或使用 claude mcp add):
{
"mcpServers": {
"seo-stack": {
"command": "uvx",
"args": ["seo-stack-mcp"],
"env": {
"GOOGLE_APPLICATION_CREDENTIALS": "/path/to/service-account.json",
"GA4_PROPERTY_ID": "123456789",
"BING_WEBMASTER_API_KEY": "your-key",
"CLARITY_API_TOKEN": "your-token"
}
}
}
}
所有环境变量都是可选的,只需设置你需要的数据源即可。就这么简单:重启客户端,然后询问 “本周我的热门查询有哪些?”。
若要直接从 GitHub 运行最新开发版本,请改用 "args": ["--from", "git+https://github.com/Raffaele86/seo-stack-mcp", "seo-stack-mcp"]。
凭据
| 数据源 | 所需内容 | 获取方式 |
|---|---|---|
| GSC + GA4 | 服务账号 JSON(推荐)→ GOOGLE_APPLICATION_CREDENTIALS | Google Cloud Console → 创建服务账号 → 启用 Search Console API + Analytics Data API → 在 GSC / GA4 中将服务账号邮箱添加为用户 |
| GSC + GA4(备选) | OAuth 桌面客户端 JSON → SEO_STACK_OAUTH_CLIENT | 首次运行时会打开浏览器以供授权;刷新令牌会缓存到 ~/.config/seo-stack-mcp/ |
| Bing | BING_WEBMASTER_API_KEY | Bing Webmaster Tools → Settings → API access |
| Clarity | CLARITY_API_TOKEN | Microsoft Clarity → 项目 → Settings → Data Export API |
| AdSense | 上述 Google 凭据 + ADSENSE_ACCOUNT_ID(accounts/pub-XXXX...) | AdSense → Account → Settings → Account information。在 Google Cloud 中启用 AdSense Management API。如果使用 OAuth,之后才启用 AdSense,请删除 ~/.config/seo-stack-mcp/ 中缓存的令牌,以便使用新权限重新授权 |
| Keyword Planner | GOOGLE_ADS_DEVELOPER_TOKEN、GOOGLE_ADS_CLIENT_ID、GOOGLE_ADS_CLIENT_SECRET、GOOGLE_ADS_REFRESH_TOKEN、GOOGLE_ADS_CUSTOMER_ID(MCC 下还需 GOOGLE_ADS_LOGIN_CUSTOMER_ID) | Google Ads API Center → 开发者令牌(Basic access 即可;API 调用免费)。还需安装 google-ads 扩展:uvx --with google-ads seo-stack-mcp 或 pip install seo-stack-mcp[ads] |
| Open PageRank | OPENPAGERANK_API_KEY | Open PageRank — 免费 API 密钥,每小时 10,000 次调用 |
可选默认值:GSC_SITE_URL、BING_SITE_URL(无需在每个问题中重复填写网站)、ADSENSE_CURRENCY(默认 USD)、GOOGLE_ADS_LOCATION_ID / GOOGLE_ADS_LANGUAGE_ID(Keyword Planner 的地理位置 / 语言默认值,默认为 US / 英语)。
工具
Google Search Console(29 个工具)
| 工具 | 描述 |
|---|---|
gsc_bulk_inspect_urls | 通过 URL Inspection API 批量检查多个 URL。每次调用最多 50 个 URL。 |
gsc_bulk_request_indexing | 通过 Google Indexing API 请求为多个 URL 编入索引。最多 50 个 URL。 |
gsc_cannibalization_check | 查找多个页面相互竞争的查询(关键词蚕食)。显示有 2 个或更多排名页面的查询。 |
gsc_compare_periods | 比较两个时间段:显示每个项目的点击次数、展示次数、CTR 和排名的变化。 |
gsc_content_gap_analysis | 内容差距分析:查找竞争对手有排名而你没有(或排名远落后)的查询。 |
gsc_country_performance | 按国家/地区查看效果:点击次数、展示次数、CTR 和平均排名。默认:过去 28 天。 |
gsc_daily_stats | 汇总每日网站统计数据:每天的点击次数、展示次数、CTR 和平均排名。 |
gsc_declining_queries | 点击次数或排名下降的查询:将过去 N 天与之前等长的时间段进行比较。 |
gsc_delete_sitemap | 从 Google Search Console 中移除站点地图。凭据必须具有写入权限范围。 |
gsc_device_performance | 比较 MOBILE、DESKTOP 和 TABLET 设备的效果。默认:过去 28 天。 |
gsc_indexing_status_summary | 多个 URL 的索引状态摘要:统计已编入索引、未编入索引和出错的数量。 |
gsc_inspect_url | 通过 Google Search Console URL Inspection API 检查 URL。 |
gsc_keyword_opportunities | 排名在 5–20 位、展示次数高但 CTR 低的查询:这些是优化机会。 |
gsc_list_sitemaps | 列出 Google Search Console 中某个网站的所有站点地图。 |
gsc_list_sites | 列出配置的凭据可访问的所有 Google Search Console 资源。 |
gsc_low_hanging_fruit | 排名在 3–10 位且展示量高的查询:稍作优化即可进入前 3 名。 |
gsc_page_trend | 查看特定页面过去 N 天的每日趋势(默认 90 天)。 |
gsc_pages_for_query | 哪些页面在特定查询中获得排名?显示所有具有效果数据的页面。 |
gsc_queries_for_page | 哪些查询为特定页面带来流量?显示所有具有效果数据的关键词。 |
gsc_query_trend | 查看特定查询过去 N 天的每日趋势(默认 90 天)。 |
gsc_request_indexing | 通过 Google Indexing API 请求为某个 URL 编入索引。 |
gsc_rising_queries | 上升趋势的查询:将过去 N 天与之前等长的时间段进行比较。 |
gsc_search_analytics | 查询 Search Analytics:获取所请求维度的点击次数、展示次数、CTR 和排名。 |
gsc_search_analytics_filtered | 使用高级筛选条件查询 Search Analytics。筛选条件:query_contains、query_regex、page_contains、page_regex、country(例如 'ita')、device(MOBILE/DESKTOP/TABLET)。 |
gsc_search_appearance | 按 SERP 结果类型(富媒体摘要、视频、FAQ 等)查看效果。默认:过去 28 天。 |
gsc_submit_sitemap | 向 Google Search Console 提交站点地图。凭据必须具有写入权限范围。 |
gsc_top_pages | 按点击次数或展示次数列出排名靠前的页面。order_by:clicks、impressions、ctr、position。默认:过去 28 天。 |
gsc_top_queries | 按点击次数或展示次数列出排名靠前的查询。order_by:clicks、impressions、ctr、position。默认:过去 28 天。 |
gsc_weekly_report | 自动生成每周报告:对比过去 7 天与之前 7 天的指标变化,以及排名靠前的查询和页面。 |
Google Analytics 4(10 个工具)
| 工具 | 描述 |
|---|---|
ga4_compare_periods | 对比两个时段的关键指标百分比变化。 |
ga4_conversion_paths | 用户路径:流量来源 → 落地页,以及会话数和用户数。 |
ga4_events | GA4 热门事件及其次数和用户数。 |
ga4_landing_pages | 入口页面(落地页)的会话数、用户数和跳出率。 |
ga4_overview | 网站概览:用户数、会话数、页面浏览量、跳出率、平均会话时长。 |
ga4_page_performance | 单个页面的详细表现,按设备和来源细分。 |
ga4_realtime | 实时报告:当前正在浏览的页面和活跃用户数。 |
ga4_top_pages | 按流量排名的热门页面及完整指标(页面浏览量、用户数、时长、跳出率)。 |
ga4_traffic_sources | 按来源/媒介划分的流量细分(例如 google/organic、direct/none)。 |
ga4_user_demographics | 用户人口统计信息细分:国家/地区、设备、浏览器、语言。 |
Bing Webmaster Tools(22 个工具)
| 工具 | 描述 |
|---|---|
bing_crawl_issues | 存在抓取问题的 URL(4xx/5xx 错误、重定向等)。 |
bing_crawl_stats | Bing 抓取统计数据:已抓取页面、错误、重定向等。 |
bing_keyword | Bing 对精确查询的展示量(展示量 + 广泛匹配)。 |
bing_keyword_stats | Bing 关键词历史统计数据:展示量和趋势。 |
bing_link_counts | 根据 Bing 数据,反向链接数量最多的页面。 |
bing_pages_for_query | 在 Bing 上针对特定查询获得排名的页面。 |
bing_queries_for_page | 为特定页面带来流量的搜索查询。 |
bing_query_page_detail | 特定查询与页面组合的详细统计数据。 |
bing_query_traffic | Bing 上特定查询的每日流量趋势。 |
bing_related_keywords | Bing 上与搜索词相关的关键词及其展示量数据。 |
bing_sitemaps | 列出提交到 Bing 的所有站点地图/Feed。 |
bing_sites | 列出 Bing Webmaster Tools 账户中已验证的所有网站。 |
bing_submission_quota | 查看 Bing 的 URL 提交配额。 |
bing_submit_sitemap | 向 Bing 提交新的站点地图/Feed。 |
bing_submit_url | 向 Bing 提交 URL 以供编入索引。 |
bing_submit_urls_batch | 批量向 Bing 提交 URL 以供编入索引(最多 500 个)。 |
bing_top_pages | Bing 上的热门页面及其点击次数、展示量和平均排名。 |
bing_top_queries | Bing 热门搜索查询及其点击次数、展示量和平均排名。 |
bing_traffic_stats | Bing 每日流量统计数据:随时间变化的点击次数和展示量。 |
bing_url_info | 特定 URL 在 Bing 上的索引状态。 |
bing_url_links | 根据 Bing 数据,指向特定 URL 的入站反向链接。 |
bing_url_traffic | Bing 上特定 URL 的流量数据。 |
Microsoft Clarity(10 个工具)
| 工具 | 描述 |
|---|---|
clarity_breakdown | 自定义原始数据细分(1–3 个维度)。面向高级用户——如果数据尚未缓存,则消耗 1 个配额单位。 |
clarity_dead_clicks | 死点击最多的 URL(点击非交互元素,是 UX 问题的信号)。 |
clarity_engagement | 各 URL(或其他维度)的互动时长和滚动深度。 |
clarity_excessive_scroll | 过度滚动最多的 URL(用户正在费力寻找不易找到的信息)。 |
clarity_popular_pages | 过去几天访问量最高的 URL(热门页面指标,维度=URL)。 |
clarity_quickback_clicks | 快速返回点击最多的 URL(用户立即返回,说明页面不相关)。 |
clarity_quota_status | 每日配额状态(本地计数器,不会调用 API)。 |
clarity_rage_clicks | 怒点最多的 URL(快速重复点击,表明用户感到沮丧)。 |
clarity_script_errors | JS 错误和错误点击最多的 URL(页面上的技术问题)。 |
clarity_traffic | Microsoft Clarity 流量细分(会话数、机器人占比、每次会话的页面数)。 |
Google AdSense(10 个工具)
| 工具 | 说明 |
|---|---|
adsense_alerts | AdSense 账号中的有效提醒(严重程度、类型、消息)。 |
adsense_by_ad_unit | 按广告单元统计效果:收入、展示次数、点击次数、CTR、eCPM。 |
adsense_by_country | 按国家/地区细分收入,并按收入排序。 |
adsense_by_platform | 按设备平台(桌面设备、移动设备、平板电脑)细分收入。 |
adsense_compare_periods | 对比两个时间段的关键指标及其百分比变化。 |
adsense_earnings_by_date | 每日收入,包括总额、平均值和趋势。 |
adsense_earnings_overview | 收入概览:预估收入、网页浏览量、展示次数、点击次数、RPM、CTR。 |
adsense_payments | AdSense 账号的近期付款记录。 |
adsense_sites | 与 AdSense 账号关联的网站(域名、状态、自动广告)。 |
adsense_top_pages | 按收入排列的热门 URL 渠道(需要在 AdSense 中配置 URL 渠道)。 |
Google Keyword Planner(4 个工具)
| 工具 | 说明 |
|---|---|
kp_historical_metrics | 获取一组已知关键词的真实历史 Keyword Planner 指标。 |
kp_keyword_ideas | 关键词创意及真实指标:搜索量、竞争程度、页首出价、过去 12 个月的搜索量。 |
kp_status | 来源状态:库、凭据完整度(已屏蔽)和实时连接测试。 |
kp_suggest_geo_target | 将地点名称解析为其地理定位常量 ID。 |
Open PageRank(1 个工具)
| 工具 | 说明 |
|---|---|
pagerank_score | 最多可在每次调用中查询 100 个域名的域名权威度评分(0-10),并使用本地 30 天缓存。 |
为什么不使用官方 GA4 服务端或 mcp-gsc?
这两者都很好,本项目也无意否认这一点。Google 官方的 analytics-mcp 仅支持 GA4;mcp-gsc 仅支持 GSC。如果你只使用其中一个数据源,就用它们吧。本项目面向需要覆盖整个免费 SEO 工具栈,并希望在同一处使用跨数据源工作流(GSC + GA4 + Bing + Clarity)和具有明确观点的分析工具的人。
另请参阅
local-leads-mcp — 用于寻找潜在客户的配套工具:通过 OpenStreetMap 查找没有网站的本地商家并核实信息,无需 API 密钥。
许可证
MIT。
由 Raffaele Nocera 构建并维护 — 自由职业网页与 SEO 专家。可提供咨询服务。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。