mcpField
G
google-ads

google-ads

本地服务
github.com/mharnett商业与营销1今天更新

关于 google-ads

google-ads 是用于管理和报告 Google Ads 账户的 MCP 服务,支持 MCC 账户结构。默认采用只读模式,新建项目会处于暂停状态,便于在启用前审核变更。

主要功能

  1. 01管理 MCC 和客户账户上下文
  2. 02创建广告系列、广告和关键词
  3. 03报告效果及搜索字词
  4. 04运行 GAQL 查询
  5. 05默认禁用写入或将新建项目设为暂停

适用场景

  1. 01查看广告系列和关键词效果
  2. 02准备广告系列以供人工审核
  3. 03检查搜索字词和转化指标

MCP 相关

向 MCP 客户端提供 Google Ads 账户、广告系列管理和报告工具。默认隐藏修改类工具,可通过环境设置启用;新建项目初始为暂停状态。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"mharnett-google-ads": {
"command": "npx",
"args": [
"-y",
"mcp-google-ads"
],
"env": {
"GOOGLE_ADS_CLIENT_ID": "<GOOGLE_ADS_CLIENT_ID>",
"GOOGLE_ADS_CLIENT_SECRET": "<GOOGLE_ADS_CLIENT_SECRET>",
"GOOGLE_ADS_REFRESH_TOKEN": "<GOOGLE_ADS_REFRESH_TOKEN>",
"GOOGLE_ADS_DEVELOPER_TOKEN": "<GOOGLE_ADS_DEVELOPER_TOKEN>"
}
}
}
}
启动命令npx -y mcp-google-ads
需要配置的环境变量
GOOGLE_ADS_CLIENT_IDOAuth client ID
GOOGLE_ADS_CLIENT_SECRET密钥OAuth client secret
GOOGLE_ADS_REFRESH_TOKEN密钥OAuth refresh token
GOOGLE_ADS_DEVELOPER_TOKEN密钥Google Ads API developer token

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmmcp-google-ads1.0.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MCP Google Ads Server

一个适用于 Google Ads API 的 MCP(Model Context Protocol)服务,内置保障机制,可在更改正式生效前进行审核。已在生产环境中验证,支持 MCC(经理账号),提供 36 个用于广告系列管理、报告和优化的工具。v1.2.0 新增端到端的 Demand Gen 广告系列创建功能。

功能

  • MCC 支持:适用于经理账号和多个客户账号
  • 自动上下文:根据你的工作目录检测对应的客户账号
  • 默认安全:所有新建项目均处于 PAUSED 状态
  • 审批工作流:仅在人工审核后启用项目
  • 验证:创建广告前先进行验证,以便尽早发现错误
  • 韧性:断路器、带退避的重试和超时处理(cockatiel)
  • 结构化日志记录:基于 Pino 的日志记录,带构建指纹

设置

1. Google Ads API 访问权限

你需要:

  • Google Ads 开发者令牌(在 Google Ads API Center 申请)
  • OAuth 凭据(来自 Google Cloud Console 的客户端 ID 和密钥)
  • MCC 账号的刷新令牌
获取 OAuth 凭据
  1. 前往 Google Cloud Console
  2. 创建项目或选择现有项目
  3. 启用 Google Ads API
  4. 前往 凭据 → 创建凭据 → OAuth 客户端 ID
  5. 选择 桌面应用
  6. 下载 JSON 文件(包含 client_id 和 client_secret)
获取刷新令牌

使用你自己的 OAuth 客户端(上一步中的 client_id / client_secret),并运行随附的辅助程序。它会通过 PKCE (S256) 执行 Google 的已安装应用环回流程,并输出刷新令牌。它不会读取主目录中的任何内容,也不需要共享的 OAuth 密钥文件。

export GOOGLE_ADS_CLIENT_ID="YOUR_CLIENT_ID.apps.googleusercontent.com"
export GOOGLE_ADS_CLIENT_SECRET="YOUR_CLIENT_SECRET"
node get-refresh-token.cjs

浏览器会打开 Google 登录页面;请使用拥有 Ads 数据的 Google 账号登录并授权。成功后,辅助程序会向 stdout 输出一行内容:

GOOGLE_ADS_REFRESH_TOKEN=1//0a...

将该值设为环境变量(或写入下方的 config.json)。请求的 OAuth 范围从 config.json(oauth.scope)读取;如果没有,则回退到 config.example.json,因此辅助程序和运行中的服务始终会请求相同的范围。此 MCP 仅请求所需的最小范围: https://www.googleapis.com/auth/adwords。

请勿将其运行时的 stdout 重定向到共享日志文件——刷新令牌会按设计输出到 stdout。

注意:GOOGLE_ADS_DEVELOPER_TOKEN 是单独的 Google Ads API 凭据,并非 OAuth 范围——请单独设置(见下方的环境变量)。

2. 安装
npm install mcp-google-ads

或者克隆并从源代码构建:

git clone https://github.com/mharnett/mcp-google-ads.git
cd mcp-google-ads
npm install
npm run build

**安全:**切勿分享 .mcp.json 文件,也不要将其提交到 git——其中可能包含 API 凭据。请将 .mcp.json 添加到 .gitignore。

3. 配置
cp config.example.json config.json

使用你的凭据编辑 config.json:

{
  "oauth": {
    "scope": "https://www.googleapis.com/auth/adwords"
  },
  "google_ads": {
    "developer_token": "YOUR_DEVELOPER_TOKEN",
    "client_id": "YOUR_CLIENT_ID.apps.googleusercontent.com",
    "client_secret": "YOUR_CLIENT_SECRET",
    "refresh_token": "YOUR_REFRESH_TOKEN",
    "mcc_customer_id": "123-456-7890"
  },
  "clients": {
    "my-client": {
      "customer_id": "111-222-3333",
      "name": "My Client",
      "folder": "/path/to/client/workspace"
    },
    "another-client": {
      "customer_id": "444-555-6666",
      "name": "Another Client",
      "folder": "/path/to/another/workspace"
    }
  },
  "defaults": {
    "create_paused": true,
    "label_prefix": "claude-",
    "require_approval_for_enable": true
  }
}
环境变量

也可以通过环境变量设置凭据(这些变量会覆盖 config.json 中的设置):

变量必需说明
GOOGLE_ADS_DEVELOPER_TOKEN是Google Ads API 开发者令牌
GOOGLE_ADS_CLIENT_ID是OAuth 2.0 客户端 ID
GOOGLE_ADS_CLIENT_SECRET是OAuth 2.0 客户端密钥
GOOGLE_ADS_REFRESH_TOKEN是OAuth 2.0 刷新令牌
GOOGLE_ADS_MCP_WRITE否设为 true 以提供变更类工具(创建/更新/暂停/启用/移除/应用)。默认:只读。
GOOGLE_ADS_MCP_ALWAYS_LOAD否以逗号分隔的工具名称列表,将这些工具标记为始终加载,例如 google_ads_get_client_context,google_ads_gaql_query。默认:未设置(不标记任何工具)。
始终加载的工具

对于将工具架构延迟到工具搜索步骤后才加载的客户端,只有在搜索某个工具后才会加载该工具。在 GOOGLE_ADS_MCP_ALWAYS_LOAD 中指定工具名称,会在 tools/list 中为这些工具添加 _meta: {"anthropic/alwaysLoad": true},以便直接提供这些工具。与任何工具都不匹配的名称会被忽略,而且此标记绝不会让只读模式隐藏的工具变为可用。

默认只读

服务默认以只读模式运行。在 MCP 服务环境中设置 GOOGLE_ADS_MCP_WRITE=true 之前,变更类工具(任何用于创建、更新、暂停、启用、移除、关联或应用的工具)都会从工具列表中隐藏。 如果未设置该标志却调用了写入工具,服务会返回明确错误,并指出相关环境变量。

这是刻意设计的:像“启用筹款广告系列”这样的随意聊天消息,不应在未经明确选择的情况下改变投放中的广告支出。

4. 添加到 Claude Code

将以下内容添加到 Claude Code MCP 设置中(~/.claude/settings.json 或项目设置):

{
  "mcpServers": {
    "google-ads": {
      "command": "node",
      "args": ["node_modules/mcp-google-ads/dist/index.js"]
    }
  }
}

或者,如果从源码安装:

{
  "mcpServers": {
    "google-ads": {
      "command": "node",
      "args": ["/path/to/mcp-google-ads/dist/index.js"]
    }
  }
}

重启 Claude Code。

**Claude Desktop:**将以下内容添加到 ~/Library/Application Support/Claude/claude_desktop_config.json(macOS)或 %APPDATA%\Claude\claude_desktop_config.json(Windows)。

使用方法

工作流
1. cd into client folder → auto-detects account context
2. Ask Claude to create campaigns/ads → all created PAUSED
3. Review in Google Ads UI or Editor
4. Tell Claude to enable approved items
5. Claude enables (requires your approval prompt)
可用工具(36 个)
上下文与发现
工具说明
google_ads_get_client_context根据工作目录检测所属账号
google_ads_list_campaigns列出所有广告系列及其状态和指标
google_ads_list_ad_groups列出某个广告系列中的广告组
google_ads_list_pending_changes显示带有 claude- 标签的已暂停项目
google_ads_list_conversion_actions列出转化操作
广告系列管理
工具说明
google_ads_create_campaign创建广告系列(PAUSED)。支持 SEARCH + DEMAND_GEN 渠道、更丰富的出价方式(MANUAL_CPC / MAXIMIZE_CLICKS / MAXIMIZE_CONVERSIONS / TARGET_CPA)、地理位置和语言定位,以及开始和结束日期
google_ads_create_ad_group创建广告组(PAUSED)。type 接受 SEARCH_STANDARD(默认)或 DEMAND_GEN_MULTI_ASSET_AD_GROUP
google_ads_create_responsive_search_ad创建经过验证的 RSA(PAUSED)
google_ads_create_image_asset上传 PNG/JPG/GIF 图片素材(验证文件大小 ≤5MB、尺寸 ≥600×314),用于 Demand Gen 广告
google_ads_create_demand_gen_multi_asset_ad创建 Demand Gen 多素材广告(PAUSED)——在调用 API 前验证字符数和数量上限;如果 ad_group 不是 DG,则快速失败
google_ads_create_keywords创建关键字(PAUSED)
google_ads_validate_ad验证 RSA,但不创建
google_ads_enable_items启用项目(使其变为 LIVE)——需要审批
google_ads_pause_items暂停已启用的项目
google_ads_pause_keywords暂停指定关键字
google_ads_update_campaign_budget更新广告系列每日预算
跟踪与 URL
工具说明
google_ads_get_campaign_tracking获取跟踪模板和 URL 参数
google_ads_update_campaign_tracking更新跟踪模板
否定关键字
工具说明
google_ads_create_shared_set创建共享否定关键字列表
google_ads_link_shared_set将共享集合关联到广告系列
google_ads_unlink_shared_set取消共享集合与广告系列的关联
google_ads_add_shared_negatives将关键字添加到共享否定列表
google_ads_remove_shared_negatives从共享列表中移除关键字
google_ads_add_campaign_negatives添加广告系列级否定关键字
google_ads_remove_campaign_negatives移除广告系列级否定关键字
google_ads_remove_adgroup_negatives移除广告组级否定关键字
效果与报告
工具描述
google_ads_keyword_performance包含质量得分的关键词指标
google_ads_keyword_performance_by_conversion按转化操作划分的关键词指标
google_ads_ad_performance广告级效果指标
google_ads_ad_performance_by_conversion按转化操作划分的广告指标
google_ads_search_term_report搜索词查询报告
google_ads_search_term_report_by_conversion按转化操作划分的搜索词
google_ads_search_term_insights搜索词类别洞察
google_ads_search_term_insight_terms洞察类别中的搜索词
google_ads_keyword_volume关键词规划师的搜索量估算
高级功能
工具描述
google_ads_gaql_query运行原始 GAQL 查询
示例命令
# Check which account you're working with
"What Google Ads account am I connected to?"

# List campaigns
"Show me all campaigns in this account"

# Create a new campaign
"Create a Search campaign for brand terms with $50/day budget"

# Check what's pending review
"What changes are pending my review?"

# After reviewing in Google Ads UI
"Enable the approved ads in the Brand campaign"

# Performance analysis
"Show me keyword performance for the last 30 days, sorted by cost"

# Run custom GAQL
"Run a GAQL query to get all ad groups with CTR below 2%"
示例:端到端创建 Demand Gen 广告系列
# 1. Campaign: $75/day, DEMAND_GEN channel, MAXIMIZE_CONVERSIONS default,
#    targeting Alaska (21134) + Maine (21141) in English
google_ads_create_campaign({
  name: "DG - Spring Promo",
  daily_budget: 75,
  channel_type: "DEMAND_GEN",
  geo_target_ids: ["21134", "21141"],
  start_date: "2026-05-01",
  end_date: "2026-06-30"
})
# → campaign_id: 555123

# 2. Ad group: DEMAND_GEN_MULTI_ASSET_AD_GROUP
google_ads_create_ad_group({
  campaign_id: "555123",
  name: "DG AG 1",
  type: "DEMAND_GEN_MULTI_ASSET_AD_GROUP"
})
# → ad_group_id: 555456

# 3. Image assets (PNG/JPG/GIF, ≥600×314, ≤5MB). Returns {asset_id, ...}
google_ads_create_image_asset({ name: "hero-landscape", file_path: "/abs/path/hero.png" })
# → asset_id: 42001
google_ads_create_image_asset({ name: "hero-square",    file_path: "/abs/path/square.png" })
# → asset_id: 42002
google_ads_create_image_asset({ name: "logo",           file_path: "/abs/path/logo.png" })
# → asset_id: 42003

# 4. Demand Gen multi-asset ad (PAUSED). Validates char + count caps first.
google_ads_create_demand_gen_multi_asset_ad({
  ad_group_id: "555456",
  final_urls: ["https://example.com/spring"],
  business_name: "Example Org",
  call_to_action: "LEARN_MORE",
  marketing_image_asset_ids: ["42001"],          // 1.91:1 landscape, ≥1 required
  square_marketing_image_asset_ids: ["42002"],   // 1:1 optional
  logo_image_asset_ids: ["42003"],               // logo optional
  headlines: ["Spring Sale Now On", "Save 20% Today"],     // max 5, ≤40 chars each
  long_headlines: ["A longer pitch under ninety characters."], // max 5, ≤90 chars
  descriptions: ["Shop the latest looks.", "Free returns."]   // max 5, ≤90 chars each
})
# → resource_name: customers/.../adGroupAds/555456~67890000

完成全部 4 次调用后,广告系列、广告组和广告都会以 PAUSED 状态保存在您的账户中,并标记为 Claude-MM-DD-YY。请在 Google Ads 界面中检查,然后通过 google_ads_enable_items 启用。

安全功能

  1. 所有内容初始均为 PAUSED — 在您明确启用之前,不会有任何内容投放
  2. 标签跟踪 — 所有由 Claude 创建的项目都会添加 claude-pending 标签
  3. 验证 — 创建前会验证广告(标题/描述长度等)
  4. 审批提示 — 在 Claude Code 中,enable_items 工具需要明确审批
  5. 客户端隔离 — 工作目录决定使用哪个账户,从而避免不同客户端之间发生错误

添加新客户端

编辑 config.json 以添加客户端。将每个客户端映射到一个工作目录:

{
  "clients": {
    "client-slug": {
      "customer_id": "123-456-7890",
      "name": "Client Name",
      "folder": "/path/to/client/workspace"
    }
  }
}

无需重启服务 — 每次请求时都会读取配置。

故障排除

“找不到与工作目录对应的客户端”
  • 确保您位于与 clients 条目之一匹配的文件夹中
  • 检查配置中的文件夹路径是否与 config.json 中的路径完全一致
“开发者令牌尚未获批”
  • 新的开发者令牌需要获得 Google 批准
  • 等待批准期间请使用测试账户
“身份验证失败”
  • 刷新令牌可能已过期 — 请重新生成
  • 检查 client_id 和 client_secret 是否正确

许可证

MIT — 详情请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。