这是一个由FastMCP驱动的模型上下文协议(MCP)服务器,用于集成Google Ads API,并具备自动OAuth 2.0认证功能。它能将Google Ads API直接连接到Claude Desktop和其他MCP客户端,支持无缝的OAuth 2.0认证、自动令牌刷新、GAQL查询以及关键词研究等功能。
在设置MCP服务器之前,您需要:
client_secret_[长字符串].json到您的项目目录中⚠️ 重要提示
您最初将获得一个功能有限的测试令牌。测试完成后,您可以申请生产访问权限。
一旦获得批准:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX)# 克隆仓库
git clone https://github.com/yourusername/google-ads-mcp-server.git
cd google-ads-mcp-server
# 创建虚拟环境(推荐)
python3 -m venv .venv
source .venv/bin/activate # 在Windows上:.venv\Scripts\activate
# 安装依赖项
pip install -r requirements.txt
在您的项目目录中创建一个.env文件:
# 复制示例文件
cp .env.example .env
使用您的凭证编辑.env文件:
# 必需:Google Ads API开发者令牌
GOOGLE_ADS_DEVELOPER_TOKEN=your_developer_token_here
# 必需:OAuth凭证JSON文件的路径(从Google Cloud下载)
GOOGLE_ADS_OAUTH_CONFIG_PATH=/full/path/to/your/client_secret_file.json
示例.env文件:
GOOGLE_ADS_DEVELOPER_TOKEN=ABCDEFG1234567890
GOOGLE_ADS_OAUTH_CONFIG_PATH=/Users/john/google-ads-mcp/client_secret_138737274875-abc123.apps.googleusercontent.com.json
找到您的Claude Desktop配置文件:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
Windows:
%APPDATA%\Claude\claude_desktop_config.json
编辑配置文件并添加您的Google Ads MCP服务器:
{
"mcpServers": {
"google-ads": {
"command": "/full/path/to/your/project/.venv/bin/python",
"args": [
"/full/path/to/your/project/server.py"
]
}
}
}
实际示例:
{
"mcpServers": {
"google-ads": {
"command": "/Users/marble-dev-01/workspace/google_ads_with_fastmcp/.venv/bin/python",
"args": [
"/Users/marble-dev-01/workspace/google_ads_with_fastmcp/server.py"
]
}
}
}
⚠️ 重要提示
- 所有文件位置使用绝对路径
- 在Windows上,路径中使用正斜杠
/或双反斜杠\\- 将
your_developer_token_here替换为您的实际开发者令牌
关闭并重新启动Claude Desktop以加载新配置。
"列出我所有的Google Ads账户"
认证完成后,您应该看到:
google_ads_token.json文件为了提供更简单的设置体验,我们提供了现成的安装程序:
👉 下载安装程序 - https://gomarble.ai/mcp
"列出我所有的Google Ads账户"
"显示我的账户详细信息以及哪些账户有活跃的广告系列"
"显示账户1234567890在过去30天内的广告系列效果"
"获取上周所有广告系列的转化数据"
"哪些广告系列的每次转化成本最高?"
"使用账户1234567890为“数字营销”生成关键词想法"
"查找“AI自动化”的关键词机会并提供搜索量数据"
"为页面https://example.com/services研究关键词"
"为账户1234567890运行此GAQL查询:
SELECT campaign.name, metrics.clicks, metrics.cost_micros
FROM campaign
WHERE segments.date DURING LAST_7_DAYS"
"获取关键词效果数据:
SELECT ad_group_criterion.keyword.text, metrics.ctr, metrics.average_cpc
FROM keyword_view
WHERE metrics.impressions > 100"
SELECT
campaign.id,
campaign.name,
metrics.clicks,
metrics.impressions,
metrics.cost_micros,
metrics.conversions,
metrics.conversions_value
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
ORDER BY metrics.cost_micros DESC
SELECT
campaign.name,
ad_group_criterion.keyword.text,
ad_group_criterion.keyword.match_type,
metrics.ctr,
metrics.average_cpc,
metrics.quality_score
FROM keyword_view
WHERE segments.date DURING LAST_7_DAYS
AND metrics.impressions > 100
ORDER BY metrics.conversions DESC
SELECT
campaign.name,
segments.device,
metrics.clicks,
metrics.cost_micros,
metrics.conversions
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
AND campaign.status = 'ENABLED'
| 工具 | 描述 | 参数 | 示例用法 |
|---|---|---|---|
list_accounts |
列出所有可访问的Google Ads账户 | 无 | "列出我所有的Google Ads账户" |
run_gaql |
执行带有自定义格式的GAQL查询 | customer_id, query, manager_id(可选) |
"显示账户1234567890的广告系列效果" |
run_keyword_planner |
生成带有指标的关键词想法 | customer_id, keywords, manager_id, page_url, 日期范围选项 |
"为“数字营销”生成关键词想法" |
⚠️ 重要提示
所有工具都会自动处理认证 - 无需提供令牌参数!
google-ads-mcp-server/
├── server.py # 主MCP服务器
├── oauth/
│ ├── __init__.py # 包初始化
│ └── google_auth.py # OAuth认证逻辑
├── google_ads_token.json # 自动生成的令牌存储(git忽略)
├── client_secret_[long-string].json # 您的OAuth凭证(git忽略)
├── .env # 环境变量(git忽略)
├── .env.example # 环境模板
├── .gitignore # Git忽略文件
├── requirements.txt # Python依赖项
├── LICENSE # MIT许可证
└── README.md # 此文件
google_ads_token.json文件中.env文件中# 为敏感文件设置安全权限
chmod 600 .env
chmod 600 google_ads_token.json
chmod 600 client_secret_*.json
.env文件| 问题 | 症状 | 解决方案 |
|---|---|---|
| 未找到令牌 | "正在启动OAuth流程"消息 | ✅ 首次设置正常 - 完成浏览器认证 |
| 令牌刷新失败 | "刷新令牌失败"错误 | ✅ 删除google_ads_token.json并重新认证 |
| OAuth流程失败 | 浏览器错误或无响应 | 检查凭证文件路径和互联网连接 |
| 权限被拒绝 | 浏览器中显示"访问被拒绝" | 确保Google账户具有Google Ads访问权限 |
| 问题 | 症状 | 解决方案 |
|---|---|---|
| 缺少环境变量 | "环境变量未设置" | 检查.env文件和Claude配置的env部分 |
| 文件未找到 | "FileNotFoundError" | 验证配置中的绝对路径 |
| 模块导入错误 | "ModuleNotFoundError" | 运行pip install -r requirements.txt |
| Python路径问题 | "命令未找到" | 使用Python可执行文件的绝对路径 |
| 问题 | 症状 | 解决方案 |
|---|---|---|
| 服务器未连接 | 没有可用的Google Ads工具 | 重启Claude Desktop,检查配置文件语法 |
| 无效的JSON配置 | Claude启动错误 | 验证配置文件中的JSON语法 |
| 权限错误 | 启动时显示"权限被拒绝" | 检查文件权限和路径 |
| 问题 | 症状 | 解决方案 |
|---|---|---|
| 无效的客户ID | "未找到客户" | 使用10位格式,不带连字符:1234567890 |
| API配额超出 | "配额超出"错误 | 等待配额重置或请求增加 |
| 无效的开发者令牌 | "认证失败" | 在Google Ads API中心验证令牌 |
| GAQL语法错误 | "无效查询" | 检查GAQL语法和字段名称 |
启用详细日志记录以进行故障排除:
# 在server.py中添加以进行调试
import logging
logging.basicConfig(level=logging.DEBUG)
如果您遇到问题:
对于Web部署或远程访问:
# 以HTTP模式启动服务器
python3 server.py --http
Claude Desktop的HTTP配置:
{
"mcpServers": {
"google-ads": {
"url": "http://127.0.0.1:8000/mcp"
}
}
}
在oauth/google_auth.py中修改令牌存储位置:
# 自定义令牌文件位置
def get_token_path():
return "/custom/secure/path/google_ads_token.json"
用于管理MCC下的多个账户:
# 添加到.env文件
GOOGLE_ADS_LOGIN_CUSTOMER_ID=123-456-7890
我们欢迎贡献!以下是开始的步骤:
# 分叉并克隆仓库
git clone https://github.com/yourusername/google-ads-mcp-server.git
cd google-ads-mcp-server
# 创建开发环境
python3 -m venv .venv
source .venv/bin/activate
# 安装依赖项
pip install -r requirements.txt
# 设置开发环境
cp .env.example .env
# 将您的开发凭证添加到.env文件中
git checkout -b feature/amazing-featuregit commit -m '添加惊人的功能'git push origin feature/amazing-feature# 测试认证流程
python3 server.py --test-auth
# 测试API连接性
python3 -c "
from oauth.google_auth import get_oauth_credentials
creds = get_oauth_credentials()
print('✅ 认证成功!')
"
# 使用Claude Desktop进行测试
# 将您的服务器添加到Claude配置中并测试各种命令
# 在Google Cloud Console中监控使用情况
# 转到API和服务 → 配额
# 搜索“Google Ads API”以查看当前使用情况
本项目采用MIT许可证 - 有关详细信息,请参阅LICENSE文件。
Copyright (c) 2025 Google Ads MCP Server Contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
为MCP社区用心打造 ❤️
将您的Google Ads数据直接连接到AI助手,通过自然语言对话解锁强大的广告洞察。
👉 Slack社区 - AI in Ads
👉 Facebook Ads MCP - Facebook Ads MCP