youtube-analytics-mcp
youtube-analytics-mcp
Un servidor MCP local, de solo lectura, que le da a Claude acceso a los datos privados de Analytics de tu canal de YouTube — visualizaciones, tiempo de visualización, retención, suscriptores, fuentes de tráfico, datos demográficos de la audiencia, ingresos e impresiones de miniaturas/CTR. No solo lo que cualquier clave de API pública ya puede ver.
Nada en este servidor puede editar, subir, publicar ni eliminar nada en tu canal. Consulta SECURITY.md para la revisión de seguridad completa.
Requisitos
Node.js 22+
Una cuenta de Google que sea propietaria (o gestione) del canal de YouTube del que quieras obtener datos
macOS, Linux o WSL (el flujo del navegador de
npm run authusa el comandoopen)
Related MCP server: youtube-mcp-server
Lista de configuración
Sigue estos pasos en orden. Los pasos 1–4 se hacen en Google Cloud Console; los pasos 5–8 se hacen en tu máquina.
1. Crea un proyecto de Google Cloud
Ve a console.cloud.google.com y crea un proyecto nuevo (o elige uno existente con el que te sientas cómodo).
2. Activa tres APIs
En tu proyecto, ve a APIs y servicios → Biblioteca y activa cada una de estas:
YouTube Data API v3
YouTube Analytics API
YouTube Reporting API (solo se necesita para impresiones de miniaturas/CTR — consulta más abajo)
3. Configura la pantalla de consentimiento de OAuth
Ve a APIs y servicios → Pantalla de consentimiento de OAuth.
Tipo de usuario: Externo (a menos que tengas una cuenta de Google Workspace, en cuyo caso Interno también funciona)
Rellena los campos obligatorios de nombre de la aplicación / correo de soporte
Añade los ámbitos (scopes) de Analytics cuando se te pida (u omítelo — la aplicación los solicita directamente; esta pantalla solo necesita existir)
Publica la aplicación en Producción. Este es el paso que la gente se salta y luego choca contra un muro: las aplicaciones que quedan en modo "Pruebas" solo permiten iniciar sesión con cuentas que hayas añadido explícitamente como usuarios de prueba, y sus tokens de actualización caducan a los 7 días, lo que significa que tendrías que repetir el paso 6 cada semana. Publicar en Producción (sin enviarla a la revisión de verificación de Google) está bien para una herramienta personal — Google mostrará una advertencia de "aplicación no verificada" al iniciar sesión, y haces clic en Avanzado → Ir a [nombre de tu aplicación] (no seguro) para continuar. Eso es lo esperado y es seguro para tu propia aplicación.
4. Crea las credenciales de OAuth
Ve a APIs y servicios → Credenciales → Crear credenciales → ID de cliente de OAuth.
Tipo de aplicación: Aplicación de escritorio
Ponle cualquier nombre
Copia el Client ID y el Client Secret que genera — los necesitarás en el paso 5
No es necesario registrar ninguna URI de redirección aquí; este servidor vincula un puerto local efímero en el momento de la autenticación y Google acepta cualquier dirección de loopback para clientes de tipo escritorio.
5. Instala y compila
git clone <this-repo-url>
cd youtube-analytics-mcp
npm install
npm run build6. Configura tus credenciales
cp .env.example .envEdita .env y pega el Client ID / Client Secret del paso 4:
GOOGLE_CLIENT_ID=your-client-id.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=your-client-secret.env está en gitignore — nunca se incluirá en un commit. Configuración opcional:
GOOGLE_API_KEY— no es necesaria para ninguna herramienta actual; déjala en blanco salvo que amplíes el servidor por tu cuenta.REVENUE_CURRENCY— su valor predeterminado esUSD. Configúrala con la moneda de pago de AdSense (p. ej.BRL) si prefieres ver las cifras de ingresos en esa moneda; Google convierte en el lado del servidor.
7. Autentícate
npm run authEsto abre tu navegador para iniciar sesión en Google y guarda un token de actualización en ~/.youtube-analytics-mcp/token.json (permisos limitados solo a tu usuario — nunca en el repositorio). Solo necesitas hacerlo una vez — el servidor renueva el token de acceso automáticamente después.
Verifica que ha funcionado:
npm run auth:statusDeberías ver Authenticated y el nombre de tu canal.
8. Apunta Claude Code a él
Añádelo a tu configuración de MCP usando la ruta absoluta al dist/index.js de este proyecto:
{
"mcpServers": {
"youtube-analytics-channel": {
"command": "node",
"args": ["/absolute/path/to/youtube-analytics-mcp/dist/index.js"]
}
}
}Reinicia Claude Code (o recarga los servidores de MCP) y deberías ver que las herramientas siguientes están disponibles.
Herramientas disponibles
Herramienta | Qué hace |
| Confirma que el servidor está activo. |
| Visualizaciones, tiempo de visualización, retención, suscriptores e ingresos para un rango de fechas o un valor predefinido ( |
| Vídeos subidos con metadatos, filtrables por rango de fechas de publicación y por formato largo vs. Shorts. |
| Análisis en profundidad de un solo vídeo. |
| Clasifica vídeos por cualquier métrica (visualizaciones, tiempo de visualización, retención, suscriptores, ingresos, impresiones, CTR). |
| Serie temporal día a día. |
| Visualizaciones/tiempo de visualización por fuente de tráfico (búsqueda, sugeridos, feed de Shorts, externo, etc.), a nivel de canal o por vídeo. |
| Audiencia por país, grupo de edad o género. |
| Total de ingresos o desglose por vídeo/día. Devuelve |
| Compara dos rangos de fechas, con cambio absoluto y porcentual. |
| Impresiones de miniaturas y porcentaje de clics (CTR). Asíncrono — ver más abajo. |
| Vía de escape para consultas ad hoc, restringida a una lista permitida de métricas/dimensiones. |
Una nota sobre las impresiones y el CTR
YouTube no expone las impresiones de miniaturas ni el CTR a través de la API interactiva de Analytics (reports.query) en ninguna combinación de dimensión/filtro — esto se verificó directamente contra la API, no se asumió a partir de la documentación. Esos datos solo existen en el informe masivo "Reach report" de YouTube, una API de trabajos asíncronos aparte:
La primera llamada a
get_impressions_and_ctrregistra un trabajo de informes recurrente en Google.Google tarda 24–48 horas en producir el primer informe y luego sigue generando informes nuevos aproximadamente a diario.
Cada llamada a
get_impressions_and_ctr(o aget_top_videosordenado por impresiones/CTR) sincroniza los informes recién disponibles en una caché local en~/.youtube-analytics-mcp/reach-cache.jsony luego responde desde esa caché.
Hasta que llegue el primer informe, estas herramientas devuelven impressions: 0, impressionsCtr: null y una note que explica el motivo. Esto es lo esperado en el primer uso, no un error.
Solución de problemas
"Acceso bloqueado" durante
npm run auth: tu pantalla de consentimiento de OAuth sigue en modo "Pruebas". Vuelve al paso 3 y añade tu cuenta como usuario de prueba o publica en Producción.NotAuthenticatedErroral iniciar el servidor: ejecutanpm run auth.Los ingresos siempre son
0: o el canal no está monetizado, o las cifras son realmente cero para ese período. La herramienta nunca inventa ingresos — consulta el campoavailabledeget_revenue_analyticspara distinguir un fallo real de permisos/acceso de los ceros reales.get_impressions_and_ctr/get_top_videosordenado por impresiones no devuelven nada: compruebadataCoverageen la respuesta. SiearliestDateesnull, el trabajo de informe masivo aún no ha producido su primer informe (puede tardar hasta 48h desde la primera llamada).
Pruebas
npm testEjecuta pruebas unitarias (el ejecutor de pruebas integrado de Node) que cubren la validación de fechas/períodos, el análisis de duraciones ISO-8601, el análisis de CSV, el mapeo de filas de informes de Analytics y el cálculo de comparación de períodos (incluido el caso límite de división por cero). Son solo pruebas de funciones puras — no simulan llamadas reales a la API de Google ni la renovación de tokens de OAuth; esas rutas se validaron manualmente contra un canal real durante el desarrollo.
Seguridad
Consulta SECURITY.md para el modelo de amenazas completo y la revisión del OWASP Top 10. En resumen: todo es de solo lectura, todos los secretos permanecen en tu máquina fuera del repositorio y cada valor proporcionado por el usuario que llega a una llamada a la API de Google se valida primero.
Licencia
MIT — consulta 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