Google Ads MCP Worker
Google Ads MCP Worker
基于 Cloudflare Worker 的 Google Ads MCP 服务器。与 mcp-gsc 结构相同:TypeScript,通过 fetch 使用 REST,不依赖 Google 客户端库。
在 API v25 上重新实现 FGRibreau/mcp-google-ads(Rust,API v23)
认证:OAuth2 刷新令牌。Google Ads API 不接受服务账号,因此 GSC 的 JWT 方案在此不适用
传输方式:流式 HTTP(
/mcp)和传统 SSE(/sse)
写入操作不受保护。 没有试运行、没有预算上限、没有出价增幅限制、没有两步确认、没有审计日志。 每个变更工具都会立即作用于
customer_id指向的账户。create_campaign、create_ad_group和create_responsive_search_ad默认使用PAUSED状态,但这只是默认值,你可以覆盖, 并非强制锁定。在信任该设置之前,请先指向测试账户。
设置
1. Google Ads 开发者令牌
经理(MCC)账户 → 工具与设置 → API 中心 → 申请开发者令牌。 在基本访问权限获批之前,该令牌仅适用于测试账户。
2. OAuth 客户端
Google Cloud 控制台 → 选择/创建项目 → 启用 Google Ads API。
API 和服务 → 凭据 → 创建凭据 → OAuth 客户端 ID → 桌面应用。
记下客户端 ID 和客户端密钥。
3. 刷新令牌
npm install --legacy-peer-deps
npm run token -- <CLIENT_ID> <CLIENT_SECRET>打开浏览器,请求 adwords 范围,打印 GOOGLE_ADS_REFRESH_TOKEN。
使用有权访问你要管理的 Ads 账户的 Google 账号登录。
4. 部署
npx wrangler secret put GOOGLE_ADS_DEVELOPER_TOKEN
npx wrangler secret put GOOGLE_ADS_CLIENT_ID
npx wrangler secret put GOOGLE_ADS_CLIENT_SECRET
npx wrangler secret put GOOGLE_ADS_REFRESH_TOKEN
npx wrangler secret put MCP_AUTH_TOKEN # any long random string: openssl rand -hex 32
npm run deploy在 wrangler.jsonc 中设置非机密默认值:
变量 | 含义 |
| 默认账户,仅限数字。工具可通过 |
| 你的 MCC ID,以 |
| 默认为 |
本地开发:将 .dev.vars.example 复制为 .dev.vars,然后运行 npm run dev。
5. 连接客户端
claude mcp add --transport http gads https://gads-mcp.<your-subdomain>.workers.dev/mcp \
--header "Authorization: Bearer <MCP_AUTH_TOKEN>"Claude Desktop / 仅 stdio 客户端:
{
"mcpServers": {
"gads": {
"command": "npx",
"args": [
"mcp-remote",
"https://gads-mcp.<your-subdomain>.workers.dev/mcp",
"--header",
"Authorization: Bearer <MCP_AUTH_TOKEN>"
]
}
}
}然后调用 health_check —— 它会报告 OAuth 状态、开发者令牌是否存在,以及可访问的账户。
工具
46 个工具。每个面向客户的工具都接受可选的 customer_id 参数。
读取(21)
工具 | 功能 |
| 认证状态、API 版本、已配置的账户 |
| 可访问的账户(在 MCC 下时包含名称) |
| 币种、时区、自动标记、测试账户标志 |
| 任意 GAQL 查询;默认使用 |
| 按费用统计的广告系列指标 |
| 广告组指标 |
| 广告指标,包含 RSA 标题/描述和批准状态 |
| 关键词指标,包含匹配类型、质量得分、出价 |
| 实际搜索词 —— 否定关键词来源 |
| 广告系列/广告组/共享集否定关键词 |
| 按地理位置统计的指标 |
| 按设备统计的指标 |
| 变更事件(API 保留 30 天) |
| 素材资源及其关联级别 |
| 被拒登和受限的广告及政策主题 |
| 转化操作,包含类别、计数方式、回溯窗口 |
| Google 的建议及预估影响 |
| 地点名称 → 地理定位常量 ID |
| 根据种子词和/或 URL 获取关键词灵感 |
| 固定关键词列表的流量/竞争度 |
| 假设广告系列的预测 |
写入(25)
工具 | 功能 |
| 每日预算,可共享或独立 |
| 广告系列 + 可选预算,一次调用完成 |
| 名称、状态、预算、日期、出价策略 |
| 广告组及默认每次点击费用 |
| 正面关键词、出价、最终到达网址 |
| 广告系列或广告组否定关键词 |
| RSA,包含固定设置;发送前会检查长度限制 |
| 暂停/启用/移除任何资源,按资源名称操作 |
| 定位或排除地点,可包含出价调整 |
| 存在性定位 vs 兴趣定位 |
| 广告时段和出价调整 |
| 受众群体 |
| 附加链接、宣传信息、结构化摘要、文本、图片 |
| 转化设置,主要/次要 |
| 组合出价策略 |
| 执行或忽略 Google 的建议 |
| 对任何资源集合执行原始变更 —— 涵盖以上所有操作 |
| 原子化 |
mutate 和 mutate_batch 是逃生通道:Google 新增的任何内容,或没有对应命名工具的任何资源
(共享集、用户列表、素材组、实验、标签),都可以通过它们完成,无需修改代码。
两者都接受 validate_only 参数,用于手动试运行。
检查
npm run typecheck # tsc --noEmit
npm test # pure-logic selfcheck: micros, dates, resource names, bidding payloads备注
金额以货币单位(
25.5)传入,内部转换为微单位。变更负载使用
YYYYMMDD日期格式;报表使用YYYY-MM-DD。工具统一接受YYYY-MM-DD并自动转换。updateMask使用 snake_case 字段名 —— 如果你为mutate手写操作时需要注意。访问令牌按 Worker 隔离区缓存;刷新令牌不会过期,除非被撤销或连续 6 个月未使用。
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Manage Google, Meta, Amazon, TikTok, LinkedIn & ChatGPT ads. 430 tools for campaigns & analytics.
OpenAI Ads MCP for ChatGPT Ads campaigns, creatives, audiences, insights, and conversions.
Search Meta, Google Ads, LinkedIn, and TikTok ad libraries plus creative analysis via MCP.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ambo-sk/mcp-google-ads'
If you have feedback or need assistance with the MCP directory API, please join our Discord server