OpenClaw + Google Ads MCP 完整設定教學
使用 cohnen/mcp-google-ads(自架 GitHub MCP)搭配 OpenClaw
最後更新: 2026 年 3 月
方案: 自架 MCP Server(GitHub 開源) — 非 Adspirer、非 AdWhiz 託管服務
目標平台: OpenClaw + Claude Code 整合
目錄
- 架構總覽
- 事前準備清單
- 第一步:Google Cloud Console 設定
- 第二步:取得 Google Ads Developer Token
- 第三步:下載安裝 MCP Server
- 第四步:設定環境變數
- 第五步:接入 OpenClaw
- 第六步:接入 Claude Code
- 第七步:測試連線
- ClawHub 上最佳 Google Ads 相關 Skill
- Claude Code 可直接貼上使用的 Prompt
- 疑難排解
1. 架構總覽
你(對話) ──► OpenClaw / Claude Code
│
▼
MCP Protocol(stdio)
│
▼
cohnen/mcp-google-ads(Python)
│
▼
Google Ads API v17+
│
▼
你的 Google Ads 帳戶
為什麼選自架方案而非託管服務?
- 完全掌控 — 跑在你自己的機器上,不經過任何第三方代理
- 無需中間人 API Key — 直接使用 Google Ads API 憑證
- 開源(MIT 授權) — 每一行程式碼都可審計
- 5 個強力工具 —
list_accounts、execute_gaql_query、get_campaign_performance、get_ad_performance、run_gaql
可用工具一覽
| 工具名稱 | 功能說明 | 必要參數 |
|---|---|---|
list_accounts |
列出所有可存取的 Google Ads 帳戶 | 無 |
execute_gaql_query |
執行 GAQL 查詢 | 帳戶 ID + GAQL 語句 |
get_campaign_performance |
取得廣告活動績效數據 | 帳戶 ID + 日期範圍 |
get_ad_performance |
廣告素材效果深度分析 | 帳戶 ID + 日期範圍 |
run_gaql |
執行任意 GAQL 查詢並格式化輸出 | 帳戶 ID + GAQL + 格式(table/JSON/CSV) |
2. 事前準備清單
開始前請確認你已具備:
- Python 3.11+(執行
python3 --version確認) - Node.js(執行
node --version確認) - Git(執行
git --version確認) - Google Ads 帳戶(有正在運行的廣告活動,或至少有存取權)
- Google Cloud 專案(或有能力建立一個)
- OpenClaw 已安裝在你的電腦上(或已安裝 Claude Code CLI)
3. 第一步:Google Cloud Console 設定
方案 A:OAuth 2.0(推薦個人用戶使用)
- 前往 Google Cloud Console
- 建立新專案(或選擇現有的) — 命名為
google-ads-mcp之類 - 啟用 Google Ads API:
- 導覽至 APIs & Services > Library(API 和服務 > 程式庫)
- 搜尋 「Google Ads API」
- 點擊 啟用
- 建立 OAuth 憑證:
- 前往 APIs & Services > Credentials(API 和服務 > 憑證)
- 點擊 「+ 建立憑證」 > OAuth 用戶端 ID
- 如果系統提示,先設定 OAuth 同意畫面(選擇「外部」即可)
- 應用程式類型:選擇 電腦版應用程式
- 名稱:
mcp-google-ads - 點擊 建立
- 下載憑證:
- 點擊新憑證旁邊的下載圖示
- 儲存為
client_secret.json— 後續步驟會需要這個路徑
方案 B:服務帳戶(適合自動化 / 多帳戶管理)
- 同上步驟 1-3
- 前往 Credentials > + 建立憑證 > 服務帳戶
- 命名後授予適當角色
- 在該服務帳戶下,前往 金鑰 > 新增金鑰 > 建立新金鑰 > JSON
- 將下載的 JSON 檔案儲存為
service_account_credentials.json - 授予服務帳戶 Google Ads 存取權限:
- 在 Google Ads 中,前往 管理員 > 存取權與安全性
- 新增服務帳戶 Email 並賦予適當權限
如何選擇認證方式?
| 情境 | 推薦方案 |
|---|---|
| 個人使用、管理少數帳戶 | OAuth 2.0 |
| 自動化系統、無人值守 | 服務帳戶 |
| 管理多個客戶帳戶(MCC) | 服務帳戶 |
| 需要使用者主動授權 | OAuth 2.0 |
4. 第二步:取得 Google Ads Developer Token
- 登入 Google Ads
- 點擊頂部導覽列的 工具與設定(板手圖示)
- 在「設定」下方,點擊 「API 中心」
- 如果出現提示,接受服務條款
- 點擊 「申請 Token」
- 填寫申請表單(說明你打算如何使用 API)
- 提交 — 審核通常需要 1-3 個工作天
- 審核通過後,複製你的 Developer Token
注意: 一開始你會拿到一個 測試用 Token,有一些限制。這對初期設定和測試完全夠用。之後再申請正式的 Production Token。
找到你的 Manager Account ID(選填)
如果你使用 Google Ads 管理員帳戶(MCC):
- 登入你的 Google Ads 管理員帳戶
- 點擊 設定齒輪圖示
- 你的管理員帳戶 ID 格式為
XXX-XXX-XXXX - 此 ID 會用在
GOOGLE_ADS_LOGIN_CUSTOMER_ID欄位
如果你只管理單一 Google Ads 帳戶,可以跳過此步驟。
5. 第三步:下載安裝 MCP Server
# 1. 克隆 repo
cd ~
git clone https://github.com/cohnen/mcp-google-ads.git
cd mcp-google-ads
# 2. 建立 Python 虛擬環境
# 使用 uv(推薦):
pip install uv
uv venv .venv
# 或者使用標準 Python:
python3 -m venv .venv
# 3. 啟動虛擬環境
# Mac/Linux:
source .venv/bin/activate
# Windows:
# .venv\Scripts\activate
# 4. 安裝依賴套件
# 使用 uv:
uv pip install -r requirements.txt
# 或者使用 pip:
pip install -r requirements.txt
# 如果 MCP 套件有問題,單獨安裝:
pip install mcp
驗證安裝:
# 命令提示字元前應該看到 (.venv)
which python
# 應該指向:~/mcp-google-ads/.venv/bin/python
如果遇到 “pip not found” 錯誤:
python3 -m ensurepip --upgrade
python3 -m pip install --upgrade pip
python3 -m pip install -r requirements.txt
6. 第四步:設定環境變數
建立 .env 檔案:
cd ~/mcp-google-ads
cp .env.example .env
nano .env # 或使用你偏好的編輯器
填入你的設定值:
# 認證類型:"oauth" 或 "service_account"
GOOGLE_ADS_AUTH_TYPE=oauth
# 憑證檔案路徑
# OAuth 用:client_secret.json 的路徑
# 服務帳戶用:service_account_credentials.json 的路徑
GOOGLE_ADS_CREDENTIALS_PATH=/Users/你的使用者名稱/mcp-google-ads/client_secret.json
# 你的 Google Ads Developer Token
GOOGLE_ADS_DEVELOPER_TOKEN=你的_DEVELOPER_TOKEN
# 選填:管理員帳戶 ID(僅在使用 MCC 時填寫)
# 格式:純數字,不含連字號(例如:1234567890)
GOOGLE_ADS_LOGIN_CUSTOMER_ID=
複製你的憑證檔案到專案目錄:
# 把下載的憑證檔移到專案目錄
cp ~/Downloads/client_secret_XXXXX.json ~/mcp-google-ads/client_secret.json
7. 第五步:接入 OpenClaw
方法 A:在 OpenClaw 設定中加入 MCP Server
編輯你的 OpenClaw MCP 設定檔。路徑取決於你的安裝方式:
# 常見路徑:
# ~/.openclaw/settings.json
# 或者專案層級的 .openclaw/settings.json
在 mcpServers 中加入 googleAdsServer:
{
"mcpServers": {
"googleAdsServer": {
"command": "/Users/你的使用者名稱/mcp-google-ads/.venv/bin/python",
"args": ["/Users/你的使用者名稱/mcp-google-ads/google_ads_server.py"],
"env": {
"GOOGLE_ADS_AUTH_TYPE": "oauth",
"GOOGLE_ADS_CREDENTIALS_PATH": "/Users/你的使用者名稱/mcp-google-ads/client_secret.json",
"GOOGLE_ADS_DEVELOPER_TOKEN": "你的_DEVELOPER_TOKEN",
"GOOGLE_ADS_LOGIN_CUSTOMER_ID": ""
}
}
}
}
重要: 所有路徑都必須是完整絕對路徑,不要用
~/縮寫。
方法 B:建立自訂 OpenClaw Skill(SKILL.md)
建立 Skill 資料夾讓 OpenClaw 自動載入:
mkdir -p ~/.openclaw/skills/google-ads-mcp
建立 ~/.openclaw/skills/google-ads-mcp/SKILL.md:
---
name: google-ads-mcp
description: 透過自架 MCP Server(cohnen/mcp-google-ads)查詢與管理 Google Ads 廣告活動。當使用者想查看廣告成效、執行 GAQL 查詢、列出帳戶、分析廣告活動或優化 Google Ads 時使用。
---
# Google Ads MCP(自架版)
透過 cohnen/mcp-google-ads MCP Server 連接 Google Ads API。
## 可用工具
- `list_accounts` — 列出所有可存取的 Google Ads 帳戶
- `execute_gaql_query` — 在指定帳戶上執行 GAQL 查詢
- `get_campaign_performance` — 取得指定日期範圍的廣告活動績效
- `get_ad_performance` — 廣告素材效果深度分析
- `run_gaql` — 執行任意 GAQL 查詢並指定輸出格式(table/JSON/CSV)
## 常用查詢範例
### 列出所有帳戶
「列出我所有的 Google Ads 帳戶」
### 近 30 天廣告活動績效
「顯示帳戶 123-456-7890 過去 30 天的廣告活動績效」
### 找出表現不佳的關鍵字
「執行 GAQL 查詢:SELECT keyword.text, metrics.ctr, metrics.conversions FROM keyword_view WHERE metrics.clicks > 50 AND metrics.ctr < 0.02 ORDER BY metrics.cost_micros DESC」
### 廣告文案分析
「分析帳戶 123-456-7890 的廣告表現,告訴我哪些標題的 CTR 最好」
然後重啟 OpenClaw 讓它載入新的 Skill。
8. 第六步:接入 Claude Code
Claude Code CLI(claude 指令)
編輯你的 Claude Code MCP 設定檔:
# 建立或編輯 Claude Code 設定
# 全域:~/.claude/settings.json
# 專案層級:.claude/settings.json
加入 MCP Server 設定:
{
"mcpServers": {
"googleAdsServer": {
"command": "/Users/你的使用者名稱/mcp-google-ads/.venv/bin/python",
"args": ["/Users/你的使用者名稱/mcp-google-ads/google_ads_server.py"],
"env": {
"GOOGLE_ADS_AUTH_TYPE": "oauth",
"GOOGLE_ADS_CREDENTIALS_PATH": "/Users/你的使用者名稱/mcp-google-ads/client_secret.json",
"GOOGLE_ADS_DEVELOPER_TOKEN": "你的_DEVELOPER_TOKEN",
"GOOGLE_ADS_LOGIN_CUSTOMER_ID": ""
}
}
}
}
Claude Desktop App
# Mac:
nano ~/Library/Application\ Support/Claude/claude_desktop_config.json
# Windows:
notepad %APPDATA%\Claude\claude_desktop_config.json
JSON 內容同上。儲存後重啟 Claude Desktop。
9. 第七步:測試連線
透過 CLI 快速測試:
cd ~/mcp-google-ads
source .venv/bin/activate
python test_google_ads_mcp.py
此測試會:
- 列出你所有的 Google Ads 帳戶
- 使用第一個帳戶 ID 測試廣告活動績效查詢
- 測試廣告表現數據
- 擷取廣告素材
- 執行一個 GAQL 查詢範例
測試 Token 刷新機制:
python test_token_refresh.py
此測試驗證 OAuth / 服務帳戶的 Token 處理是否正常運作。
透過 Claude Code 測試:
開啟 Claude Code,輸入:
使用 googleAdsServer MCP 工具列出我所有的 Google Ads 帳戶。
如果一切正常,你會看到帳戶清單及其 ID。
10. ClawHub 上最佳 Google Ads 相關 Skill
以下是 ClawHub(clawhub.ai) 上與 Google Ads 最相關的 Skill。你可以將這些 Skill 與你的自架 MCP Server 搭配使用:
第一梯隊:直接 Google Ads 操作
| Skill 名稱 | 作者 | 功能說明 | 安裝指令 |
|---|---|---|---|
| google-ads-api | byungkyu | 透過 Maton 閘道器的 Managed OAuth,直接呼叫 Google Ads API。支援 GAQL 查詢、廣告活動/關鍵字/廣告群組指標。 | clawhub install google-ads-api |
| adwhiz | iamzifei | 99 個 MCP 工具,同時支援 Google Ads + Meta Ads。託管式 MCP Server,涵蓋稽核、建立、管理、優化功能。 | clawhub install adwhiz |
| google-ads-agent | hanabi-jpn | 完整 PPC 廣告活動管理 Agent。GAQL 專家,可建立/管理廣告活動、關鍵字研究、出價優化。 | clawhub install google-ads-agent |
第二梯隊:廣告優化生態系統
| Skill 名稱 | 功能說明 | 搭配用途 |
|---|---|---|
| performance-auditor | 完整帳戶健檢,依營收影響排序異常問題 | 動手修改前先審計帳戶 |
| budget-optimizer | 找出浪費的花費,回報具體的預算調整金額 | 依據 MCP 數據重新分配預算 |
| creative-analyst | 追蹤 7/14/30 天 CTR 趨勢 | 提早發現廣告疲勞 |
| audience-analyzer | 標記飽和受眾、偵測重疊 | 掌握何時該更新定向 |
| pacing-monitor | 提早發現超支或不足 | 確保月度預算達標 |
| aeo-prompt-question-finder | Google 自動完成問題建議 | 挖掘新關鍵字機會 |
| api-gateway | 透過 Maton Managed OAuth 連接 100+ API | 橋接 Google Ads 與其他平台 |
推薦組合策略
由於你使用的是 自架 cohnen/mcp-google-ads 直連 API,建議搭配以下 ClawHub Skill:
# 安裝互補的 ClawHub Skill
clawhub install google-ads-agent # PPC Agent 行為規則 + GAQL 模板
clawhub install aeo-prompt-question-finder # 關鍵字研究
clawhub install api-gateway # 橋接其他 Google 服務
安全提醒
ClawHub 曾發生 ClawHavoc 惡意 Skill 事件,超過 800 個惡意 Skill 被發現(偽裝成合法工具,實際植入資料竊取程式)。安裝任何 Skill 前請務必:
- 執行
clawhub inspect <slug>檢查內容 - 到 ClawHub 頁面查看 VirusTotal 掃描報告
- 遵循 100/3 法則:優先選擇下載量 100+ 且上架超過 3 個月的 Skill
- 考慮安裝
clawdexSkill 來自動掃描已安裝的 Skill
11. Claude Code 可直接貼上使用的 Prompt
設定用 Prompt — 直接貼到 Claude Code 完成安裝
複製以下整段內容,貼到 Claude Code 中即可自動化完成設定:
I need you to help me set up the cohnen/mcp-google-ads MCP server for Google Ads API access on my machine. Please execute each step and report results.
## Step 1: Clone and install
1. Clone https://github.com/cohnen/mcp-google-ads.git into ~/mcp-google-ads
2. Create a Python virtual environment with `python3 -m venv .venv`
3. Activate it and install requirements from requirements.txt
4. Verify the installation by checking that google_ads_server.py exists and that key imports (like `mcp`, `google.ads`) work
## Step 2: Environment configuration
1. Copy .env.example to .env
2. Ask me for my:
- Authentication type (oauth or service_account)
- Full path to my credentials JSON file (client_secret.json or service_account key)
- Google Ads Developer Token
- Manager Account ID (if applicable, otherwise leave blank)
3. Write the values into the .env file securely
## Step 3: MCP configuration for Claude Code
1. Create or update ~/.claude/settings.json (create the directory if needed)
2. Add a "googleAdsServer" entry under "mcpServers" with:
- command: absolute path to .venv/bin/python inside ~/mcp-google-ads
- args: absolute path to google_ads_server.py
- env: all 4 environment variables (AUTH_TYPE, CREDENTIALS_PATH, DEVELOPER_TOKEN, LOGIN_CUSTOMER_ID)
3. Show me the final config for verification before saving
## Step 4: Test the connection
1. Run test_google_ads_mcp.py to verify API connectivity
2. Run test_token_refresh.py to verify token handling
3. Report results clearly — if any test fails, diagnose and suggest fixes
## Step 5: Create an OpenClaw skill (optional — ask me first)
If I confirm I'm using OpenClaw, create a SKILL.md at ~/.openclaw/skills/google-ads-mcp/SKILL.md that:
- Describes all 5 available tools
- Includes example GAQL queries for:
- Listing accounts
- Campaign performance (last 7/30/90 days)
- Top keywords by conversions
- Ad copy CTR analysis
- Wasted spend detection (high spend, zero conversions)
- Budget utilization check
Please proceed step by step. Ask me for credentials when needed. Do NOT store any secrets in plain text outside of .env files. Use absolute paths everywhere.
日常操作 Prompt — 設定完成後每天使用
設定完 MCP 連線後,可使用以下模板進行日常廣告分析:
You have access to the Google Ads MCP server (googleAdsServer) with these tools:
- list_accounts: Show all Google Ads accounts
- execute_gaql_query: Run GAQL on a specific account
- get_campaign_performance: Campaign metrics with date range
- get_ad_performance: Ad creative analysis
- run_gaql: Arbitrary GAQL with table/JSON/CSV output
My account ID is: [在此填入你的帳戶 ID]
Tasks:
1. First, list all accounts to confirm connectivity
2. Pull campaign performance for the last 30 days
3. Identify the top 5 campaigns by conversions
4. Find any keywords with spend > $50 but 0 conversions (wasted spend)
5. Check budget pacing — are any campaigns under-delivering?
6. Create a summary report in Traditional Chinese (繁體中文) with recommendations
Use GAQL queries like:
- SELECT campaign.name, campaign.status, campaign_budget.amount_micros, metrics.clicks, metrics.impressions, metrics.conversions, metrics.cost_micros FROM campaign WHERE segments.date DURING LAST_30_DAYS ORDER BY metrics.conversions DESC
- SELECT keyword.text, metrics.cost_micros, metrics.conversions, metrics.clicks, metrics.ctr FROM keyword_view WHERE metrics.cost_micros > 50000000 AND metrics.conversions = 0 ORDER BY metrics.cost_micros DESC
- SELECT campaign.name, campaign_budget.amount_micros, metrics.cost_micros FROM campaign WHERE campaign.status = 'ENABLED' AND segments.date DURING LAST_7_DAYS
Format all results as tables. Provide actionable insights in Traditional Chinese. Flag any anomalies.
進階分析 Prompt — 深度稽核用
You are a Google Ads Performance Analyst with access to the googleAdsServer MCP.
My account ID is: [你的帳戶 ID]
Perform a comprehensive account audit:
1. **帳戶總覽**
- List all campaigns with status, budget, and last 30 day metrics
- Calculate overall ROAS and CPA
2. **浪費偵測**
- Find search terms with spend > $20 and 0 conversions
- Identify keywords with Quality Score < 5
- Flag any campaigns with CTR < 1%
3. **成長機會**
- Find keywords with high impression share loss due to budget
- Identify top converting keywords that could scale
- Check for any campaigns hitting daily budget caps
4. **廣告素材分析**
- Compare ad copy performance (headlines and descriptions)
- Identify ads with CTR declining over 7-day/14-day/30-day windows
Use run_gaql with format "table" for all queries.
Produce a final report in 繁體中文 with:
- 🔴 緊急問題(立即處理)
- 🟡 優化建議(本週處理)
- 🟢 成長機會(規劃中)
12. 疑難排解
常見問題與解法
| 問題 | 解法 |
|---|---|
Python not found |
Mac 上執行:sudo ln -s $(which python3) /usr/local/bin/python |
ModuleNotFoundError: No module named 'mcp' |
進入虛擬環境後執行:pip install mcp |
| OAuth Token 過期 | MCP Server 會自動刷新。若持續出錯,刪除 token.json 重新認證 |
| Developer Token 尚未通過 | 測試用 Token 仍可使用,但有限制。到 API 中心申請正式 Token |
| MCP Server 在 Claude/OpenClaw 中不顯示 | 確認所有路徑都是絕對路徑,Python 路徑指向 .venv 內的版本,修改後重啟 |
GOOGLE_ADS_LOGIN_CUSTOMER_ID 報錯 |
不使用 MCC 就留空;使用 MCC 就填純數字(無連字號) |
pip not found 錯誤 |
python3 -m ensurepip --upgrade && python3 -m pip install --upgrade pip |
Token 自動刷新說明
- OAuth 2.0 Token:工具會自動刷新過期的 Token。如果 Refresh Token 失效,會提示重新認證。
- 服務帳戶 Token:完全自動產生和刷新,無需使用者介入。
快速參考卡
| 項目 | 內容 |
|---|---|
| Repo | GitHub - cohnen/mcp-google-ads: An MCP tool that connects Google Ads with Claude AI/Cursor and others, allowing you to analyze your advertising data through natural language conversations. This integration gives you access to campaign information, performance metrics, keyword analytics, and ad management—all through simple chat with Claude, Cursor or Windsurf. · GitHub |
| Python | 需要 3.11 以上版本 |
| Server 腳本 | google_ads_server.py |
| 認證方式 | OAuth 2.0 或 服務帳戶 |
| MCP 傳輸方式 | stdio(本機 Process) |
| 可用工具 | list_accounts、execute_gaql_query、get_campaign_performance、get_ad_performance、run_gaql |
| GAQL 語法參考 | Google Ads Query Language | Google Ads API | Google for Developers |
| ClawHub 首選 Skill | google-ads-agent(PPC Agent)、google-ads-api(Managed OAuth)、adwhiz(99 工具) |
GAQL 常用查詢速查表
-- 列出所有啟用中的廣告活動 + 基本指標
SELECT campaign.name, campaign.status, metrics.clicks, metrics.impressions,
metrics.conversions, metrics.cost_micros
FROM campaign
WHERE campaign.status = 'ENABLED'
AND segments.date DURING LAST_30_DAYS
ORDER BY metrics.conversions DESC
-- 找出浪費花費的關鍵字(高花費零轉換)
SELECT keyword.text, metrics.cost_micros, metrics.clicks, metrics.conversions
FROM keyword_view
WHERE metrics.cost_micros > 50000000
AND metrics.conversions = 0
AND segments.date DURING LAST_30_DAYS
ORDER BY metrics.cost_micros DESC
-- 廣告群組績效
SELECT ad_group.name, metrics.conversions, metrics.cost_micros, metrics.ctr
FROM ad_group
WHERE metrics.clicks > 100
AND segments.date DURING LAST_30_DAYS
-- 關鍵字品質分數分析
SELECT keyword.text, metrics.average_position, metrics.ctr,
ad_group.name, campaign.name
FROM keyword_view
ORDER BY metrics.impressions DESC
-- 裝置別績效比較
SELECT campaign.name, segments.device, metrics.clicks,
metrics.conversions, metrics.cost_micros
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
專為 OpenClaw + Claude Code 使用者打造,追求對 Google Ads MCP 整合的完全掌控。