MCP (Claude)
Über MCP-Server kann Claude (Claude Code / Desktop) direkt auf unsere Datenquellen zugreifen. Das ist das Werkzeug für Ad-hoc-Analysen, Audits und Kreuz-Auswertungen („Ads-Kosten × echte Buchungen") — Fragen stellen statt Dashboards klicken.
Die drei Server
| Server | Zugriff auf | Schreibzugriff? |
|---|---|---|
google-ads-mcp | Google-Ads-Konten via GAQL | Nein — rein lesend |
analytics-mcp | GA4-Properties (Reports, Funnel, Realtime) | Nein |
kickmobimed-mcp | Praxissystem (Termine, Kontakte, wochenweise) | Nein |
Weil alles read-only ist, kann eine MCP-Analyse nie versehentlich etwas am Konto ändern. Änderungen laufen über Web-UI oder Editor.
google-ads-mcp
- Tools:
customers_list_accessible_customers,search_search(GAQL-Abfragen),metadata_get_resource_metadata(verfügbare Felder je Resource nachschlagen) - Setup: läuft via pipx aus dem offiziellen Repo
github.com/googleads/google-ads-mcp; registriert im User-Scope (~/.claude.json); Arbeitsordner mit Credentials:/Users/niels/Development/google-ads-mcp/ - Wichtige Umgebungswerte:
GOOGLE_ADS_LOGIN_CUSTOMER_ID=6641786149(MCC als Login-Konto), Abfragen für Spanholtz mitcustomer_id=5062677310 - Auth: ADC (Application Default Credentials) — der Server ignoriert Service-Account-Keys. Einrichten (interaktiv, mit dem Google-Konto, das MCC-Zugriff hat):
gcloud auth application-default login \
--client-id-file=/Users/niels/Development/google-ads-mcp/credentials2.json \
--scopes=https://www.googleapis.com/auth/adwords,https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/analytics.readonly(Der analytics.readonly-Scope in derselben Anmeldung versorgt auch den analytics-mcp.)
Wichtig: Alle drei Scopes gehören bei jeder Neuanmeldung mit rein, auch wenn nur einer der beiden Server gerade Probleme macht —
google-ads-mcpundanalytics-mcpteilen sich dieselbeapplication_default_credentials.json. Meldest du dich z. B. nur mitanalytics.readonlyneu an, verliertgoogle-ads-mcpsofort seinen Zugriff (ACCESS_TOKEN_SCOPE_INSUFFICIENTaufgoogleads.googleapis.com) und umgekehrt.
Erstmalige Einrichtung / neue:r Kolleg:in: Bevor der Login-Befehl oben überhaupt durchläuft, müssen zwei Dinge einmalig im GCP-Projekt (kicktemp-ads-dashboard, Projektnummer 845561902365) passen — sonst kommt im Browser „Diese App ist blockiert":
- Google Cloud Console → Google Auth Platform → Zielgruppe → Nutzertyp auf „Intern"
- Google Cloud Console → Google Auth Platform → Datenzugriff → „Bereiche hinzufügen oder entfernen" →
analytics.readonlyundadwordsmüssen dort als vertrauliche Bereiche gelistet sein
Beides betrifft das ganze Projekt, nicht den einzelnen OAuth-Client — einmal gesetzt, gilt es für jede:n mit @kicktemp.com-Konto. Als Client-ID-Datei kann jeder bestehende Desktop-Client im Projekt verwendet werden (credentials2.json oben, oder z. B. Analytics MCP OAuth Client unter /Users/niels/Development/google-analytics-mcp/).
Zusätzlich braucht eine neue Person, damit die MCP-Tools wirklich Daten liefern (nicht nur Login funktioniert):
- GCP-Projekt-Zugriff: IAM → Rolle „Service Usage Consumer" auf
kicktemp-ads-dashboard - GA4-Property-Zugriff: separat in analytics.google.com → Verwaltung → Zugriffsverwaltung (nicht über GCP-IAM steuerbar)
- Google-Ads-Zugriff: separat im Ads-Konto/MCC freigeben
- kickmobimed: eigener API-Token im Joomla-Profil (Reiter „API-Token") — niemals einen fremden Token weiterreichen
Fertige Abfragen: GAQL-Rezepte. Vorbereitete Sammlung außerdem in /Users/niels/Development/google-ads-mcp/queries-kickmobimed.md.
analytics-mcp
- Tools:
get_account_summaries,get_property_details,run_report,run_realtime_report,run_funnel_report,run_conversions_report,list_google_ads_links,get_custom_dimensions_and_metrics,list_property_annotations - Nutzt dieselbe ADC-Datei wie google-ads-mcp — deshalb müssen die Scopes gemeinsam angemeldet werden (siehe oben).
- Anwendungsbeispiele: GA4-Reports
kickmobimed-mcp
- Tools: 9
get_*_weekly-Auswertungen (Termine/Kontakte je Kalenderwoche, gruppiert nach Standort, Arzt, Leistung, Kampagne, …) - Liefert ISO-Kalenderwochen; viele Tools haben den Parameter
type=booked|scheduled— Unterschied unbedingt verstehen - Details und Interpretation: kickmobimed-MCP
Troubleshooting
| Symptom | Ursache | Fix |
|---|---|---|
ACCESS_TOKEN_SCOPE_INSUFFICIENT (analytics-mcp oder google-ads-mcp) | ADC ohne den jeweils nötigen Scope angemeldet — meist weil bei der letzten Neuanmeldung nicht alle drei Scopes mit angegeben wurden | ADC-Login mit allen drei Scopes wiederholen (Befehl oben), Claude-Code-Session neu starten |
| „Diese App ist blockiert" im Browser beim ADC-Login | Projekt hat „Zielgruppe" nicht auf „Intern" gesetzt, oder der angefragte Scope fehlt unter „Datenzugriff" | Google Auth Platform → Zielgruppe auf „Intern", → Datenzugriff → Scope hinzufügen (siehe oben, einmalig fürs ganze Projekt) |
NOT_ADS_USER | ADC mit falschem Google-Konto (z. B. Gmail statt Agentur-Konto) | ADC-Login mit dem richtigen Konto wiederholen (~/.config/gcloud/application_default_credentials.json wird ersetzt) |
User doesn't have permission to access customer … login-customer-id | Konto hängt nicht unterm MCC bzw. falsches Login-Konto gesetzt | Konto im MCC verknüpfen oder GOOGLE_ADS_LOGIN_CUSTOMER_ID prüfen |
| Neues MCP-Tool „nicht gefunden" | MCP-Änderungen wirken erst nach Neustart | Claude-Code-Session neu starten |
| Kosten wirken 1-millionenfach zu hoch | Micros | ÷ 1.000.000 |
change_event liefert alte Änderung nicht | API-Limit 30 Tage | Änderungshistorie in der Web-UI |
Wofür MCP das beste Werkzeug ist
- Der Monats-Audit — Playbook mit fertigen Abfragen
- Kreuz-Analysen: „Welche Kampagne liefert echte Buchungen pro Euro?" (Ads-Kosten × Conversion-Mix × Praxissystem-booked)
- Anomalie-Diagnose: „Warum sind die Buchungen in KW X eingebrochen?" — Claude kann alle drei Quellen in einer Session befragen und den Entscheidungsbaum durchgehen