Ads MCP Server
by gudlabio.github.gudlab/ads-mcpv0.1.1
MCP server for Google Ads and Meta Ads. Wraps both APIs directly to manage campaigns.
context tax
queued
security
queued
cold start
queued
freshness
Active17d ago
Install Ads MCP server
Install in Claude Code
claude mcp add ads-gudlab -e GOOGLE_ADS_CLIENT_ID='<google-ads-client-id>' -e GOOGLE_ADS_CLIENT_SECRET='<google-ads-client-secret>' -e GOOGLE_ADS_DEVELOPER_TOKEN='<google-ads-developer-token>' -e GOOGLE_ADS_REFRESH_TOKEN='<google-ads-refresh-token>' -e GOOGLE_ADS_CUSTOMER_ID='<google-ads-customer-id>' -e META_APP_ID='<meta-app-id>' -e META_APP_SECRET='<meta-app-secret>' -e META_ACCESS_TOKEN='<meta-access-token>' -e META_AD_ACCOUNT_ID='<meta-ad-account-id>' -- npx -y @gudlab/ads-mcpInstall in Cursor
{
"mcpServers": {
"ads-gudlab": {
"command": "npx",
"args": [
"-y",
"@gudlab/ads-mcp"
],
"env": {
"GOOGLE_ADS_CLIENT_ID": "<google-ads-client-id>",
"GOOGLE_ADS_CLIENT_SECRET": "<google-ads-client-secret>",
"GOOGLE_ADS_DEVELOPER_TOKEN": "<google-ads-developer-token>",
"GOOGLE_ADS_REFRESH_TOKEN": "<google-ads-refresh-token>",
"GOOGLE_ADS_CUSTOMER_ID": "<google-ads-customer-id>",
"META_APP_ID": "<meta-app-id>",
"META_APP_SECRET": "<meta-app-secret>",
"META_ACCESS_TOKEN": "<meta-access-token>",
"META_AD_ACCOUNT_ID": "<meta-ad-account-id>"
}
}
}
}Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (project).
Install in Claude Desktop
{
"mcpServers": {
"ads-gudlab": {
"command": "npx",
"args": [
"-y",
"@gudlab/ads-mcp"
],
"env": {
"GOOGLE_ADS_CLIENT_ID": "<google-ads-client-id>",
"GOOGLE_ADS_CLIENT_SECRET": "<google-ads-client-secret>",
"GOOGLE_ADS_DEVELOPER_TOKEN": "<google-ads-developer-token>",
"GOOGLE_ADS_REFRESH_TOKEN": "<google-ads-refresh-token>",
"GOOGLE_ADS_CUSTOMER_ID": "<google-ads-customer-id>",
"META_APP_ID": "<meta-app-id>",
"META_APP_SECRET": "<meta-app-secret>",
"META_ACCESS_TOKEN": "<meta-access-token>",
"META_AD_ACCOUNT_ID": "<meta-ad-account-id>"
}
}
}
}Settings → Developer → Edit Config (claude_desktop_config.json), then restart.
Install in VS Code
{
"servers": {
"ads-gudlab": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@gudlab/ads-mcp"
],
"env": {
"GOOGLE_ADS_CLIENT_ID": "<google-ads-client-id>",
"GOOGLE_ADS_CLIENT_SECRET": "<google-ads-client-secret>",
"GOOGLE_ADS_DEVELOPER_TOKEN": "<google-ads-developer-token>",
"GOOGLE_ADS_REFRESH_TOKEN": "<google-ads-refresh-token>",
"GOOGLE_ADS_CUSTOMER_ID": "<google-ads-customer-id>",
"META_APP_ID": "<meta-app-id>",
"META_APP_SECRET": "<meta-app-secret>",
"META_ACCESS_TOKEN": "<meta-access-token>",
"META_AD_ACCOUNT_ID": "<meta-ad-account-id>"
}
}
}
}Add to .vscode/mcp.json in your workspace.
Install in Windsurf
{
"mcpServers": {
"ads-gudlab": {
"command": "npx",
"args": [
"-y",
"@gudlab/ads-mcp"
],
"env": {
"GOOGLE_ADS_CLIENT_ID": "<google-ads-client-id>",
"GOOGLE_ADS_CLIENT_SECRET": "<google-ads-client-secret>",
"GOOGLE_ADS_DEVELOPER_TOKEN": "<google-ads-developer-token>",
"GOOGLE_ADS_REFRESH_TOKEN": "<google-ads-refresh-token>",
"GOOGLE_ADS_CUSTOMER_ID": "<google-ads-customer-id>",
"META_APP_ID": "<meta-app-id>",
"META_APP_SECRET": "<meta-app-secret>",
"META_ACCESS_TOKEN": "<meta-access-token>",
"META_AD_ACCOUNT_ID": "<meta-ad-account-id>"
}
}
}
}Add to ~/.codeium/windsurf/mcp_config.json.
Configuration
| Variable | Required | Secret | Description |
|---|---|---|---|
| GOOGLE_ADS_CLIENT_ID | yes | yes | OAuth client ID from Google Cloud Console |
| GOOGLE_ADS_CLIENT_SECRET | yes | yes | OAuth client secret from Google Cloud Console |
| GOOGLE_ADS_DEVELOPER_TOKEN | yes | yes | Developer token from Google Ads API Center |
| GOOGLE_ADS_REFRESH_TOKEN | yes | yes | Refresh token minted via `pnpm google:auth` |
| GOOGLE_ADS_CUSTOMER_ID | yes | — | Default Google Ads account ID, 10 digits, no dashes |
| GOOGLE_ADS_LOGIN_CUSTOMER_ID | — | — | MCC account ID, only if the customer account is managed under one |
| META_APP_ID | yes | — | Meta App ID from developers.facebook.com |
| META_APP_SECRET | yes | yes | Meta App secret |
| META_ACCESS_TOKEN | yes | yes | Long-lived System User access token with ads_management scope |
| META_AD_ACCOUNT_ID | yes | — | Default Meta ad account ID, numeric, no act_ prefix |
Freshness
Active — last maintenance signal 17d ago. The newest of the signals below sets the band.
Last commit (default branch)
2026-09-22 · 17d ago · GitHub
Latest release
no data · GitHub
Package published
no data · npm/PyPI
Registry entry updated
2026-09-22 · 17d ago · official registry · v0.1.1
FAQ
›How do I install the Ads MCP server in Claude Code?
Run: claude mcp add ads-gudlab -e GOOGLE_ADS_CLIENT_ID='<google-ads-client-id>' -e GOOGLE_ADS_CLIENT_SECRET='<google-ads-client-secret>' -e GOOGLE_ADS_DEVELOPER_TOKEN='<google-ads-developer-token>' -e GOOGLE_ADS_REFRESH_TOKEN='<google-ads-refresh-token>' -e GOOGLE_ADS_CUSTOMER_ID='<google-ads-customer-id>' -e META_APP_ID='<meta-app-id>' -e META_APP_SECRET='<meta-app-secret>' -e META_ACCESS_TOKEN='<meta-access-token>' -e META_AD_ACCOUNT_ID='<meta-ad-account-id>' -- npx -y @gudlab/ads-mcp. For Cursor, VS Code, Claude Desktop and Windsurf, use the install tabs above.
›Does Ads require an API key?
Yes. It expects GOOGLE_ADS_CLIENT_ID, GOOGLE_ADS_CLIENT_SECRET, GOOGLE_ADS_DEVELOPER_TOKEN, GOOGLE_ADS_REFRESH_TOKEN, GOOGLE_ADS_CUSTOMER_ID, META_APP_ID, META_APP_SECRET, META_ACCESS_TOKEN, META_AD_ACCOUNT_ID, of which 6 are secrets.
›Can I use Ads as a remote (hosted) MCP server?
No hosted endpoint is published; it runs locally over stdio.
›Is Ads in the official MCP registry?
Yes, as io.github.gudlab/ads-mcp.
Alternatives to Ads
Other crm & marketing MCP servers.