Connects Claude directly to the Google Ads REST API v23 with fifteen tools covering campaign writes, GAQL reporting, bid adjustments, bulk mutations, and ad preview generation. You get validation before spend commits and structured reporting without bouncing between the Ads UI and your workflow. Part of Cesteral's open source fleet of advertising platform connectors, so the auth is OAuth2 refresh tokens you control and the tooling is transparent. Reach for this when you're building programmatic campaign workflows, need to pull reporting into agent context, or want to prototype Ads operations locally before putting them behind approval gates in a managed environment.
Public tool metadata for what this MCP can expose to an agent.
GOOGLEADS_ADD_OR_REMOVE_TO_CUSTOMER_LISTAddOrRemoveToCustomerList Tool will add a contact to a customer list in Google Ads. Note: It takes 6 to 12 hours for changes to be reflected in the customer list.3 paramsAddOrRemoveToCustomerList Tool will add a contact to a customer list in Google Ads. Note: It takes 6 to 12 hours for changes to be reflected in the customer list.
emailsarrayoperationstringcreate · removedefault: createresource_namestringGOOGLEADS_CREATE_CUSTOMER_LISTCreateCustomerList Tool will create a customer list in Google Ads.2 paramsCreateCustomerList Tool will create a customer list in Google Ads.
namestringdescriptionstringGOOGLEADS_GET_CAMPAIGN_BY_IDGetCampaignById Tool will return details of a campaign in Google Ads.1 paramsGetCampaignById Tool will return details of a campaign in Google Ads.
idstringGOOGLEADS_GET_CAMPAIGN_BY_NAMEGetCampaignByName Tool will run a SQL GetCampaignByName in Google Ads.1 paramsGetCampaignByName Tool will run a SQL GetCampaignByName in Google Ads.
namestringGOOGLEADS_GET_CUSTOMER_LISTSGetCustomerLists Tool will list all customer lists in Google Ads.GetCustomerLists Tool will list all customer lists in Google Ads.
No parameter schema in public metadata yet.
Self-hostable MCP connectors for major advertising platforms.
Use this repo when you want transparent platform integrations, local experimentation, and infrastructure you control. Use Cesteral Intelligence when your team needs approvals before spend commits, credential brokering, auditability, and cross-platform execution from one governed environment.
Try Meta Ads MCP locally (~10 min) | Compare OSS vs Cesteral Intelligence | Book a workflow demo
This repo is an open connector layer, not the full product.
Campaign writes, GAQL reporting, bid adjustments, previews, and validation via Google Ads REST API v23.
Package docs | Use with Cesteral Intelligence
Campaign writes, insights, targeting discovery, delivery estimates, previews, and bulk operations via Meta Marketing API v25.0.
Package docs | Use with Cesteral Intelligence
Campaign writes, targeting, custom bidding, previews, uploads, and schema-driven validation via DV360 API v4.
Package docs | Use with Cesteral Intelligence
The OSS connectors give you per-server tool execution + audit logs. Cesteral Intelligence layers governance and orchestration on top:
Compare OSS connectors vs Cesteral Intelligence
| Server | Platform | Tools | Auth |
|---|---|---|---|
| gads-mcp | Google Ads REST API v23 | 15 | OAuth2 refresh token |
| meta-mcp | Meta Marketing API v25.0 | 27 | Bearer token |
| dv360-mcp | DV360 API v4 | 26 | Google OAuth2 / service account |
| ttd-mcp | The Trade Desk REST + GraphQL API | 43 | User token (TTD-Auth header) |
| linkedin-mcp | LinkedIn Marketing API v2 | 21 | Bearer token |
| tiktok-mcp | TikTok Marketing API v1.3 | 24 | Bearer token + advertiser ID |
| cm360-mcp | CM360 API v5 | 21 | Google OAuth2 |
| sa360-mcp | SA360 Reporting API v0 + DS v2 | 16 | OAuth2 refresh token |
| pinterest-mcp | Pinterest Ads API v5 | 23 | Bearer token |
| snapchat-mcp | Snapchat Ads API v1 | 23 | Bearer token |
| amazon-dsp-mcp | Amazon DSP API | 26 | Bearer token |
| msads-mcp | Microsoft Advertising API v13 | 25 | Access token + developer token |
| dbm-mcp | Bid Manager API v2 | 6 | Google OAuth2 |
Thirteen servers, 290+ tools. Tool counts are the live registered total per
server, including the *_search_tools discovery tool where present.
These connectors have grown past "thin REST wrappers." Beyond raw tool calls,
every server in the fleet exposes the full surface of the modern MCP spec
(protocol revisions 2025-03-26 through 2025-11-25):
entity-schema://, entity-fields://, entity-examples://).<platform>_search_tools tool that lets an agent
search the server's own catalog by intent instead of paging the full list.
On 11 servers (all except the small gads-mcp and sa360-mcp / reporting-only
dbm-mcp)./.well-known/mcp/server-card.json (name, version, transports, auth modes,
capabilities) on every server, in every auth mode.jwt auth mode, the RFC 9728 endpoint at
/.well-known/oauth-protected-resource.ttd-mcp,
tiktok-mcp, snapchat-mcp, amazon-dsp-mcp, pinterest-mcp, msads-mcp.| Server | Discovery | Prompts | Resources | CSV spill |
|---|---|---|---|---|
| gads-mcp | ✅ | ✅ | ||
| meta-mcp | ✅ | ✅ | ✅ | |
| dv360-mcp | ✅ | ✅ | ✅ | |
| ttd-mcp | ✅ | ✅ | ✅ | ✅ |
| linkedin-mcp | ✅ | ✅ | ✅ | |
| tiktok-mcp | ✅ | ✅ | ✅ | ✅ |
| cm360-mcp | ✅ | ✅ | ✅ | |
| sa360-mcp | ✅ | ✅ | ||
| pinterest-mcp | ✅ | ✅ | ✅ | ✅ |
| snapchat-mcp | ✅ | ✅ | ✅ | ✅ |
| amazon-dsp-mcp | ✅ | ✅ | ✅ | ✅ |
| msads-mcp | ✅ | ✅ | ✅ | ✅ |
| dbm-mcp | ✅ | ✅ |
Self-hosting an AI agent that touches live ad spend is a trust problem first and a capability problem second. Two things make this fleet shippable to production without hand-rolling guardrails:
dbm-mcp is reporting-only) prompt the user
before deletes, bulk status changes, bid adjustments, budget changes,
conversion uploads, and async Workflows batch jobs. Stdio and clients
without elicitation support fall back to a documented non-interactive
contract. Bulk mutations under 10 items skip the prompt unless they touch a
sensitive field (status / budget / bid).definitionHash (from @cesteral/contract-hash) emitted into a
per-package cesteral-manifest.json. Tagged releases publish to npm with
build provenance, signing the manifest transitively inside the tarball, so a
downstream governance system can verify exactly which tool definitions
shipped and promote matching tools to attested trust.If your security review needs evidence — the redaction list, the field schema, the upstream capture path, the contract hash — all of it is in this repository.
For a guided walkthrough, see the 10-minute quickstart.
corepack enable picks up the pinned version from packageManager (or npm install -g pnpm@10)git clone https://github.com/cesteral/mcp-open-advertising.git
cd mcp-open-advertising
pnpm install
pnpm run build
# Start any server using the dev script
./scripts/dev-server.sh gads-mcp # port 3004
./scripts/dev-server.sh meta-mcp # port 3005
./scripts/dev-server.sh dv360-mcp # port 3002
# See each package README for required environment variables
{
"mcpServers": {
"cesteral-gads": {
"url": "https://gads.your-domain.com/mcp",
"apiKey": "your-gads-api-key"
},
"cesteral-meta": {
"url": "https://meta.your-domain.com/mcp",
"apiKey": "your-meta-api-key"
}
}
}
Add as many servers as you need. Each runs independently and can be deployed separately.
cd terraform
terraform init
terraform apply -var-file=dev.tfvars
See the deployment guide for production setup.
Cesteral uses a GCP-native architecture with thirteen independently deployable Cloud Run MCP services. Each server exposes the MCP protocol directly via HTTPS on Cloud Run.
Key design decisions:
AI clients connect directly to one or more MCP servers over HTTPS; there is no shared gateway to provision. Cesteral Intelligence, when used, layers tenancy, credentials, approvals, and governance above the same fleet.
mcp-open-advertising/
├── packages/
│ ├── gads-mcp/ # Google Ads
│ ├── meta-mcp/ # Meta Ads
│ ├── dv360-mcp/ # DV360
│ ├── ttd-mcp/ # The Trade Desk
│ ├── linkedin-mcp/ # LinkedIn Ads
│ ├── tiktok-mcp/ # TikTok Ads
│ ├── cm360-mcp/ # Campaign Manager 360
│ ├── sa360-mcp/ # Search Ads 360
│ ├── pinterest-mcp/ # Pinterest Ads
│ ├── snapchat-mcp/ # Snapchat Ads
│ ├── amazon-dsp-mcp/ # Amazon DSP
│ ├── msads-mcp/ # Microsoft Ads
│ ├── dbm-mcp/ # Bid Manager (reporting)
│ ├── contract-schema/ # Shared library -- canonical annotation + response schemas
│ ├── contract-hash/ # Shared library -- canonical tool-definition hash
│ └── shared/ # Shared auth, telemetry, utilities
├── terraform/ # Infrastructure as Code
├── scripts/ # Deployment and dev automation
└── docs/ # Documentation and guides
# Install dependencies
pnpm install
# Build all packages
pnpm run build
# Run tests
pnpm run test
# Type checking
pnpm run typecheck
# Lint
pnpm run lint
# Use MCP Inspector
npx @modelcontextprotocol/inspector packages/gads-mcp
# Or use curl
curl -X POST http://localhost:3004/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "method": "tools/list", "id": 1}'
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
git checkout -b feature/your-featurepnpm run testSee also: CODE_OF_CONDUCT.md | SECURITY.md | ROADMAP.md
com.mcparmory/google-sheets
domdomegg/google-sheets-mcp
henilcalagiya/google-sheets-mcp
cct15/war-dashboard-data
moooonad/mcp-google-sheets-full
io.github.br0ski777/csv-to-json