YouTube MCP Server
Servidor MCP de YouTube
Un servidor de Model Context Protocol (MCP) alojado que ofrece a Claude, Cursor, Windsurf y cualquier otro cliente MCP cuatro herramientas de solo lectura para YouTube. Busca en YouTube, lee datos de vídeos y canales, y extrae transcripciones, sin proyecto de Google Cloud ni clave de YouTube Data API.
https://mcp.hasdata.com/api/mcp?apis=youtube
Contenido
Related MCP server: YouTube MCP Server
Qué necesitas
Un cliente MCP que hable HTTP transmisible con cabeceras personalizadas. Una clave de API de HasData desde el panel de control, gratuita de crear. Nada más. Este es un servidor remoto. No hay paquete que instalar, ni contenedor que ejecutar, ni cuenta de Google en ningún punto del flujo.
Inicio rápido
La URL del servidor es la misma para todos los clientes. Probada con las configuraciones siguientes usando Claude Code, Claude Desktop, Cursor, Windsurf y Cline.
Campo | Valor |
URL |
|
Transporte | HTTP, transmisible |
Cabecera de autenticación |
|
Los clientes con soporte OAuth pueden añadir la misma URL como conector e iniciar sesión sin poner una clave en un archivo de configuración.
claude mcp add --transport http youtube "https://mcp.hasdata.com/api/mcp?apis=youtube" \
--header "x-api-key: your_key_here"Ajustes, luego Conectores, luego Añadir conector personalizado, y pega https://mcp.hasdata.com/api/mcp?apis=youtube e inicia sesión.
Para la ruta de archivo de configuración, añade esto a claude_desktop_config.json:
{
"mcpServers": {
"youtube": {
"type": "http",
"url": "https://mcp.hasdata.com/api/mcp?apis=youtube",
"headers": { "x-api-key": "your_key_here" }
}
}
}~/.cursor/mcp.json para cada proyecto, o .cursor/mcp.json para uno solo:
{
"mcpServers": {
"youtube": {
"url": "https://mcp.hasdata.com/api/mcp?apis=youtube",
"headers": { "x-api-key": "your_key_here" }
}
}
}~/.codeium/windsurf/mcp_config.json. Windsurf llama al campo serverUrl, no url:
{
"mcpServers": {
"youtube": {
"serverUrl": "https://mcp.hasdata.com/api/mcp?apis=youtube",
"headers": { "x-api-key": "your_key_here" }
}
}
}{
"mcpServers": {
"youtube": {
"url": "https://mcp.hasdata.com/api/mcp?apis=youtube",
"type": "streamableHttp",
"headers": { "x-api-key": "your_key_here" },
"disabled": false
}
}
}.vscode/mcp.json en el espacio de trabajo:
{
"servers": {
"youtube": {
"type": "http",
"url": "https://mcp.hasdata.com/api/mcp?apis=youtube",
"headers": { "x-api-key": "your_key_here" }
}
}
}~/.codex/config.toml:
[mcp_servers.youtube]
url = "https://mcp.hasdata.com/api/mcp?apis=youtube"
[mcp_servers.youtube.headers]
"x-api-key" = "your_key_here"~/.gemini/settings.json:
{
"mcpServers": {
"youtube": {
"httpUrl": "https://mcp.hasdata.com/api/mcp?apis=youtube",
"headers": { "x-api-key": "your_key_here" }
}
}
}Ejemplos de prompts
Prompts, no código. Pega uno y el agente elige la herramienta por sí mismo. Cada uno está anotado con las llamadas que requiere, porque en MCP el modelo decide cuántas llamadas hacer y cada llamada exitosa cuesta 10 créditos.
Encuentra los diez vídeos más vistos sobre el Model Context Protocol del último mes, luego extrae la transcripción del primero y dame las tres afirmaciones que hace sobre la llamada a herramientas.
Dos llamadas, 20 créditos.
Toma el canal @GoogleDevelopers. Enumera las pestañas que publica, luego resume las últimas cinco subidas y dime qué temas se repiten.
Dos llamadas, 20 créditos. Leer una pestaña que no has visto requiere una segunda llamada, porque la lista de pestañas llega dentro de la primera respuesta.
Toma este id de vídeo, dQw4w9WgXcQ. Obtén sus estadísticas, luego comprueba cuáles de sus vídeos relacionados provienen del mismo canal.
Una llamada, 10 créditos. Los vídeos relacionados viajan en la misma respuesta.
Busca en YouTube "tutorial de web scraping", ordenado por fecha de subida, solo vídeos de menos de cuatro minutos, y dame los títulos de los capítulos de cada resultado que los tenga.
Una llamada, 10 créditos.
Extrae la transcripción en alemán de este vídeo si existe, y dime en qué idiomas está disponible.
Una llamada, 10 créditos.
La búsqueda acepta los tokens de filtro propios de YouTube, y un agente reduce por duración, fecha de subida y tipo de contenido sin post-procesamiento. Las transcripciones llegan con la lista de pistas de idioma disponibles, lo que permite al agente elegir una sin adivinar.
Paginación cuesta una llamada cada vez. Un prompt de investigación que busca, pagina dos veces y luego extrae tres transcripciones son seis llamadas y 60 créditos. La prueba llega más lejos con preguntas concretas que con rastreos abiertos.
Herramientas
Cuatro herramientas, todas de solo lectura. Las muestras siguientes están recortadas de llamadas reales, y los números en ellas cambian a medida que YouTube se actualiza. Léelas como formas. Cada nombre de herramienta enlaza a su referencia de endpoint, que incluye la lista completa de campos.
Las muestras son el payload, no la respuesta completa. Un resultado de tools/call lleva un bloque de texto, y ese texto es en sí mismo JSON que contiene url, status, text y json, con los datos extraídos bajo json. Desde una respuesta JSON-RPC cruda, la ruta es result.content[0].text, parseado, luego .json. Un cliente de chat lo desenvuelve por ti, y el código que habla directamente con el endpoint no lo hace.
Obtener resultados de búsqueda de YouTube
hasdata_youtube_search_getYoutubeSearchResults
Busca en YouTube y devuelve la página completa de resultados, dividida por tipo de resultado.
Parámetro | Tipo | Obligatorio | Notas |
| string | sí | Consulta de texto libre, exactamente como la escribiría un usuario |
| string |
| |
| string | Ventana de subida relativa a ahora | |
| string | Rango de duración, por ejemplo | |
| string | Restringe a un tipo de contenido | |
| array | Marcas de características, combinables | |
| string | Token | |
| string | El | |
| string | Códigos de país e idioma de dos letras, y dispositivo |
Una página de resultados se divide en videoResults, shortsResults, inlineShortsResults, playlistResults, channelResults y shelves, con colocaciones de pago en adsResults y sponsoredResults. Qué bloques aparecen depende de la consulta, y un bloque sin nada que informar está ausente, no vacío. Comprueba la clave antes de iterar. searchInformation lleva el total y pagination.nextPageToken es lo que devuelves como paginationToken. Los anuncios nunca se mezclan en los arrays orgánicos, aunque hay dos de ellos que saltar.
{
"positionOnPage": 1,
"videoId": "GuTcle5edjk",
"title": "you need to learn MCP RIGHT NOW!! (Model Context Protocol)",
"viewsOriginal": "1.6M views",
"views": 1653824,
"length": "38:40",
"publishedDate": "11 months ago",
"extensions": ["4K"],
"chapters": [
{ "title": "Intro", "time": "0:00" },
{ "title": "Problem: LLMs Suck at Accessing Code", "time": "0:40" }
],
"channel": { "name": "NetworkChuck", "verified": true }
}Dos cosas allí merecen mención. views es un entero parseado junto a la cadena de visualización 1.6M views y no necesita un parser de sufijos. Y chapters vienen dentro de los resultados de búsqueda, no solo en el vídeo en sí, aunque solo algunos vídeos los llevan.
La referencia del endpoint de búsqueda enumera todos los tokens sp y filters__ que acepta el endpoint.
Obtener datos de vídeo de YouTube
hasdata_youtube_video_getYoutubeVideo
Un vídeo por id.
Parámetro | Tipo | Obligatorio | Notas |
| string | sí | El id de vídeo de 11 caracteres de |
| string | Códigos de país e idioma de dos letras, y dispositivo |
Devuelve title, thumbnail, channel, publishedDate, lengthSeconds, category, isFamilySafe y isUnlisted, más los arrays relatedVideos, endScreenVideos, keywords, captions, music y socialLinks. description es un objeto que contiene el texto completo en content y un array links donde cada enlace y hashtag lleva startIndex, length, text y url. El campo text contiene el enlace tal como lo escribió el autor y url contiene el envoltorio de redirección de YouTube, lo que importa si estás extrayendo destinos de patrocinadores o afiliados de las descripciones.
Lee el campo parseado por nombre según la herramienta antes de copiar la muestra siguiente. Los resultados de búsqueda y canal ponen el número parseado en
viewsy la cadena de visualización enviewsOriginal. Esta respuesta lo invierte, manteniendo la cadena enviewsy el número enextractedViews, y la misma inversión se aplica alikesysubscribers. Si lo haces mal,item.views > 100000compara una cadena aquí sin lanzar nunca una excepción.
{
"title": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)",
"views": "1,806,075,152 views",
"extractedViews": 1806075152,
"likes": "19M",
"extractedLikes": 19344370,
"publishedDate": "Oct 24, 2009",
"lengthSeconds": 214,
"category": "Music",
"channel": { "name": "Rick Astley", "subscribers": "4.53M subscribers", "extractedSubscribers": 4530000 }
}Obtener datos de canal de YouTube
hasdata_youtube_channel_getYoutubeChannel
Un canal por id o handle, una pestaña a la vez.
Parámetro | Tipo | Obligatorio | Notas |
| cadena | sí | Identificador canónico |
| cadena |
| |
| cadena | Token de la respuesta anterior. | |
| cadena | Códigos de país e idioma de dos letras, y tipo de dispositivo. |
Devuelve channelInfo, featuredVideo y sections en la pestaña predeterminada. Otras pestañas devuelven su propia forma. channelInfo incluye el identificador, el avatar, el banner, la descripción, las palabras clave del canal y su rssUrl, suficiente para seguir viendo un canal sin hacer sondeos.
La matriz
availableTabsen el ejemplo siguiente contiene etiquetas visibles, y no son los valores que aceptatab.Home,Live,CoursesySearchno se corresponden con ningún valor de parámetro, y el resto deben escribirse en minúsculas. Un agente que lea la lista y recorra cada entrada fallará en la primera.
{
"channelInfo": {
"channelId": "UC_x5XG1OV2P6uZZ5FSM9Ttw",
"name": "Google for Developers",
"handle": "@GoogleDevelopers",
"rssUrl": "https://www.youtube.com/feeds/videos.xml?channel_id=UC_x5XG1OV2P6uZZ5FSM9Ttw",
"isFamilySafe": true,
"availableTabs": ["Home", "Videos", "Shorts", "Live", "Courses", "Playlists", "Posts", "Search"]
}
}Obtener transcripción de vídeo de YouTube
hasdata_youtube_transcript_getYoutubeTranscript
La transcripción cronometrada de un vídeo.
Parámetro | Tipo | Obligatorio | Notas |
| cadena | sí | El identificador de 11 caracteres del vídeo |
| cadena | Código BCP-47 de la pista que quieres | |
| cadena | Pon |
Comprueba
selecteden la respuesta antes de confiar en el idioma. Pedir unlanguageCodeque el vídeo no tiene no falla ni devuelve vacío: simplemente cae a la pista predeterminada. Cada entrada de la lista incluyelanguageNameylanguageCode, y un mismo idioma puede aparecer dos veces, una con autoría humana y otra contypeasr.
{
"transcript": [
{ "startMs": 320, "endMs": 18800, "snippet": "[Music]", "startTimeText": "0:00" },
{ "startMs": 18800, "endMs": 21800, "snippet": "We're no strangers to", "startTimeText": "0:18" }
],
"availableTranscripts": [
{ "languageName": "English", "languageCode": "en" },
{ "languageName": "English", "languageCode": "en", "type": "asr", "selected": true },
{ "languageName": "German (Germany)", "languageCode": "de-DE" },
{ "languageName": "Japanese", "languageCode": "ja" }
]
}Errores y caminos de fallo
Tu cliente casi nunca ve un código de error HTTP en una llamada de herramienta. La capa MCP responde con 200 y coloca el fallo dentro del resultado, con isError en true y el motivo como texto. El agente lee un mensaje donde esperarías una línea de estado.
Una clave incorrecta aparece como salida de herramienta, no como conexión fallida. tools/list acepta cualquier clave no vacía y devuelve las cuatro herramientas, así que el cliente completa el apretón de manos y se muestra en verde. La primera llamada de herramienta devuelve entonces isError: true con el texto HasData API error: 401 Unauthorized. Presta atención a esa cadena, porque nada antes en el flujo informa del problema.
Una clave ausente es el único error HTTP real. La autorización ocurre antes de cualquier herramienta, y la conexión falla con 401. Las cabeceras CORS están presentes, y un cliente de navegador lee el estado y no un fallo opaco de red.
Un argumento que rompe el esquema de una herramienta se rechaza antes de convertirse en una extracción. El servidor responde con isError: true y el texto MCP error -32602: Input validation error, nombrando el campo problemático. No se obtiene nada y no se cobra nada. El mensaje indica el campo, pero no los valores aceptados, así que las tablas de parámetros anteriores son la referencia.
Una llamada que tiene éxito y no encuentra nada es el caso que suele despistar. Llega como un resultado ordinario con requestMetadata.status en ok y la clave de datos simplemente ausente. Nada en el cuerpo dice que el resultado esté vacío. Comprueba el campo que necesitas, no un error.
Un identificador que la plataforma rechaza devuelve 400 con requestMetadata.status en error. Un identificador de canal que no existe es la forma habitual de verlo.
Los resultados que llevan datos también llevan un requestMetadata.id que vale la pena citar en el soporte.
Precios, plan gratuito y límites
Cada herramienta de YouTube cuesta 10 créditos por llamada con éxito. El tamaño de la respuesta no cambia el precio. Una página completa de resultados de búsqueda cuesta lo mismo que una página con un solo vídeo.
La prueba gratuita es de 1.000 créditos durante 30 días sin tarjeta, lo que equivale a 100 llamadas a YouTube. Después, una cuenta activa recibe 100 créditos adicionales cada día siempre que su saldo baje de 100, de modo que un agente de bajo volumen funciona indefinidamente en el plan gratuito.
Los planes de pago empiezan en 49 $ al mes por 200.000 créditos, lo que equivale a 20.000 llamadas. El precio unitario baja con el volumen, desde 2,45 $ por cada 1.000 llamadas en el plan inicial hasta 0,99 $ en Business, 0,83 $ en Growth y 0,75 $ en los planes de alto volumen.
Tu plan también fija la concurrencia. La prueba gratuita permite 1 solicitud a la vez, Startup 15, Business 30, Growth 50, y los planes de alto volumen van de 200 a 1.500. Maneja el caso de desbordamiento con defensa en cualquier entorno desatendido, porque un agente que se ramifica puede alcanzar el techo antes de que te des cuenta.
Una solicitud que vuelve con un código distinto de 200 no se factura. Una llamada con éxito que no encuentra nada sigue siendo una llamada.
Selección de herramientas
El parámetro de consulta apis decide qué herramientas ve tu agente. Menos herramientas significa menos contexto gastado en definiciones de herramientas y menos oportunidades de que el modelo alcance la herramienta equivocada.
?apis=youtube the four tools in this repo
?apis=youtube,google_serp add Google search
?apis=youtube,tiktok,instagram a social research bundleEl parámetro admite nombres de proveedor como youtube y nombres de API individuales como google_maps_search. Los nombres mal escritos se ignoran. Si todos los nombres están mal, la solicitud falla con 400 y el cuerpo indica tanto lo que no se reconoció como todos los valores válidos. Si omites el parámetro, el mismo punto de conexión expone las 57 herramientas de HasData.
Comparativa
Frente a la API de datos de YouTube v3 oficial:
API de datos de YouTube v3 | Este servidor | |
Configuración | Proyecto de Google Cloud y una clave de API | Una clave y una URL |
Cuota de búsqueda | "cuota predeterminada de 100 llamadas | Los créditos de tu plan, 10 por llamada |
Transcripciones de vídeos ajenos |
| Sí, con la lista de idiomas |
Capítulos en los resultados | No | Sí |
Vistas y me gusta en los resultados | Ausentes, y una segunda llamada a | Cadena visible y entero en la misma respuesta |
Coste | Gratis dentro de la cuota | De pago pasado el periodo de prueba, 10 créditos por llamada |
Escrituras y datos privados | Subidas, listas de reproducción, comentarios y tus propias analíticas mediante OAuth | Solo lectura, únicamente datos públicos |
Las dos últimas filas importan. Si la cuota diaria cubre tu volumen y eres dueño del canal que consultas, la API oficial es la opción más barata y deberías elegirla.
La mayoría de los otros servidores MCP de YouTube solo hacen transcripciones. Este además busca, lee vídeos con sus métricas de participación y recorre las pestañas de un canal, de modo que un agente completa un pase de investigación completo sin un segundo servidor.
Lo que este servidor no hace. Sin comentarios, sin gestión de canales, sin subidas, sin analíticas, sin datos privados. Lee lo que un visitante sin sesión puede ver.
Preguntas frecuentes
¿Existe un servidor MCP oficial de YouTube?
Google no publica ninguno. YouTube no tiene un servidor MCP de primera parte. Todas las opciones las construye alguien más, ya sea alrededor de la API de datos de YouTube v3 o de las páginas públicas. Este lo mantiene HasData y lee páginas públicas, por eso no necesita credenciales de Google.
¿Qué es un servidor MCP de YouTube?
Un servidor que expone datos de YouTube como herramientas que un cliente de IA puede llamar. El cliente envía una llamada de herramienta mediante el Protocolo de Contexto de Modelo, el servidor obtiene los datos y devuelve JSON estructurado, y el modelo trabaja con el resultado sin ver nunca una página de HTML. Este expone cuatro herramientas y se ejecuta de forma remota. El cliente se conecta a una URL y no inicia ningún proceso local.
¿Necesito una clave de API de YouTube o un proyecto de Google Cloud?
No. La única credencial es tu clave de HasData. No hay ningún proyecto de Google Cloud que crear, ningún formulario de cuota que rellenar ni ninguna pantalla de consentimiento OAuth, porque las herramientas leen páginas públicas de YouTube y no la API de datos de YouTube.
¿Necesito alojar o ejecutar algo?
No. Es un servidor MCP remoto sobre HTTP continuo. Nada que instalar, ningún contenedor que mantener caliente, ningún proceso que reiniciar.
¿Los datos son en vivo o están en caché?
En vivo. Cada llamada obtiene la página en el momento de la solicitud y lleva su propio requestMetadata.id. Dos llamadas idénticas son dos obtenciones separadas y no una reproducción de una copia almacenada. Contadores como vistas y me gusta siguen a la página, así que se mueven cuando la página se mueve.
¿Qué ocurre cuando YouTube cambia su diseño?
Nada por tu parte. Seguimos los cambios y mantenemos estable el esquema de respuesta, de modo que los nombres de campo y los tipos permanecen fijos. Un campo sin valor está ausente del elemento, no presente y nulo. Lee los campos opcionales con un valor predeterminado.
¿Puedo usar esto junto con otras API de HasData?
Sí. El parámetro apis admite una lista, y ?apis=youtube,google_serp le da a tu agente las cuatro herramientas de YouTube más la búsqueda de Google. Elimina el parámetro y obtienes todo.
¿Puedo obtener una transcripción de cualquier vídeo?
Solo si el vídeo tiene una, y availableTranscripts te dice qué existe antes de que preguntes.
¿Puedo iniciar sesión con OAuth en lugar de pegar una clave?
Sí, en los clientes que lo admiten. Claude Desktop y Cursor pueden añadir el punto de conexión como conector e iniciar sesión. Los agentes y scripts desatendidos usan la cabecera x-api-key.
Cumplimiento y datos personales
HasData solo accede a datos disponibles públicamente. Los términos de una plataforma pueden restringir el acceso automatizado, y usted es responsable de su propio cumplimiento. Cuando los datos que recopila incluyan información personal, asegúrese de tener una base legal para ello según el RGPD, la CCPA o las normas equivalentes en su jurisdicción.
Enlaces de HasData
Página del producto y generador de solicitudes | |
Documentación del servidor | |
Las 57 herramientas en un solo servidor | |
Tutoriales para clientes | |
Todo lo demás que extraemos | |
Planes y costos de créditos | |
Claves y uso |
Desarrollo
Este repositorio es configuración y documentación para un servidor remoto. No hay paso de compilación ni nada que contenerizar.
Las pruebas en test/ verifican el contrato de la herramienta, la parte que puede romperse sin un commit aquí. Comprueban que ?apis=youtube devuelve exactamente cuatro herramientas, que cada herramienta sigue declarando su parámetro requerido, que ningún nombre ha cambiado y que la clave en uso es realmente aceptada. Esa última comprobación llama a una herramienta de verdad y cuesta 10 créditos, que es el precio de un canario que puede fallar por la razón correcta.
# macOS and Linux
HASDATA_API_KEY=your_key_here npm test
# Windows PowerShell
$env:HASDATA_API_KEY="your_key_here"; npm testLa misma suite se ejecuta en CI en cada push y una vez por semana según un horario, porque la lista de herramientas upstream puede cambiar sin que nadie toque este repositorio. Un fallo significa que la lista de herramientas se movió, la clave dejó de funcionar o el endpoint no era accesible, y el mensaje de aserción indica cuál.
Contribuciones
Las correcciones a las tablas de herramientas y a los ejemplos de respuesta son la contribución más útil, porque son las partes que se desvían. Incluya la llamada que hizo y la respuesta que obtuvo. Las solicitudes de extracción de bifurcaciones ejecutan la suite sin clave, y las comprobaciones en vivo se omiten en lugar de ponerse en rojo.
Licencia
MIT. Consulte 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 gradedqualityFmaintenanceA Model Context Protocol server that enables searching YouTube videos, retrieving and storing transcripts, and performing semantic search over video content without using the official YouTube API.29MIT
- AlicenseBqualityBmaintenanceA server that enables interaction with YouTube data through the Model Context Protocol, allowing users to search videos, retrieve detailed information about videos/channels, and fetch comments.1210815MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables AI assistants to access YouTube data in real-time, with capabilities for searching videos, analyzing channels, retrieving video details, and extracting transcripts.12MIT
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server providing comprehensive read-only access to YouTube data, including video search, transcripts, and channel forensics. It features 16 specialized tools designed for content analysis and metadata retrieval in LLM applications.2
Related MCP Connectors
💯 The fastest YouTube transcript + YouTube search MCP for AI agents. Try for free.
Hosted MCP with 91 agent tools: X, domains, SEO, Maps, Trends, Search, YouTube, TikTok, and more.
Provide token-optimized, structured YouTube data to enhance your LLM applications. Access efficien…
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/HasData/youtube-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server