mcpField
A
Admob Mcp

Admob Mcp

Local
github.com/ard3051997Developer Tools5Updated 21w ago

About Admob Mcp

Admob Mcp is a FastMCP server for managing Google AdMob mediation and analyzing revenue. It combines reporting and experiments with validation, dry-run previews, and audit logs for changes.

Key features

  1. 01Revenue and mediation reports
  2. 02Mediation group management
  3. 03A/B experiment controls
  4. 04Geo-based network recommendations
  5. 05Rules, dry runs, and audit logs

Use cases

  1. 01Analyze revenue by network and country
  2. 02Adjust mediation groups safely
  3. 03Compare mediation variants with experiments
  4. 04Investigate fill-rate or match-rate anomalies

MCP support

Exposes 14 tools, three resources, and two workflow prompts to MCP clients. Tools cover AdMob reporting, mediation operations, experiments, diagnostics, and optimization.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

No install method listed yet

We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.

Repository

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

🚀 AdMob Model Context Protocol (MCP) Server

A powerful Model Context Protocol (MCP) server that exposes Google AdMob management, mediation waterfall operations, advanced revenue analysis, and A/B experiments directly to MCP-compatible AI clients (such as Claude Code CLI, Claude Desktop, Cursor, Windsurf, and Cline).

Features a local Rules Engine and Safety Layer ensuring that mutating operations are audited, verified, and run via dry-runs before touching your live AdMob account.


📂 Architecture Overview

MCP-admob/
├── admob_mcp/              ← MCP Server Layer (FastMCP)
│   ├── server.py           ← Server entry point, async context & lifespans
│   ├── resources.py        ← Exposed resources (ad-sources, format-support)
│   ├── prompts.py          ← Integrated workflow prompt templates
│   └── tools/              ← MCP Tool modules
│       ├── reporting.py    ← Read-only reports & network data
│       ├── management.py   ← Mediation Group CRUD
│       ├── experiments.py  ← A/B experiment lifecycles
│       └── diagnostics.py  ← Expert metrics analysis & geo recommendations
├── admob_core/             ← Business Logic & Library Layer
│   ├── client.py           ← Async Google AdMob REST API v1beta wrapper
│   ├── auth.py             ← OAuth 2.0 credential loading & browser flow
│   ├── db.py               ← Local SQLite metrics database (admob_metrics.db)
│   ├── analyzer.py         ← AdMonExpert core diagnostics & sync logic
│   ├── rules.py            ← Mediation policy validator (Rules Engine)
│   ├── safety.py           ← Write safeguard & audit logger
│   └── registry.py         ← 13+ Ad Source capabilities knowledge base
├── config.yaml             ← App categories & rule configuration thresholds
├── requirements.txt        ← Python package dependencies
├── .env.example            ← Template for required environment variables
├── .env                    ← Your secrets (not committed — copy from .env.example)
├── credentials.json        ← OAuth 2.0 Client credentials (not committed — you provide)
└── token.json              ← Authorized OAuth user token (not committed — auto-generated)

🛠️ Prerequisites & Setup

1. Enable the Google AdMob API
  1. Open the Google Cloud Console.
  2. Select or create your project.
  3. Search for AdMob API in the API Library and click Enable.
2. Download OAuth 2.0 Desktop Credentials
  1. Navigate to APIs & Services → Credentials.
  2. Click Create Credentials → OAuth client ID.
  3. Select Desktop app as the Application Type.
  4. Download the generated client JSON and save it in the root of this repo as credentials.json.
3. Create Virtual Environment & Install Dependencies
python3 -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate
pip install -r requirements.txt

Python 3.10+ required. fastmcp does not support Python 3.9 or older.

4. Configure Environment (.env)
cp .env.example .env

Then edit .env:

PUBLISHER_ID=pub-XXXXXXXXXXXXXXXX      # Your AdMob Publisher ID (AdMob UI → Account)
CREDENTIALS_PATH=credentials.json       # Path to your OAuth credentials file
TOKEN_PATH=token.json                   # Where to cache the authorized token
AUDIT_LOG_PATH=audit.log               # Log file for mutating operations
SLACK_WEBHOOK_URL=                      # (Optional) Slack alert webhook
5. Run the One-time Authorization Flow
python admob_core/auth.py

A browser tab will open — authenticate with your Google AdMob account and grant permissions. This writes token.json which is cached and auto-refreshed on all subsequent runs.


💻 Integrating with AI Clients

Replace /path/to/MCP-admob with the absolute path to wherever you cloned this repo.

🤖 Claude Code (CLI)
claude mcp add admob-mediation \
  --env PYTHONPATH="/path/to/MCP-admob" \
  --env PUBLISHER_ID="pub-XXXXXXXXXXXXXXXX" \
  --env CREDENTIALS_PATH="/path/to/MCP-admob/credentials.json" \
  --env TOKEN_PATH="/path/to/MCP-admob/token.json" \
  --env AUDIT_LOG_PATH="/path/to/MCP-admob/audit.log" \
  -- "/path/to/MCP-admob/.venv/bin/python" -m admob_mcp

Or via JSON:

claude mcp add-json admob-mediation '{
  "command": "/path/to/MCP-admob/.venv/bin/python",
  "args": ["-m", "admob_mcp"],
  "env": {
    "PYTHONPATH": "/path/to/MCP-admob",
    "PUBLISHER_ID": "pub-XXXXXXXXXXXXXXXX",
    "CREDENTIALS_PATH": "/path/to/MCP-admob/credentials.json",
    "TOKEN_PATH": "/path/to/MCP-admob/token.json",
    "AUDIT_LOG_PATH": "/path/to/MCP-admob/audit.log"
  }
}'

Verify with claude mcp list.


🖥️ Claude Desktop App

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "admob-mediation": {
      "command": "/path/to/MCP-admob/.venv/bin/python",
      "args": ["-m", "admob_mcp"],
      "cwd": "/path/to/MCP-admob",
      "env": {
        "PYTHONPATH": "/path/to/MCP-admob",
        "PUBLISHER_ID": "pub-XXXXXXXXXXXXXXXX",
        "CREDENTIALS_PATH": "/path/to/MCP-admob/credentials.json",
        "TOKEN_PATH": "/path/to/MCP-admob/token.json",
        "AUDIT_LOG_PATH": "/path/to/MCP-admob/audit.log"
      }
    }
  }
}

Restart Claude Desktop to reload.


🔍 Cursor IDE
  1. Settings → Features → MCP → + Add New MCP Server
  2. Name: admob-mediation | Type: command
  3. Command: /path/to/MCP-admob/.venv/bin/python -m admob_mcp
  4. Ensure your .env is populated in the project root.

🌊 Windsurf / Cline / Roo Code
"admob-mediation": {
  "command": "/path/to/MCP-admob/.venv/bin/python",
  "args": ["-m", "admob_mcp"],
  "env": {
    "PYTHONPATH": "/path/to/MCP-admob",
    "PUBLISHER_ID": "pub-XXXXXXXXXXXXXXXX",
    "CREDENTIALS_PATH": "/path/to/MCP-admob/credentials.json",
    "TOKEN_PATH": "/path/to/MCP-admob/token.json",
    "AUDIT_LOG_PATH": "/path/to/MCP-admob/audit.log"
  }
}

🧩 MCP Primitives Reference

🛠️ Tools (14 total)
Reporting — Read-Only
ToolDescription
admob_list_appsLists all active apps in the publisher account
admob_list_ad_unitsLists ad units, optionally filtered by app_id
admob_network_reportNetwork revenue report across dates, apps, formats, countries
admob_mediation_reportMediation revenue report broken down by network, bidding vs waterfall
Mediation Management — Write Operations
ToolDescription
admob_list_mediation_groupsLists all mediation groups with targeting and line items
admob_list_ad_sourcesLists available ad network sources supported by AdMob
admob_create_mediation_groupCreates a mediation group (runs Rules Engine validation first)
admob_update_mediation_groupUpdates targeting, status, or line items of a mediation group
Experiments — A/B Testing
ToolDescription
admob_create_ab_experimentCreates a mediation A/B experiment
admob_stop_ab_experimentStops an A/B experiment and selects the winner variant
Diagnostics & Optimization
ToolDescription
admob_expert_syncSyncs 14 days of mediation metrics into the local SQLite DB
admob_expert_analyzeRoot-cause analysis: fill rate anomalies, match rate drops, revenue alerts
admob_recommend_networks_geoTier-1/Tier-2 network recommendations for a country + ad format
admob_request_placement_mapReturns a placement mapping template for UX/monetization planning

📦 Resources (3)
URIDescription
admob://ad-sourcesFull ad network registry with bidding/waterfall support and source IDs
admob://app-categoriesApp category definitions and child-directed settings from config.yaml
admob://format-supportFormat support matrix per ad source (banner, interstitial, rewarded, etc.)

💡 Prompts (2)
PromptDescription
optimize_app(app_id)Step-by-step audit: sync data → analyze → inspect groups → recommend changes
portfolio_healthPortfolio-wide audit: flags stale A/B tests, revenue drops, missing partners

🔒 Safety, Auditing & Rules Engine

All write operations go through a two-stage safety pipeline before touching the live API:

Stage 1 — Rules Engine (rules.py)
RuleSeverityDescription
format_check🔴 BLOCKPrevents adding a network that doesn't support the group's ad format
child_directed🔴 BLOCKBlocks bidding networks on COPPA-tagged apps
min_bidding🟡 WARNAlerts when fewer than 3 bidding partners are configured
admob_network_required🟡 WARNWarns if AdMob Network is absent from the waterfall
pangle_region🟡 WARNWarns if Pangle is added outside its strong geos (APAC, US, BR, MX)
Stage 2 — Snapshot + Audit Log (safety.py)
  • dry_run=True on any write tool previews the change without hitting the API
  • Every real mutation captures a pre-change snapshot and appends a structured JSON entry to audit.log

⚙️ Configuration (config.yaml)

Customize app categories and rule thresholds:

app_categories:
  gaming:
    app_ids: ["ca-app-pub-XXXX~YYYY"]   # AdMob app IDs to tag
    child_directed: false
    primary_formats: ["REWARDED_VIDEO", "INTERSTITIAL", "BANNER"]

rules:
  min_bidding_partners: 3
  stale_ecpm_threshold_days: 30
  stale_experiment_days: 14

❌ Troubleshooting

ErrorFix
ValueError: PUBLISHER_ID must be providedCheck .env contains PUBLISHER_ID=pub-... and that the server's cwd points to the repo root
FileNotFoundError: credentials.json not foundPlace credentials.json in the repo root or set CREDENTIALS_PATH to its absolute path
403 Forbidden / AdMob API not enabledEnable the AdMob API in Google Cloud Console for your project
401 Unauthorized / Token ExpiredDelete token.json and re-run python admob_core/auth.py
fastmcp not found / install errorsEnsure you're using Python 3.10+ (python --version)

📋 Requirements

  • Python 3.10+
  • Google Cloud project with AdMob API enabled
  • OAuth 2.0 Desktop App credentials (credentials.json)
  • An active AdMob publisher account

📄 License

MIT — see LICENSE.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.