一个基于FastMCP的模型上下文协议服务器,用于与Google Ads API集成,并自动进行OAuth 2.0认证
直接连接Google Ads API到Claude Desktop和其他MCP客户端,具有无缝的OAuth 2.0认证、自动令牌刷新、GAQL查询和关键词研究能力。
<video controls width="1920" height="512" src="https://github.com/user-attachments/assets/1dc62f47-ace4-4dcf-8009-593ef7194b43">您的浏览器不支持视频标签。</video>
为了更简单的设置体验,我们提供了现成的安装程序:
👉 下载安装程序 - https://gomarble.ai/mcp
👉 Slack 社区 - AI in Ads
👉 Facebook Ads MCP - Facebook Ads MCP
| 工具 | 描述 | 参数 | 示例用法 |
|---|---|---|---|
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, 日期范围选项 | "为'digital marketing'生成关键词建议" |
注意: 所有工具都会自动处理认证 - 不需要提供令牌参数!
在设置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=/完整路径/到你的/client_secret_file.json
示例.env文件:
GOOGLE_A_开发人员_TOKEN=ABCDEFG1234567890
GOOGLE_A_开发人员_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": "/完整路径/到你的/project/.venv/bin/python",
"args": [
"/完整路径/到你的/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"
]
}
}
}
重要:
/或双反斜杠\\在路径中your_developer_token_here替换为您实际的开发者令牌关闭并重新启动Claude Desktop以加载新的配置。
"列出我所有的Google Ads账户"
认证后,您应该看到:
google_ads_token.json文件"列出我所有的Google Ads账户"
"显示账户详情以及哪些账户有活动的活动"
"显示账户1234567890在过去30天内的活动表现"
"获取所有活动在过去一周的转化数据"
"哪些活动的每次转化成本最高?"
"为'digital marketing'生成关键词建议,使用账户1234567890"
"查找带有搜索量数据的'AI自动化'关键词机会"
"研究页面https://example.com/services的关键词"
"运行此GAQL查询,针对账户1234567890:
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'
google-ads-mcp-server/
├── server.py # 主MCP服务器
├── oauth/
│ ├── __init__.py # 包初始化
│ └── google_auth.py # OAuth认证逻辑
├── google_ads_token.json # 自动生成的令牌存储(已忽略)
├── client_secret_[长字符串].json # 您的OAuth凭证(已忽略)
├── .env # 环境变量(已忽略)
├── .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