AdMob MCP server: app monetization reporting from Claude or Codex
AdMob completes the publisher picture: app inventory alongside web. Reads are unrestricted; the monetization writes exist but sit behind a Google-side allowlist. Two things are worth knowing before you build on it — a metric people assume exists and does not, and that limited-access gate.
What already exists for this platform
Google has not shipped a platform-official AdMob MCP server at the time of writing (September 2026).
- No official server; the AdMob API is wrappable and community servers exist.
- Reporting only in practice — mediation configuration is not something the API opens up the way people expect.
- The scope matters. AdMob's read scope is classified in a way that affects what a Google verification review asks of you, which is a real cost for anyone shipping their own server.
What a full MCP server adds
| Typical option today | Agent Planners MCP | |
|---|---|---|
| AdMob tools | Community, read-only | 12 reads, 5 writes |
| Ad Manager + AdSense in the same session | No | Yes |
| Alerts and anomaly detection | No | Yes |
| Approval + audit layer | None | Queued for approval or run inside the guardrails, as the key's write mode says — every write audited |
tools:write.How to configure it
- 1Create a key in API & MCP.
tools:readfor questions; addtools:writeif the agent should be able to change things. Tools mode needs a paid plan and fails closed. - 2Connect AdMob under Integrations — that OAuth step is why the MCP key never carries platform credentials.
- 3Add the server to Claude Code, Claude Desktop or Codex using the snippet below.
- 4Have the agent call
describe_permissionsfirst — it reports the key's mode, scopes, plan entitlement and connected accounts. - 5Call
list_accountsfor the account ids, and scope each call with one. Resolution is exact or it refuses, naming the candidates.
claude mcp add --transport http agent-plannershttps://www.agentplanners.com/api/mcp \
--header "Authorization: Bearer ap_live_…"Claude Desktop and Codex
Claude Desktop takes the same endpoint as JSON:
{
"mcpServers": {
"agent-planners": {
"url": "https://www.agentplanners.com/api/mcp",
"headers": {
"Authorization": "Bearer ap_live_…"
}
}
}
}~/.codex/config.toml, with the key in an environment variable rather than the file: [mcp_servers.agent-planners] / url = "…/api/mcp" / bearer_token_env_var = "AGENTPLANNERS_API_KEY".The AdMob metric that does not exist
OBSERVED_ECPM is not an AdMob metric. It exists in Ad Manager's vocabulary and people reach for it in AdMob by analogy, where it simply is not there. A query using it fails, and the failure does not say "that metric belongs to a different product".
This is the general shape of publisher-platform work: three Google products with overlapping concepts and non-overlapping vocabularies. An agent that assumes one shared metric namespace produces confident nonsense, which is why the vocabulary belongs in the tool.
Use cases
- App revenue explained — which apps, ad units and countries moved, ranked by impact.
- Mediation performance review, as an analysis rather than a configuration change.
- Web and app monetization in one answer, alongside AdSense and Ad Manager.
- Scheduled revenue alerts with anomaly detection, so a drop reaches you rather than waiting to be found.
Frequently asked questions
- Is there an official AdMob MCP server?
- Not from Google at the time of writing (September 2026). Community wrappers around the AdMob API exist and are read-oriented.
- Why does OBSERVED_ECPM fail in AdMob?
- Because it is not an AdMob metric — it belongs to Ad Manager's vocabulary. The three Google publisher products share concepts but not metric names, and a query borrowing a name across them fails.
- Can an agent change my AdMob mediation setup?
- Yes, since 18 September 2026 — AdMob is 12 reads and 5 writes, covering app, ad-unit and mediation-group creation and updates, each queued for approval or run inside the guardrails, as the key's write mode says. Google gates its monetization methods behind its own limited-access review, independently of us, so a 403 there is Google's decision rather than a missing tool.