youtube-analytics-mcp
youtube-analytics-mcp
Ein lokaler, schreibgeschützter MCP-Server, der Claude Zugriff auf die privaten Analysedaten deines YouTube-Kanals gibt – Aufrufe, Wiedergabezeit, Verweildauer, Abonnenten, Verkehrsquellen, Zielgruppendemografie, Einnahmen sowie Thumbnail-Impressionen/CTR. Nicht nur das, was jeder öffentliche API-Schlüssel bereits sehen kann.
Nichts in diesem Server kann etwas auf deinem Kanal bearbeiten, hochladen, veröffentlichen oder löschen. Siehe SECURITY.md für die vollständige Sicherheitsüberprüfung.
Requirements
Node.js 22+
Ein Google-Konto, das den YouTube-Kanal besitzt (oder verwaltet), für den du Daten möchtest
macOS, Linux oder WSL (der
npm run auth-Browserablauf verwendet den Befehlopen)
Related MCP server: youtube-mcp-server
Setup checklist
Befolge diese in der Reihenfolge. Schritte 1–4 finden in der Google Cloud Console statt; Schritte 5–8 auf deinem Rechner.
1. Create a Google Cloud project
Gehe zu console.cloud.google.com und erstelle ein neues Projekt (oder wähle ein vorhandenes, mit dem du dich wohlfühlst).
2. Enable three APIs
Gehe in deinem Projekt zu APIs & Services → Bibliothek und aktiviere jede dieser APIs:
YouTube Data API v3
YouTube Analytics API
YouTube Reporting API (nur für Thumbnail-Impressionen/CTR benötigt – siehe unten)
3. Configure the OAuth consent screen
Gehe zu APIs & Services → OAuth-Zustimmungsbildschirm.
Benutzertyp: Extern (es sei denn, du hast ein Google Workspace-Konto, in diesem Fall funktioniert auch Intern)
Fülle die erforderlichen Felder für App-Name / Support-E-Mail aus
Füge die Analytics-Bereiche hinzu, wenn du dazu aufgefordert wirst (oder überspringe sie – die App fordert sie direkt an, dieser Bildschirm muss nur existieren)
Veröffentliche die App als Produktion. Das ist der Schritt, den Leute überspringen und dann gegen eine Wand laufen: Apps im Modus „Testen“ erlauben nur die Anmeldung von Konten, die du explizit als Testbenutzer hinzugefügt hast, und ihre Aktualisierungstokens laufen nach 7 Tagen ab, was bedeutet, dass du Schritt 6 jede Woche wiederholen müsstest. Die Veröffentlichung als Produktion (ohne Einreichung zur Google-Verifizierungsprüfung) ist für ein persönliches Tool in Ordnung – Google zeigt beim Anmelden eine Warnung „Nicht verifizierte App“ an, und du klickst auf Erweitert → Zu [Name deiner App] wechseln (unsicher), um fortzufahren. Das ist erwartet und sicher für deine eigene App.
4. Create OAuth credentials
Gehe zu APIs & Services → Anmeldedaten → Anmeldedaten erstellen → OAuth-Client-ID.
Anwendungstyp: Desktop-App
Gib ihr einen beliebigen Namen
Kopiere die generierte Client-ID und das Client-Geheimnis – du benötigst sie in Schritt 5
Hier muss keine Weiterleitungs-URI registriert werden; dieser Server bindet zur Authentifizierung einen temporären lokalen Port und Google akzeptiert für Desktop-Clients jede Loopback-Adresse.
5. Install and build
git clone <this-repo-url>
cd youtube-analytics-mcp
npm install
npm run build6. Configure your credentials
cp .env.example .envBearbeite .env und füge die Client-ID / das Client-Geheimnis aus Schritt 4 ein:
GOOGLE_CLIENT_ID=your-client-id.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=your-client-secret.env ist gitignored – es wird niemals committet. Optionale Einstellungen:
GOOGLE_API_KEY– für kein aktuelles Tool erforderlich, lasse es leer, es sei denn, du erweiterst den Server selbst.REVENUE_CURRENCY– standardmäßigUSD. Setze es auf deine AdSense-Auszahlungswährung (z. B.BRL), wenn du die Einnahmen lieber in dieser Währung sehen möchtest; Google rechnet serverseitig um.
7. Authenticate
npm run authDies öffnet deinen Browser für die Google-Anmeldung und speichert ein Aktualisierungstoken unter ~/.youtube-analytics-mcp/token.json (Berechtigungen nur für deinen Benutzer, niemals im Repository). Du musst dies nur einmal tun – der Server aktualisiert das Zugriffstoken danach automatisch.
Überprüfe, ob es funktioniert hat:
npm run auth:statusDu solltest Authenticated und den Namen deines Kanals sehen.
8. Point Claude Code at it
Füge es zu deiner MCP-Konfiguration hinzu, unter Verwendung des absoluten Pfads zu dist/index.js dieses Projekts:
{
"mcpServers": {
"youtube-analytics-channel": {
"command": "node",
"args": ["/absolute/path/to/youtube-analytics-mcp/dist/index.js"]
}
}
}Starte Claude Code neu (oder lade die MCP-Server neu) und du solltest die unten verfügbaren Tools sehen.
Available tools
Tool | Was es tut |
| Bestätigt, dass der Server läuft. |
| Aufrufe, Wiedergabezeit, Verweildauer, Abonnenten, Einnahmen für einen Datumsbereich oder eine Voreinstellung ( |
| Hochgeladene Videos mit Metadaten, filterbar nach Veröffentlichungsdatumsbereich und Langform vs. Shorts. |
| Detaillierte Analysen für ein einzelnes Video. |
| Videos nach beliebiger Metrik sortieren (Aufrufe, Wiedergabezeit, Verweildauer, Abonnenten, Einnahmen, Impressionen, CTR). |
| Tagesweise Zeitreihe. |
| Aufrufe/Wiedergabezeit nach Verkehrsquelle (Suche, Vorschläge, Shorts-Feed, extern usw.), kanalweit oder pro Video. |
| Zielgruppe nach Land, Altersgruppe oder Geschlecht. |
| Einnahmen gesamt oder aufgeschlüsselt nach Video/Tag. Gibt |
| Zwei Datumsbereiche verglichen, mit absoluter + prozentualer Änderung. |
| Thumbnail-Impressionen und Klickrate. Async – siehe unten. |
| Notausstieg für Ad-hoc-Abfragen, eingeschränkt auf eine Whitelist von Metriken/Dimensionen. |
A note on impressions and CTR
YouTube stellt Thumbnail-Impressionen oder CTR nicht über die interaktive Analytics-API (reports.query) unter irgendeiner Dimensions-/Filterkombination bereit – dies wurde direkt gegen die API verifiziert, nicht aus Dokumentationen übernommen. Diese Daten existieren nur in YouTubes Bulk-„Reach-Bericht“, einer separaten asynchronen Job-API:
Der erste Aufruf von
get_impressions_and_ctrregistriert einen wiederkehrenden Berichtsauftrag bei Google.Google benötigt 24–48 Stunden, um den ersten Bericht zu erstellen, und erstellt danach ungefähr täglich neue.
Jeder Aufruf von
get_impressions_and_ctr(oderget_top_videossortiert nach Impressionen/CTR) synchronisiert neu verfügbare Berichte in einen lokalen Cache unter~/.youtube-analytics-mcp/reach-cache.jsonund antwortet dann aus diesem Cache.
Bis der erste Bericht eintrifft, geben diese Tools impressions: 0, impressionsCtr: null und einen note zurück, der erklärt, warum. Das ist bei der ersten Verwendung zu erwarten, kein Fehler.
Troubleshooting
„Zugriff blockiert“ während
npm run auth: Dein OAuth-Zustimmungsbildschirm befindet sich noch im Testmodus. Gehe zurück zu Schritt 3 und füge entweder dein Konto als Testbenutzer hinzu oder veröffentliche es als Produktion.NotAuthenticatedErrorbeim Serverstart: Führenpm run authaus.Einnahmen immer
0: Entweder ist der Kanal nicht monetarisiert, oder die Zahlen sind für diesen Zeitraum tatsächlich null. Das Tool erfindet niemals Einnahmen – überprüfe das Feldavailablevonget_revenue_analytics, um einen echten Berechtigungs-/Zugriffsfehler von echten Nullen zu unterscheiden.get_impressions_and_ctr/ nach Impressionen sortierteget_top_videosgeben nichts zurück: ÜberprüfedataCoveragein der Antwort. WennearliestDatenullist, hat der Bulk-Berichtsauftrag seinen ersten Bericht noch nicht erstellt (kann bis zu 48 Stunden nach dem allerersten Aufruf dauern).
Testing
npm testFührt Unit-Tests (Node's eingebauter Test-Runner) aus, die Datums-/Zeitraumvalidierung, ISO-8601-Dauerparsing, CSV-Parsing, Analytics-Berichtszeilen-Zuordnung und Zeitraumvergleichsmathematik (einschließlich des Null-Division-Randfalls) abdecken. Dies sind nur reine Funktionstests – sie mocken keine Live-Google-API-Aufrufe oder OAuth-Token-Aktualisierung; diese Pfade wurden während der Entwicklung manuell gegen einen echten Kanal validiert.
Security
Siehe SECURITY.md für das vollständige Bedrohungsmodell und die OWASP-Top-10-Überprüfung. Kurzfassung: Alles ist schreibgeschützt, alle Geheimnisse bleiben auf deinem Rechner außerhalb des Repos, und jeder benutzerbereitgestellte Wert, der einen Google-API-Aufruf erreicht, wird zuerst validiert.
License
MIT – siehe LICENSE.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceThis read-only MCP Server allows you to connect to YouTube Analytics data from Claude Desktop through CData JDBC Drivers. Free (beta) read/write servers available at https://www.cdata.com/solutions/mcp1MIT
- AlicenseAqualityCmaintenanceA local stdio MCP server that gives Claude (or any MCP client) full programmatic control over a single YouTube channel, including video upload, channel management, comments, analytics, and more.4633MIT
- AlicenseNot gradedqualityCmaintenanceA local MCP server that connects Claude to your YouTube channel, enabling video analysis, performance tracking, comment reading, and niche suggestions.20MIT
- AlicenseAqualityCmaintenanceA local-first MCP server for inspecting and managing a creator-owned YouTube channel, using Google's official YouTube Data API v3 and Analytics API.1013MIT
Related MCP Connectors
Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.
MCP server giving Claude AI access to 22+ NYC public-record databases for real estate due diligence
MCP server for Google Veo AI video generation
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/adilsonicjunior/youtube-analytics-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server