谷歌广告MCP
MCP服务器,用于Google Ads关键字规划、搜索活动管理、报告和基本优化工作流程。
此服务器在stdio上运行,旨在由MCP客户端(如Claude Cowork)或支持本地stdio MCP服务器的任何其他客户端启动。
它做什么
- 关键字发现和历史指标
- 关键字集预测
- 搜索活动创建和更新
- 广告组和关键字管理
- 在活动、广告组、共享列表和帐户级别进行负面关键字管理
- 响应式搜索广告创建和替换样式更新
- 搜索词和绩效报告
变异工具返回结构化结果。报告工具返回markdown表。
需求
- python
>=3.11 uv- 启用谷歌广告API的谷歌云项目
- Google Ads API证书
- Google Ads客户ID
- 可选MCC登录客户ID
配置
复制 .env.example 到 .env 并填写:
GOOGLE_ADS_DEVELOPER_TOKEN=
GOOGLE_ADS_CLIENT_ID=
GOOGLE_ADS_CLIENT_SECRET=
# Optional at startup if you will use the `authorize` MCP tool
GOOGLE_ADS_REFRESH_TOKEN=
GOOGLE_ADS_CUSTOMER_ID=
# GOOGLE_ADS_LOGIN_CUSTOMER_ID=如何获得代币
在OAuth模式下启动服务器需要四个值,完成授权后需要第五个值:
GOOGLE_ADS_DEVELOPER_TOKENGOOGLE_ADS_CLIENT_IDGOOGLE_ADS_CLIENT_SECRETGOOGLE_ADS_CUSTOMER_ID
首次授权后,您还将获得:
GOOGLE_ADS_REFRESH_TOKEN
可选:
GOOGLE_ADS_LOGIN_CUSTOMER_ID用于MCC/经理帐户访问
1.获取Google Ads开发者令牌
在您的Google Ads帐户中:
- 打开
Tools and settings. - 打开
API Center. - 复制您的开发人员令牌。
使用该值 GOOGLE_ADS_DEVELOPER_TOKEN.
2.创建OAuth客户端ID和密钥
在Google Cloud中:
- 创建或选择Google Cloud项目。
- 为该项目启用Google Ads API。
- 打开
APIs & Services->Credentials. - 创建OAuth客户端ID。
- 对于本地使用,桌面应用程序客户端通常是最简单的选择。
- 复制客户端ID和客户端密钥。
将这些值用于:
GOOGLE_ADS_CLIENT_IDGOOGLE_ADS_CLIENT_SECRET
3.完成OAuth授权
对于OAuth,服务器现在可以从以下步骤开始:
GOOGLE_ADS_CLIENT_IDGOOGLE_ADS_CLIENT_SECRETGOOGLE_ADS_DEVELOPER_TOKENGOOGLE_ADS_CUSTOMER_ID
MCP服务器运行后,调用:
authorize该工具将:
- 在浏览器中打开Google授权URL
- 完成本地回调流
- 保存
GOOGLE_ADS_REFRESH_TOKEN进入你的.env - 使未来的MCP运行自动使用保存的令牌
4.查找客户ID
GOOGLE_ADS_CUSTOMER_ID:服务器应操作的Google Ads帐户GOOGLE_ADS_LOGIN_CUSTOMER_ID:如果您使用的是MCC,则通过经理帐户进行身份验证
您可以从Google Ads UI复制这些内容。服务器接受带或不带破折号的ID,并在内部对其进行规范化。
示例 .env
GOOGLE_ADS_DEVELOPER_TOKEN=your-developer-token
GOOGLE_ADS_CLIENT_ID=your-oauth-client-id
GOOGLE_ADS_CLIENT_SECRET=your-oauth-client-secret
# Optional until you run the `authorize` tool
GOOGLE_ADS_REFRESH_TOKEN=your-refresh-token
GOOGLE_ADS_CUSTOMER_ID=1234567890
GOOGLE_ADS_LOGIN_CUSTOMER_ID=0987654321安装依赖项:
uv sync在本地运行:
uv run google-ads-mcp如果您正在使用OAuth并且尚未授权,请启动MCP服务器并调用 authorize.
Claude Cowork/MCP客户端设置
如果您的MCP客户端支持带有环境变量的stdio服务器,请使用以下命令配置此仓库:
{
"mcpServers": {
"google-ads": {
"command": "uv",
"args": ["run", "google-ads-mcp"],
"cwd": "/absolute/path/to/google-ads",
"env": {
"GOOGLE_ADS_DEVELOPER_TOKEN": "your-developer-token",
"GOOGLE_ADS_CLIENT_ID": "your-client-id",
"GOOGLE_ADS_CLIENT_SECRET": "your-client-secret",
"GOOGLE_ADS_REFRESH_TOKEN": "your-refresh-token",
"GOOGLE_ADS_CUSTOMER_ID": "1234567890",
"GOOGLE_ADS_LOGIN_CUSTOMER_ID": "0987654321"
}
}
}
}如果您的客户端自动从repo加载环境变量,则可以省略 env 阻止并依赖本地 .env 文件代替。
笔记:
cwd应该指向此存储库根。GOOGLE_ADS_CUSTOMER_ID和GOOGLE_ADS_LOGIN_CUSTOMER_ID可以包含或省略破折号;服务器将它们标准化。- 对于经理帐户访问权限,请设置
GOOGLE_ADS_LOGIN_CUSTOMER_ID.
文件
.
├── .env.example
├── pyproject.toml
├── README.md
├── src/google_ads_mcp/
│ ├── client.py
│ ├── config.py
│ ├── formatters.py
│ ├── models.py
│ └── server.py
├── tests/
│ ├── test_client.py
│ └── test_server.py
└── uv.lock文件摘要:
src/google_ads_mcp/server.py:FastMCP服务器和工具注册src/google_ads_mcp/client.py:Google Ads API包装器和变异/报告逻辑src/google_ads_mcp/models.py:类型化请求和结构化响应模型src/google_ads_mcp/formatters.py:报表工具的markdown格式src/google_ads_mcp/config.py:环境加载和验证tests/test_client.py:请求构造和客户端行为测试tests/test_config.py:环境加载和OAuth引导测试tests/test_server.py:MCP工具注册和输出形状测试
工具
认证
check_auth_statusauthorizereauthorize
关键词规划
generate_keyword_ideasget_keyword_historical_metricsgenerate_keyword_forecast
活动结构
create_search_campaignupdate_search_campaignset_campaign_geo_targetsset_campaign_ad_scheduleset_campaign_device_bid_adjustmentslist_negative_keywords_in_campaignadd_negative_keywords_to_campaignupdate_negative_keywords_in_campaignremove_negative_keywords_from_campaigncreate_ad_groupupdate_ad_groupadd_keywords_to_ad_groupupdate_keywordsremove_keywordslist_negative_keywords_in_ad_groupadd_negative_keywords_to_ad_groupupdate_negative_keywords_in_ad_groupremove_negative_keywords_from_ad_group
共享负面清单
create_shared_negative_keyword_listupdate_shared_negative_keyword_listlist_shared_negative_keyword_listslist_keywords_in_shared_negative_listadd_keywords_to_shared_negative_listremove_keywords_from_shared_negative_listapply_shared_negative_keyword_list_to_campaignsremove_shared_negative_keyword_list_from_campaignsget_account_negative_keyword_listapply_shared_negative_keyword_list_to_accountremove_shared_negative_keyword_list_from_account
广告
create_responsive_search_adupdate_responsive_search_ad
活动资产
create_campaign_sitelink_assetcreate_campaign_callout_assetcreate_campaign_structured_snippet_assetcreate_campaign_call_asset
转化跟踪
create_conversion_actionupdate_conversion_action
报告
get_search_term_reportget_performance_report
安全须知
- 此服务器执行实时Google广告突变。
- 新的广告系列、广告组、关键字和注册系统管理人默认为
PAUSED除非你明确要求ENABLED. - 活动资产和转换操作是持久的Google广告资源。将其视为影响生产的操作。
- RSA创意更新被实现为替换和删除,因为Google Ads将大多数RSA创意字段视为不可变的。
测试
使用以下工具运行测试:
uv run python -m unittest discover -s tests -v