{"_id":"@bossforce.ai/mcp-google-ads","name":"@bossforce.ai/mcp-google-ads","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@bossforce.ai/mcp-google-ads","version":"0.1.0","type":"module","repository":{"type":"git","url":"git+https://github.com/bossforce-ai/bossforce-tools.git","directory":"mcps/advertising/google-ads"},"publishConfig":{"access":"public"},"bin":{"bossforce-mcp-google-ads":"dist/bin.js"},"dependencies":{"zod":"^4.4.3","@bossforce.ai/mcp-core":"0.3.0"},"devDependencies":{"@bossforce.ai/mcp-testkit":"0.0.0"},"scripts":{"build":"tsc -p tsconfig.json","test":"node --test \"dist/*.test.js\""},"_id":"@bossforce.ai/mcp-google-ads@0.1.0","description":"MCP server for the **Google Ads API** (REST, `v24`). Read Google Ads data with GAQL (Google Ads Query Language): discover accessible accounts, list campaigns and run arbitrary read queries for reporting and performance analysis.","bugs":{"url":"https://github.com/bossforce-ai/bossforce-tools/issues"},"homepage":"https://github.com/bossforce-ai/bossforce-tools#readme","_integrity":"sha512-dQvP+rIJUiCireczEWQ31LtJtvF7FQOZ8O2HvQ8Pd532LnQv8oOqPzdE1ki7lqQnXHv6IN1x4FCPPgZsxzrxXA==","_resolved":"C:\\Users\\user\\AppData\\Local\\Temp\\01c8ecdcfe93dc0ae2489afe7fe9b465\\bossforce.ai-mcp-google-ads-0.1.0.tgz","_from":"file:bossforce.ai-mcp-google-ads-0.1.0.tgz","_nodeVersion":"22.18.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-dQvP+rIJUiCireczEWQ31LtJtvF7FQOZ8O2HvQ8Pd532LnQv8oOqPzdE1ki7lqQnXHv6IN1x4FCPPgZsxzrxXA==","shasum":"97b0c061c63bc550f5c1ea6dfc3c46901a242664","tarball":"https://registry.npmjs.org/@bossforce.ai/mcp-google-ads/-/mcp-google-ads-0.1.0.tgz","fileCount":26,"unpackedSize":28375,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDI3XqJbe6Lmv1up5AiPkiGHRGW98cQxvlIP823lYx+1QIgRCGnLMOi1Ow3Ez5QLvOC8HxJKZbe+B+ZuIaF3ukIq8I="}]},"_npmUser":{"name":"bossforce.ai","email":"bossforce.ai@gmail.com"},"directories":{},"maintainers":[{"name":"bossforce.ai","email":"bossforce.ai@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-google-ads_0.1.0_1781069209497_0.3228353425985513"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-10T05:26:49.236Z","0.1.0":"2026-06-10T05:26:49.736Z","modified":"2026-06-10T05:26:50.034Z"},"maintainers":[{"name":"bossforce.ai","email":"bossforce.ai@gmail.com"}],"description":"MCP server for the **Google Ads API** (REST, `v24`). Read Google Ads data with GAQL (Google Ads Query Language): discover accessible accounts, list campaigns and run arbitrary read queries for reporting and performance analysis.","homepage":"https://github.com/bossforce-ai/bossforce-tools#readme","repository":{"type":"git","url":"git+https://github.com/bossforce-ai/bossforce-tools.git","directory":"mcps/advertising/google-ads"},"bugs":{"url":"https://github.com/bossforce-ai/bossforce-tools/issues"},"readme":"# @bossforce.ai/mcp-google-ads\n\nMCP server for the **Google Ads API** (REST, `v24`). Read Google Ads data with\nGAQL (Google Ads Query Language): discover accessible accounts, list campaigns\nand run arbitrary read queries for reporting and performance analysis.\n\n> **Gated.** This integration only works once you have an **approved Google Ads\n> API developer token**. A token is requested in the API Center of a Google Ads\n> **manager (MCC)** account and must be reviewed and approved by Google. Until\n> then a token can only call test accounts.\n\n## Credentials\n\n| Env                            | Secret | How to obtain                                                                                               |\n| ------------------------------ | ------ | ----------------------------------------------------------------------------------------------------------- |\n| `GOOGLE_ADS_CLIENT_ID`         | yes    | OAuth2 client id (Google Cloud Console). Provided by the platform as `client_id`.                           |\n| `GOOGLE_ADS_CLIENT_SECRET`     | yes    | OAuth2 client secret. Provided by the platform as `client_secret`.                                          |\n| `GOOGLE_ADS_REFRESH_TOKEN`     | yes    | Obtained automatically when you authorize Google access (scope `https://www.googleapis.com/auth/adwords`).  |\n| `GOOGLE_ADS_DEVELOPER_TOKEN`   | yes    | Your **approved** developer token from the API Center of a Google Ads manager account.                      |\n| `GOOGLE_ADS_LOGIN_CUSTOMER_ID` | no     | The manager (MCC) account customer id, digits only with no dashes — sent as the `login-customer-id` header. |\n\nCredentials are read lazily, so the server boots and answers `tools/list`\nwithout them; calls fail with an `auth` error until they are set.\n\n## Auth\n\nThe server exchanges the refresh token for a short-lived access token at\n`https://oauth2.googleapis.com/token` (`grant_type=refresh_token`) and caches it,\nre-fetching once on a `401`. Every API call carries three headers the API\nrequires: `authorization: Bearer <token>`, `developer-token` and\n`login-customer-id` (the manager id with dashes stripped).\n\n## Tools\n\n| Tool                        | Arguments                             | Returns                                          |\n| --------------------------- | ------------------------------------- | ------------------------------------------------ |\n| `search`                    | `customer_id`, `query`, `page_token?` | GAQL `results` array (and `nextPageToken`)       |\n| `list_campaigns`            | `customer_id`, `page_token?`          | campaigns with id, name, status, channel, budget |\n| `list_accessible_customers` | —                                     | `resourceNames` of accessible customer accounts  |\n\n`search` runs any GAQL statement against `POST\n/customers/{customerId}/googleAds:search`. `customer_id` is digits only (dashes\nare stripped automatically). Use `list_accessible_customers` to discover the ids\nto pass.\n\n## Develop\n\n```bash\npnpm --filter @bossforce.ai/mcp-google-ads build\npnpm --filter @bossforce.ai/mcp-google-ads test\n```\n\nRegenerate the tools/list snapshot after an intentional signature change:\n\n```bash\nUPDATE_SNAPSHOTS=1 pnpm --filter @bossforce.ai/mcp-google-ads test\n```\n","readmeFilename":"README.md","_rev":"1-4635ea6542611578b3d81cfa8644c802"}