谷歌搜索控制台MCP服务器
一个MCP服务器,让Claude可以直接访问您的Google Search Console数据——搜索性能、URL索引、站点地图和内置的SEO分析工具,包括趋势查询、同类相食检测、流量下降诊断和自动查询/页面分组。
先决条件
- Node.js >= 18.0.0
- C++编译器(
better-sqlite3 依赖性):
| 平台 |
安装 |
| macOS |
xcode-select --install |
| 视窗 |
Visual Studio 生成工具 --选择“用C++进行桌面开发” |
| Linux(Debian/Ubuntu) |
sudo apt-get install build-essential python3 |
| Linux(Fedora/RHEL) |
sudo dnf groupinstall "Development Tools" && sudo dnf install python3 |
快速开始
git clone https://github.com/serpfire/gsc-mcp-server.git
cd gsc-mcp-server
npm install
1.创建Google OAuth凭据
- 首选 谷歌云控制台
- 创建OAuth 2.0客户端ID(类型: 桌面应用)
- 启用 谷歌搜索控制台API 在您的项目中
2.身份验证
GSC_OAUTH_CLIENT_ID=your-client-id \
GSC_OAUTH_CLIENT_SECRET=your-client-secret \
npm run setup
这将打开您的浏览器以使用Google登录。代币存储在 ~/.gsc-mcp/tokens.json 以及自动刷新。跑 setup 再次随时切换帐户。
3.添加到克劳德代码
claude mcp add --transport stdio gsc -s user \
-e GSC_OAUTH_CLIENT_ID=your-client-id \
-e GSC_OAUTH_CLIENT_SECRET=your-client-secret \
-- node /absolute/path/to/gsc-mcp-server/src/index.js
或手动添加到 ~/.claude.json:
{
"mcpServers": {
"gsc": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/gsc-mcp-server/src/index.js"],
"env": {
"GSC_OAUTH_CLIENT_ID": "your-client-id",
"GSC_OAUTH_CLIENT_SECRET": "your-client-secret"
}
}
}
}
服务帐户替代方案
对于自动化或服务器到服务器使用:
{
"env": {
"GSC_AUTH_MODE": "service_account",
"GSC_SERVICE_ACCOUNT_KEY_PATH": "/path/to/key.json"
}
}
工具
核心GSC工具
| 工具 |
说明 |
list_sites |
列出所有已验证的GSC属性 |
get_site |
获取特定网站的详细信息 |
query_search_analytics |
查询点击次数、展示次数、CTR、带维度/过滤器/分页的位置 |
inspect_url |
检查URL索引/爬网状态(2000/天限制) |
list_sitemaps |
列出站点的站点地图 |
get_sitemap |
获取站点地图详细信息 |
submit_sitemap |
提交新的站点地图 |
delete_sitemap |
从GSC中删除站点地图 |
switch_account |
使用其他Google帐户重新进行身份验证(仅限OAuth) |
数据同步
| 工具 |
说明 |
sync_search_data |
将所有性能数据提取到本地SQLite缓存中。默认情况下为增量。分析工具之前需要。 |
分析工具
| 工具 |
说明 |
find_low_hanging_fruit |
查找排名2-20、展示率高但点击率低的查询,按未开发潜力评分 |
detect_cannibalization |
使用HHI评分和行动建议检测2+URL上的查询排名 |
find_trending_queries |
查找增长/下降幅度最大的查询(同期或同比) |
find_trending_pages |
查找影响评分增长/下降最大的页面 |
analyze_traffic_drop |
诊断5个视图的流量下降:网站级别、GBP与有机、团体、细分市场、品牌与非品牌 |
get_group_performance |
按指定组和份额百分比细分的汇总指标 |
组管理
| 工具 |
说明 |
create_group |
为URL段或查询组创建一个具有OR/AND/NOT正则表达式规则的组 |
list_groups |
列出所有组,可选择按维度筛选 |
get_group |
获取组详细信息,包括规则 |
update_group |
更新组描述和/或规则 |
delete_group |
删除组及其规则 |
test_group |
根据缓存数据测试组——匹配计数、速率、样本 |
自动发现
| 工具 |
说明 |
discover_query_groups |
使用单词重叠、n元语法相似度和页面共现的自动聚类查询 |
promote_cluster_to_group |
将发现的集群转换为命名组 |
auto_segment_pages |
根据页面URL模式自动创建URL段组 |
auto_group_queries |
自动创建查询组:品牌、主题n元语法、意图修饰符 |
资源
| URI |
描述 |
sites://list |
所有经过验证的站点(自动发现) |
提示
| 名称 |
描述 |
seo_performance_analysis |
引导完整的SEO审查(查询、页面、设备、趋势) |
index_coverage_check |
系统URL索引报告 |
查询示例
- “列出我的Search Console站点”
- “显示sc域过去7天的前20个查询:example.com”
- “将移动设备与台式机进行比较https://example.com/"
- “检查https://example.com/new-page已编入索引”
- “显示sc域的站点地图:example.com”
- “同步sc域的数据:example.com并找到低垂的果实”
- “检测sc域上的关键字蚕食:example.com”
- “显示sc域过去28天的趋势查询:example.com”
- “自动为sc域创建查询组:example.com”
建筑
src/
├── index.js # Entry: auth -> client -> db -> server -> stdio
├── server.js # McpServer factory
├── auth/
│ ├── index.js # Auth factory (auto-detects mode from env)
│ ├── service-account.js # Service account key file auth
│ ├── oauth.js # Browser flow + token persistence + auto-recovery
│ ├── token-store.js # ~/.gsc-mcp/tokens.json
│ └── setup.js # Standalone setup script
├── gsc/ # Pure GSC API wrappers (no MCP knowledge)
│ ├── client.js
│ ├── sites.js
│ ├── search-analytics.js
│ ├── sitemaps.js
│ └── url-inspection.js
├── db/
│ ├── connection.js # SQLite setup with WAL mode
│ └── schema.js # Migrations
├── analysis/ # SEO analysis engine (uses local SQLite)
│ ├── sync.js # GSC API -> SQLite incremental sync
│ ├── low-hanging-fruit.js # Opportunity scoring
│ ├── cannibalization.js # HHI-based detection
│ ├── trending.js # PoP / YoY trending queries & pages
│ ├── traffic-drop.js # Multi-view drop diagnostics
│ ├── group-performance.js # Group-level aggregation
│ ├── auto-segment.js # Automatic URL segmentation
│ ├── auto-group.js # Automatic query grouping
│ ├── shared.js # Shared SQL helpers
│ ├── groups/
│ │ ├── manager.js # CRUD for groups + rules
│ │ ├── compiler.js # OR/AND/NOT rule compilation
│ │ └── matcher.js # Regex matching engine
│ └── semantic/
│ ├── discover.js # Cluster discovery orchestrator
│ ├── clustering.js # Connected components algorithm
│ ├── similarity.js # Multi-signal similarity scoring
│ └── labeler.js # Cluster naming
├── tools/
│ ├── definitions.js # Core GSC tools (declarative)
│ ├── analysis-definitions.js # Analysis tools (declarative)
│ ├── middleware.js # Rate limiting + error handling wrapper
│ ├── auth.js # switch_account tool
│ └── index.js # Registration loop
├── resources.js # sites://list resource
├── prompts.js # SEO analysis + index check prompts
└── utils/
├── logger.js # stderr-only (stdout = MCP protocol)
├── errors.js # Google API error -> MCP error
├── constants.js # Scopes, rate limits, defaults
├── rate-limiter.js # Sliding window
└── open-url.js # Cross-platform browser opener
两层分隔: gsc/ 对MCP一无所知。 tools/ 对谷歌的API一无所知。 analysis/ 对本地SQLite数据进行操作。每一层都是可独立测试的。
环境变量
| 变量 |
必填 |
默认 |
描述 |
GSC_AUTH_MODE |
否 |
自动检测到 |
oauth 或 service_account。自动检测设置凭据的来源。 |
GSC_OAUTH_CLIENT_ID |
OAuth |
-- |
OAuth客户端ID |
GSC_OAUTH_CLIENT_SECRET |
OAuth |
-- |
OAuth客户端密钥 |
GSC_OAUTH_REFRESH_TOKEN |
否 |
-- |
使用预先存在的令牌跳过浏览器流 |
GSC_SERVICE_ACCOUNT_KEY_PATH |
服务帐户 |
-- |
JSON密钥文件的路径 |
GSC_API_SCOPES |
没有 |
webmasters.readonly |
覆盖范围(逗号分隔) |
GSC_LOG_LEVEL |
没有 |
info |
debug / info / warn / error |
GSC_TOKEN_PATH |
没有 |
~/.gsc-mcp/tokens.json |
自定义令牌存储路径 |
GSC_DB_PATH |
没有 |
~/.gsc-mcp/data.db |
自定义SQLite数据库路径 |
调试
启动 MCP检查员 对于交互式测试:
Windows注意事项: inspect脚本使用bash。从Git Bash、WSL运行它,或替换为:
npx @modelcontextprotocol/inspector node src/index.js