关于 Camberstack: Google Ads
Camberstack: Google Ads 是面向营销人员和账户管理者的托管 MCP 服务,也可选连接 Search Console 和 Analytics。它将只读分析与变更提案分开,应用前需逐项批准,并可撤销已应用的变更。
主要功能
- 01查看 Ads 账户和广告系列指标
- 02研究关键词并分析搜索表现
- 03报告 Analytics 属性和着陆页数据
- 04提议创建广告系列及账户变更
- 05逐项批准后再应用变更
- 06查看历史并撤销已应用变更
适用场景
- 01比较广告系列支出与转化
- 02发掘关键词和自然搜索机会
- 03准备待批准的广告系列修改
- 04撤销已应用的账户变更
MCP 相关
通过 https://camberstack.io/mcp 向 MCP 客户端提供 Google Ads,以及可选的 Search Console 和 Analytics 工具。客户端使用 OAuth 2.1;账户变更仅在提案获批后应用。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://camberstack.io/mcpclaude mcp add --transport http io-camberstack-google-ads https://camberstack.io/mcp{"mcpServers":{"io-camberstack-google-ads":{"type":"http","url":"https://camberstack.io/mcp"}}}在 Cursor 中打开{"servers":{"io-camberstack-google-ads":{"type":"http","url":"https://camberstack.io/mcp"}}}在 VS Code 中打开{"mcpServers":{"io-camberstack-google-ads":{"type":"http","url":"https://camberstack.io/mcp"}}}{"mcpServers":{"io-camberstack-google-ads":{"serverUrl":"https://camberstack.io/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
Camberstack:Google Ads MCP 服务
将 Google Ads(也可选择连接 Search Console)接入 Claude、ChatGPT、Cursor 或任何 MCP 客户端。你的 AI 可通过只读工具读取账户,并提出修改建议,从否定关键词到完整的搜索广告、Performance Max、展示广告和 YouTube 广告系列。在你批准某项具体建议前,账户不会发生任何变化;每项已应用的更改都可通过一次调用撤销,所有套餐均适用。 高风险更改(启用广告系列、将预算或出价提高一倍以上、切换出价策略)会在你批准前标记在建议中。演示账户可让任何人先试用所有工具。
托管服务:**https://camberstack.io/mcp**(免费:每次可连接 1 个 Google Ads 账户,每月可切换一次;可使用所有工具,更改次数不限;Pro 每月 $15:最多 5 个账户;Agency 每月 $49:最多 25 个账户)。
设置指南(含截图和故障排查):将 Google Ads 连接到 Claude · 将 Google Ads 连接到 ChatGPT · 所有工具 · Cursor、VS Code 等
工具
| 工具 | 是否写入? | 功能 |
|---|---|---|
list_accounts | 否 | 登录可访问的所有账号,包括经理账号(MCC)下的客户账号 |
account_overview | 否 | 按广告系列显示花费、转化次数和每次转化费用 |
keyword_ideas | 否 | 根据种子关键词和/或 URL 获取 Keyword Planner 的创意:月搜索量、竞争程度、页首出价范围;标记账号已定位或屏蔽的创意 |
keyword_metrics | 否 | 获取确切列表中关键词的 Keyword Planner 数据,以及过去 12 个月的搜索量 |
run_gaql | 否 | 执行任意只读 GAQL SELECT |
search_console_sites | 否 | 登录可读取的网站(Search Console 资源) |
search_console_summary | 否 | 网站整体在一段时间内的点击次数、展示次数、CTR 和排名,并与之前的时间段对比 |
search_console_performance | 否 | 按查询、网页、国家/地区、设备或日期查看自然点击次数、展示次数、CTR 和排名;支持文本或 RE2 正则表达式筛选 |
search_console_trend | 否 | 按查询和网页对比一段时间与之前的时间段:上升、下降、新增、流失,以及排名下降但搜索量上升的查询 |
search_console_opportunities | 否 | 排名在 4-20 位且预计可增加点击次数的查询、排名前 5 但 CTR 较低的查询,以及疑问式查询 |
search_console_inspect_urls | 否 | 最多检查 20 个页面的 URL:是否已编入索引或未编入的原因、上次抓取时间、所选规范网址与声明网址,以及结构化数据错误 |
search_console_sitemaps | 否 | 已提交的站点地图:上次下载时间、URL 数量、错误和警告 |
paid_organic_overlap | 否 | 将 Ads 账号的搜索字词与网站的自然搜索查询进行关联:已付费且自然排名靠前的搜索,以及排名在第 2 页及之后且没有广告的搜索 |
analytics_properties | 否 | 登录可读取的 Google Analytics 4 媒体资源;如果尚未授予 Analytics 访问权限,则提供可添加访问权限的个人链接 |
analytics_setup | 否 | 媒体资源的网页数据流(衡量 ID)、关键事件和 Google Ads 链接 |
propose_analytics_changes | 否 | 类似于 propose_changes,用于 GA4 设置:create_ga4_property(包含网页数据流;应用后的结果会提供代码),mark_key_event/unmark_key_event、link_google_ads/unlink_google_ads。通过 apply_changes/undo_changes 应用和撤销 |
analytics_landing_pages | 否 | 按着陆页显示会话数、用户数、互动率、关键事件和关键事件率;也可选择一个渠道(例如 Paid Search) |
analytics_report | 否 | 根据维度和指标名称获取任意 GA4 Data API 报告,并支持包含筛选条件 |
propose_changes | 否 | 根据实时账号解析更改,使用 Google 进行试运行(validateOnly),并保存包含通俗易懂摘要的提案 |
apply_changes | 是 | 应用已保存的提案(必须是用户自己的、尚未应用且仍与账号状态相符的提案;如果账号状态已变,则返回更新后的提案供用户审批);记录每项更改的逆操作 |
undo_changes | 否 | 为已应用的提案生成撤销提案 |
switch_account | 仅计划 | 用户同意后,使用计划每 30 天一次的账号切换额度切换到某个账号;不会更改 Google Ads 中的任何内容 |
billing | 否 | 显示计划、正在使用的 Google Ads 账号(过去 30 天)与计划限额的对比,以及个人升级或管理账单的链接 |
discard_proposal | 否 | 将未关闭的提案标记为已放弃,使其无法应用 |
change_history | 否 | 所有提案,以及已应用、失败和撤销的内容 |
disconnect | 否 | 撤销 Camberstack 的 Google 访问权限并删除已存储的凭据(需用户确认) |
Search Console 工具可接受 days 或确切的 start_date/end_date,还可设置 fresh: true,以包含 Google 仍在补充数据的最近 2-3
天。无法请求编入索引或提交站点地图:Camberstack 仅持有只读权限范围。
Google Analytics 工具需要 analytics.readonly 和 analytics.edit(经 Google 验证的敏感权限范围)。登录时会与 Ads 和 Search Console 一起请求这些权限;在添加这些权限之前建立的连接,首次调用 Analytics 时会获得专属的 /connect/analytics 链接,为同一个 Google 账号添加这两项权限。Cloud 项目需要启用 Google Analytics Data API 和 Admin API。
提案可以执行的操作:
-
控制: 添加否定关键字;暂停或启用广告系列、广告组、关键字或广告;设置广告系列的每日预算(绝不设置共享预算)或结束日期。
-
构建,创建后始终处于暂停状态(构建和花费是两项独立的审批):
- 搜索广告系列:广告组、关键字、响应式搜索广告、定位、否定关键字、附加链接;
- 效果最大化广告系列:由文本、图片和 YouTube 视频组成的素材资源组,并按照 Google 的品牌指南,在广告系列中添加商家名称和徽标(不含购物 Feed);
- 展示广告系列:响应式展示广告;
- Demand Gen 广告系列,包含 YouTube 视频广告,这是通过 API 投放到 YouTube 的唯一方式(API 拒绝创建视频广告系列:
MUTATE_NOT_ALLOWED,v23)。
图片可以是现有图片素材资源,也可以是 https URL;图片会以 SSRF 安全的方式下载(
src/fetch-safe.ts)并上传。提案还可以向现有广告系列添加广告组、关键字、广告或附加链接。 -
调整: 关键字和广告组出价、出价策略、地理位置和语言定位、仅限实际到访的地理位置模式、最终 URL 后缀,以及广告系列的欧盟政治广告声明(只要有任何广告系列缺少此声明,Google 就会拒绝对账号进行任何更改)。
-
衡量: 创建转化操作、设置其计数方式、导入 GA4 关键事件、将广告系列限定为一个转化目标。
风险较高的更改会在提案摘要中标注一行 ⚠:启用广告系列、将预算或出价提高到两倍以上、切换出价策略、移除最后一个地理位置、新建主要转化操作。撤销操作只会移除 Camberstack 自己创建的内容;绝不会删除用户创建的内容。(撤销 GA4 导入会移除该操作,因为 Google 无法再次隐藏它;重新导入即可恢复。)Search Console 为只读。
身份验证工作原理
Camberstack 是供 MCP 客户端使用的 OAuth 2.1 授权服务器(动态客户端注册、PKCE)。其 /authorize 会将用户带到 Google,请求 adwords + openid email,以及 Search Console 的 webmasters.readonly。任一项都足以建立连接(“按需选择”):如果工具需要尚未获得的权限,或需要 Google Analytics,就会返回专属的 /connect/<google-ads|search-console|analytics> 链接,为同一个 Google 账号仅添加相应服务。Google 刷新令牌会以 AES-256-GCM 加密并存储,绝不会离开服务器。MCP 客户端获取的是 Camberstack 自己的令牌,这些令牌仅以 SHA-256 哈希形式存储。
有意使用两个 MCP SDK:/mcp 由 SDK v2(@modelcontextprotocol/server + /node)提供服务,可响应 2026-07-28 客户端(server/discover)以及 2025 年时代的客户端(initialize,保留在 JSON 响应传输上)。授权服务器(mcpAuthRouter、requireBearerAuth)仍使用 @modelcontextprotocol/sdk 1.x,因为 v2 仅提供资源服务器部分。在 v2(或配套包)提供 /authorize、/token 和 /register 之前,不要移除 1.x。
运行
npm ci && npm test
ENCRYPTION_KEY=$(openssl rand -hex 32) \
GOOGLE_CLIENT_ID=… GOOGLE_CLIENT_SECRET=… GOOGLE_ADS_DEVELOPER_TOKEN=… \
BASE_URL=https://your.host npm run dev
| 环境变量 | |
|---|---|
ENCRYPTION_KEY | 32 字节,十六进制或 base64。丢失后只需用户重新连接;泄露则会暴露已存储的 Google 令牌 |
GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET | 来自具有 Google Ads API 访问权限的专用 Google Cloud 项目的 OAuth 客户端。重定向 URI:<BASE_URL>/oauth/google/callback。未设置时仅显示页面,登录会提示“尚未开放” |
GOOGLE_ADS_DEVELOPER_TOKEN | 设置后会发送 |
BASE_URL | 公共源站,即 OAuth 颁发方(默认为 https://camberstack.io) |
DATA_DIR | SQLite 存储位置(默认为 ./data) |
FREE_ACCOUNTS / PRO_ACCOUNTS / PRO_EMAILS | 各套餐同时覆盖的 Google Ads 账户数量;按过去 30 天内使用过的不同账户数量,加上每 30 天一次切换计算;不包括经理账户和演示账户(默认为 1 / 10)/ 被视为 Pro 用户的邮箱 |
STRIPE_SECRET_KEY / STRIPE_PRO_PRICE_ID | 通过 Stripe Checkout 订阅 Pro;未设置时不显示升级链接 |
STRIPE_AGENCY_PRICE_ID / AGENCY_ACCOUNTS | Agency 套餐的价格(其独立产品)/ 覆盖的账户数量(默认为 25);未设置价格时不提供 Agency。用户所属套餐根据其订阅价格确定,因此在 Stripe 账单门户中切换 Pro ↔ Agency(门户必须同时列出这两个价格)后,套餐会在一小时内更新 |
托管 HTTP 服务通过 npm run start:http 启动(Docker 镜像运行 node dist/server.js)。
npm start 是无需环境变量、数据库或 Google 登录的 stdio 模式:它会为目录检查器列出所有工具(Glama 运行 mcp-proxy -- pnpm run start),任何工具调用都会返回可连接的托管 URL。pnpm-workspace.yaml 会关闭 pnpm 安装的原生构建,因此 stdio 模式可在任何地方安装;生产环境使用 npm 安装。
scripts/try-account.ts 使用现有刷新令牌,针对真实账户运行读取工具,跳过 OAuth。可用于内部试用。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。