Google Ads API集成工具

通过自然语言控制Google Ads账户的自托管集成工具,提供权限控制和实时报告功能。

  • by optiwebopz
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 optiwebopz/optimcp

使用说明

Google Ads MCP-Claude Integration for Google Ads API第23.2版

通过Claude控制您的整个Google Ads帐户——用简单的英语。 暂停活动、提取报告、添加关键字、创建广告。内置权限控制,未经您的批准,任何内容都不会运行。 自行托管在自己的服务器上。没有第三方中继。没有数据离开您的基础设施。

谷歌广告MCP 是自托管的 模型上下文协议 为Claude提供对Google Ads API v23.2的直接、安全访问的服务器。由...建造 Opti Webopz.


💬 你能对克劳德说什么

一旦连接,Claude就会理解自然语言——不需要ID:

"Pause all campaigns spending over $50/day in My Client Account"
"Show me the performance of campaign Summer Sale for last 30 days"
"Add these 10 keywords to ad group Branded - Exact in campaign Brand UK"
"Create a new Search campaign called Winter Promo with a $30 daily budget"
"Show me search terms that triggered ads in campaign Google Shopping this month"
"What is the CTR on our top 5 campaigns this month?"
"Create a Responsive Search Ad in ad group Homepage with these headlines and descriptions"

内置 提示助手仪表板 允许您按名称浏览帐户、广告系列和广告组——单击任何提示将其直接复制到Claude中。没有ID,没有复制粘贴。


🔐 权限控制--v2.1.0中的新增功能

在Claude执行任何写入操作之前,服务器会检查您的权限设置。您可以从仪表板上精确控制Claude可以做什么,每个工具都有一个切换。

它是如何工作的:

  • 读取工具始终处于打开状态 --无法禁用list、get和所有报表工具
  • 写入工具可单独切换 --17个写/修改工具,每个都有自己的开/关开关
  • 突出显示危险工具 --remove_campaign、remove_ad_group、remove_keyword以红色显示
  • 当工具被禁用时 --克劳德收到了一个明确的信息: “工具'remove_campaign'当前已禁用。在要求Claude使用之前,请在仪表板的“权限控制”下启用它。”
  • 克劳德不会尝试变通方法 --它将解释工具已关闭,并要求您启用它
始终打开(只读) 可切换(写入)
list_accounts、get_account、run_gaql create_campaign、update_campaigns
get_count_summary、get_campaign_report pause_campaign、enable_campaigns
get_ad_group_report、get_keyword_report set_campaign_budget, remove_campaign ⚠️
get_report,get_search_terms create_ad_group,update_ad_group
list_campaigns、get_campaign pause_ad_group、enable_ad_group
list_ad-groups,list_ads remove_adgroup ⚠️, create_rsa
update_ad_status,添加关键字
update_keyword, remove_关键字 ⚠️
添加_否定_关键字

⚠️ 危险工具(拆卸操作)在仪表板上突出显示,可以单独禁用。


📦 包括两个版本

版本 在 运行时部署 最适合
gads-mcp-php/ Hostinger/SiteGround PHP 8.0+ 共享主机——无需SSH
gads-mcp/ DigitalOcean/VPS Node.js 18+ 持久服务器,实时仪表板

两个版本都有 相同的工具和相同的权限控制 --30个工具,其中17个可单独切换。


🛠️ 30个工具——完整参考

帐户(3个工具-始终打开)

工具 它做什么
list_accounts 列出MCC下的所有客户帐户,包括货币、时区和状态
get_account 获取特定帐户的完整详细信息
run_gaql 执行任何原始GAQL(谷歌广告查询语言)查询

报告(6个工具-始终打开)

工具 它做什么
get_account_summary 账户级别总计——展示次数、点击次数、成本、点击率、转化率、ROAS
get_campaign_report 按成本排序的活动绩效
get_ad_group_report 广告组性能指标
get_keyword_report 带有质量分数的关键字指标
get_ad_report 带有标题预览的广告效果
get_search_terms 触发广告的实际搜索查询

活动(8个工具——6个可切换)

工具 可切换 它的作用
list_campaigns 否 所有有状态、预算、出价的活动
get_campaign 否 完整的活动详细信息
create_campaign ✅ 是 创建搜索活动--默认为PAUSED
update_campaign ✅ 是 更新活动名称或状态
pause_campaign ✅ 是 立即暂停直播活动
enable_campaign ✅ 是 启用暂停的活动
set_campaign_budget ✅ 是 更新每日预算
remove_campaign ✅ 是⚠️ 永久删除活动

广告组(6个工具——5个可切换)

工具 可切换 它的作用
list_ad_groups 否 所有有CPC出价的广告组
create_ad_group ✅ 是 创建新的广告组
update_ad_group ✅ 是 更新名称、状态或CPC出价
pause_ad_group ✅ 是 暂停广告组
enable_ad_group ✅ 是 启用广告组
remove_ad_group ✅ 是⚠️ 删除广告组

广告(3个工具——2个可切换)

工具 可切换 它的作用
list_ads 否 所有带有标题、描述、状态的广告
create_rsa ✅ 是 创建响应式搜索广告——默认为PAUSED
update_ad_status ✅ 是 将广告设置为启用、暂停或删除

关键词(4个工具——全部可切换)

工具 可切换 它的作用
add_keywords ✅ 是 添加广度/短语/精确关键字
update_keyword ✅ 是 更新关键字状态或CPC出价
remove_keyword ✅ 是⚠️ 删除关键字
add_negative_keywords ✅ 是 在活动或广告组级别添加负面内容

⚠️ 所有活动、广告组和广告 创建默认为PAUSED除非你明确地启用它,否则任何东西都不会花钱。


🖥️ 仪表板——里面有什么

这两个版本都包含 PIN保护的web仪表板:

面板 它的作用
OAuth连接 令牌状态、到期环、上次刷新时间
API版本状态 运行版本与最新版本,日落日期警告
权限控制 每个工具的开/关开关——17个写入工具,突出显示危险工具
快速助手 浏览帐户→ 活动→ 按名称排列广告组,复制克劳德提示
活动表 每个活动的30天指标——印象、点击、成本、点击率、转化率
MCP令牌轮换 生成并保存新令牌
工具调用统计 24小时总计、错误计数、最常用工具
最近日志 最近50次工具调用,带有时间戳和状态

⚙️ 先决条件——谷歌凭据

部署前需要5个凭据。按以下顺序排列:

第一步——谷歌云项目

  1. 首选 console.cloud.google.com
  2. 创建一个新项目——将其命名为“谷歌广告MCP”或类似名称
  3. 首选 API和服务→ 图书馆 → 搜索 谷歌广告API → click 启用

步骤2-OAuth 2.0凭据

  1. 首选 API和服务→ 凭证→ 创建凭证→ OAuth 2.0客户端ID
  2. 如果提示进入同意屏幕:用户类型=外部→ 填写应用程序名称→ 保存并继续
  3. 应用程序类型: Web应用程序
  4. 添加授权重定向URI:
    • PHP版本: https://yourdomain.com/gads-mcp/auth/oauth_setup.php
    • Node.js版本: http://localhost:8080/callback
  5. 单击“创建”→ copy 客户端ID 和 客户端密钥

第3步——开发者代币

  1. 登录 谷歌广告管理器(MCC)帐户
  2. 单击扳手图标(工具)→ API中心
  3. 复制您的 开发者令牌
  4. 申请 标准访问 如果显示“基本访问”,则“基本”仅适用于测试帐户

步骤4-MCC帐户ID

  • 显示在Google广告管理器的右上角(格式: 123-456-7890)
  • 删除破折号→ 1234567890 --这是你的 GOOGLE_ADS_MCC_ID

步骤5--刷新令牌

通过运行OAuth设置脚本获得——在下面的每个部署部分都有介绍。


🚀 部署——PHP(Hostinger/SiteGround)

文件结构

public_html/gads-mcp/
├── mcp.php                 ← MCP endpoint (GET public, POST requires auth)
├── config.php              ← Fill in your credentials here
├── .htaccess               ← Security + routing rules
├── auth/
│   └── oauth_setup.php     ← Run ONCE to get refresh token, then DELETE
├── lib/
│   ├── auth.php            ← Token auth — LiteSpeed/Hostinger compatible
│   ├── permissions.php     ← Per-tool permission manager
│   ├── oauth.php           ← File-cached OAuth token manager
│   ├── gads.php            ← Google Ads REST API v23.2 client
│   ├── response.php        ← JSON helpers + tool manifest
│   └── logger.php          ← File logger
├── tools/                  ← 6 tool files (all 30 tools)
├── dashboard/
│   └── index.php           ← Full dashboard with permission controls
└── logs/                   ← YOU MUST CREATE THIS + logs/rate/ (chmod 755)
    ├── .permissions.json   ← Auto-created on first permission save
    └── gads-mcp.log        ← Auto-created on first tool call

一步一步

1.上传文件

在Hostinger hPanel→ 文件管理器,创建文件夹 public_html/gads-mcp/.上传所有内容 gads-mcp-php/ 进入它。

2.创建日志文件夹

内部 public_html/gads-mcp/,创建:

  • logs/ --将权限设置为 755
  • logs/rate/ --将权限设置为 755

3.获取刷新令牌

在谷歌云控制台中,添加此授权重定向URI:

https://yourdomain.com/gads-mcp/auth/oauth_setup.php

在浏览器中访问:

https://yourdomain.com/gads-mcp/auth/oauth_setup.php

点击 与谷歌授权 → 使用您的MCC帐户登录→ 复制 GOOGLE_REFRESH_TOKEN 显示在屏幕上。

🔴 删除 auth/oauth_setup.php 复制令牌后立即执行。 在文件管理器中:选择它→ 删除。

4.填写config.php

在文件管理器中,单击鼠标右键 config.php → Edit:

define('MCP_SECRET_TOKEN',       'YOUR_64_CHAR_TOKEN');        // openssl rand -hex 32
define('DASHBOARD_PIN',          'YOUR_STRONG_PASSPHRASE');
define('GOOGLE_CLIENT_ID',       'xxxxx.apps.googleusercontent.com');
define('GOOGLE_CLIENT_SECRET',   'GOCSPX-xxxxx');
define('GOOGLE_REFRESH_TOKEN',   '1//xxxxxxxx');               // from step 3
define('GOOGLE_ADS_DEV_TOKEN',   'xxxxx');
define('GOOGLE_ADS_MCC_ID',      '1234567890');                // digits only, no dashes
define('GOOGLE_ADS_API_VERSION', 'v23.2');

5.测试端点

在浏览器中访问——应返回包含30个工具的JSON工具清单:

https://yourdomain.com/gads-mcp/mcp.php

6.打开仪表板并配置权限

https://yourdomain.com/gads-mcp/dashboard/

输入您的 DASHBOARD_PIN首选 权限控制 → 关闭任何你不想让克劳德使用的工具。更改会立即保存。


🚀 部署——Node.js(DigitalOcean/VPS)

先决条件

  • Ubuntu 22.04 Droplet——最低512MB RAM(基本版每月6美元)
  • 指向Droplet IP的域或子域
  • SSH访问

一步一步

1.上传文件到服务器

scp -r gads-mcp/ root@YOUR_DROPLET_IP:/root/gads-mcp

2.SSH并运行安装脚本

ssh root@YOUR_DROPLET_IP
cd /root/gads-mcp
chmod +x setup-digitalocean.sh
./setup-digitalocean.sh

这将安装Node.js 20,PM2,创建 logs/ 目录,并启动服务器。

3.获取刷新令牌

npm run auth

打开它打印的URL→ 使用您的MCC Google帐户登录→ 将身份验证代码粘贴回去→ 复制 GOOGLE_REFRESH_TOKEN 打印在终端上。

4.创建并填写.env

cp .env.example .env
nano .env
MCP_SECRET_TOKEN=YOUR_64_CHAR_TOKEN
DASHBOARD_PIN=YOUR_STRONG_PASSPHRASE
GOOGLE_CLIENT_ID=xxxxx.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=GOCSPX-xxxxx
GOOGLE_REFRESH_TOKEN=1//xxxxxxxx
GOOGLE_ADS_DEV_TOKEN=xxxxx
GOOGLE_ADS_MCC_ID=1234567890
GOOGLE_ADS_API_VERSION=v23.2
PORT=3848
MCP_RATE_LIMIT=60

5.从PM2开始

pm2 start ecosystem.config.js
pm2 save
pm2 startup
# Run the command it prints to enable auto-start on reboot

6.设置nginx+SSL

cp nginx/gads-mcp.conf /etc/nginx/sites-available/
nano /etc/nginx/sites-available/gads-mcp.conf   # replace YOUR_DOMAIN with your domain
ln -s /etc/nginx/sites-available/gads-mcp.conf /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
apt install certbot python3-certbot-nginx -y
certbot --nginx -d gads-mcp.yourdomain.com

7.测试端点

curl https://gads-mcp.yourdomain.com/mcp
# Should return tool manifest JSON

8.打开仪表板并配置权限

https://gads-mcp.yourdomain.com/dashboard

输入您的 DASHBOARD_PIN首选 权限控制 → 根据需要打开或关闭写入工具。


🔗 连接克劳德

克劳德桌面(Mac/Windows)

打开配置文件:

  • 雨衣: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 窗户: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "gads-mcp": {
      "transport": {
        "type": "http",
        "url": "https://yourdomain.com/gads-mcp/mcp.php",
        "headers": {
          "X-MCP-Token": "YOUR_MCP_SECRET_TOKEN"
        }
      }
    }
  }
}

对于DigitalOcean,将URL更改为 https://gads-mcp.yourdomain.com/mcp.

Save → 完全退出克劳德桌面→ 重新开放。

克劳德代码(Mac/Linux)

claude mcp add --transport http gads-mcp \
  https://yourdomain.com/gads-mcp/mcp.php \
  --header "Authorization: Bearer YOUR_MCP_SECRET_TOKEN"

克劳德代码(需要Windows桥接器)

Windows上的Claude Code在HTTP传输方面存在已知的标头问题。使用桥接脚本:

  1. 使用桥从 OptiMCP桥接脚本 --更新 TOKEN 和 HOSTNAME
  2. 添加 .claude.json:
{
  "mcpServers": {
    "gads-mcp": {
      "command": "node",
      "args": ["C:\\Users\\YourName\\gads-bridge.js"]
    }
  }
}

🔒 安全

控制 实施
MCP认证 X-MCP-Token 和 Authorization: Bearer 两人都接受了
LiteSpeed修复 getallheaders() 绕过Hostinger/LiteSpeed标头剥离
GET public 工具清单不需要令牌(兼容Claude Code健康检查)
POST保护 所有30个工具调用都需要有效令牌
权限控制 每个工具启用/禁用--17个可单独控制的写入工具
被阻止的工具响应 返回403,并向Claude发送明确消息,从不默默失败
速率限制 每个IP需要60个/60s(两个版本)
错误处理 error_reporting(0) 防止PHP警告损坏JSON
仪表板 单独的PIN,定时安全比较
凭据 从未在工具响应中返回——OAuth令牌保持在服务器端
PAUSED默认值 所有创建操作默认为PAUSED——没有意外花费
危险工具 仪表板中突出显示的remove_campaign、remove_ad_group、remove_keyword

📋 上线检查表

凭证

  • []已填写所有5个Google凭据,不保留任何占位符值
  • []MCC ID仅为数字,无破折号(123-456-7890 → 1234567890)
  • []开发人员令牌为 标准访问 (基本=仅测试帐户-将在真实帐户上失败)
  • [ ] GOOGLE_ADS_API_VERSION = v23.2
  • [ ] MCP_SECRET_TOKEN 是64个字符(openssl rand -hex 32)
  • [ ] DASHBOARD_PIN set——仪表板显示PIN登录屏幕

服务器

  • []仪表板OAuth面板显示 连接 带有令牌到期倒计时
  • [ ] oauth_setup.php 使用后立即从服务器中删除
  • []GET端点返回列出所有30个工具的工具清单
  • [ ] logs/ 和 logs/rate/ 文件夹存在并且可写(PHP版本)
  • []PM2显示 gads-mcp 作为 在线的 (Node.js版本)

权限

  • []已加载仪表板权限控制面板--所有17个写入工具都可见
  • []审查了危险工具(移除操作)——如果不需要,请禁用
  • []测试:让Claude在禁用活动的情况下“删除活动”——应该会收到屏蔽消息

克劳德连接

  • [ ] claude mcp list 显示✓ 连接
  • []“列出所有帐户”返回您在Claude中的MCC客户帐户
  • []仪表板中的Prompt Helper按名称显示您的广告系列

📁 存储库结构

optimcp/
├── gads-mcp-php/              # Google Ads MCP — PHP (Hostinger / SiteGround)
│   ├── mcp.php                # Main endpoint
│   ├── config.php             # Credentials template
│   ├── lib/
│   │   ├── permissions.php    # Per-tool permission system
│   │   ├── auth.php           # LiteSpeed-compatible token auth
│   │   ├── oauth.php          # File-cached token manager
│   │   └── gads.php           # Google Ads REST API client
│   ├── tools/                 # 30 tools across 6 files
│   └── dashboard/index.php    # Full dashboard with permission controls
└── gads-mcp/                  # Google Ads MCP — Node.js (DigitalOcean)
    ├── server.js              # Main server (port 3848)
    ├── lib/
    │   ├── permissions.js     # Per-tool permission system
    │   └── ...
    ├── dashboard/
    │   ├── index.html         # Dashboard UI
    │   └── routes.js          # Dashboard API (permissions, prompt helper)
    └── tools/                 # 30 tools across 6 files

🏗️ 由...建造

Opti Webopz --专门从事WordPress、WooCommerce和人工智能自动化的全方位服务数字机构。

贡献者: 穆罕默德·祖迈尔·库雷希·沙希尔·穆斯塔法


📄 许可证

MIT——免费使用、修改和分发。看 许可证.


OptiMCP套件的一部分——Claude的自托管MCP服务器。谷歌广告MCP v2.1.0·Node.js v1.2.0