Los agentes de programación escriben código contra la API que recuerdan, y recuerdan la del año pasado. Context7 existe para cerrar esa brecha: mantiene un índice de documentación de librerías y le entrega al agente las piezas relevantes en el momento en que las necesita. Con 64.773 estrellas, upstash/context7 es uno de los MCP servers más instalados que hay.
También ha cambiado de forma varias veces. La herramienta que describen la mayoría de las guías, get-library-docs, ya no existe; ahora hay una cuota gratuita con clave; y las respuestas que obtienes dependen de qué versión de una librería pidas, de formas que son fáciles de pasar por alto. Ejecutamos @upstash/context7-mcp 4.7.0, publicada el 12 de noviembre de 2026, a través del CLI de MCP Inspector el 14 de noviembre de 2026, sin una API key, y revisamos lo que devolvió.
Instalación
Context7 funciona de dos maneras. Ambas hablan con la misma API de Context7 alojada.
| Remoto | Local | |
|---|---|---|
| Dirección o comando | https://mcp.context7.com/mcp |
npx -y @upstash/context7-mcp |
| Clave | Cabecera Authorization: Bearer, u OAuth en /mcp/oauth |
Flag --api-key o CONTEXT7_API_KEY |
| Requiere Node.js | No | 20.18.1 o superior |
| Funciona sin conexión | No | No: sigue llamando a la API alojada |
Elige el remoto salvo que tu cliente no admita servidores HTTP. El paquete local es un cliente ligero; el README de Context7 deja claro que solo el MCP server es de código abierto y que el índice, el parser y el crawler son privados.
Consigue primero una clave gratuita en context7.com. Las claves empiezan por ctx7sk- y solo se muestran una vez.
Claude Code, remoto:
claude mcp add --scope user --header "Authorization: Bearer YOUR_API_KEY" --transport http context7 https://mcp.context7.com/mcp
O el plugin, que usa OAuth a través de /mcp en lugar de una clave:
/plugin marketplace add upstash/context7
/plugin install context7@context7-marketplace
Cursor, en ~/.cursor/mcp.json:
{
"mcpServers": {
"context7": {
"url": "https://mcp.context7.com/mcp",
"headers": { "Authorization": "Bearer YOUR_API_KEY" }
}
}
}
VS Code usa servers en lugar de mcpServers, en .vscode/mcp.json:
{
"servers": {
"context7": {
"type": "http",
"url": "https://mcp.context7.com/mcp",
"headers": { "Authorization": "Bearer YOUR_API_KEY" }
}
}
}
Codex:
codex mcp add context7 -- npx -y @upstash/context7-mcp --api-key YOUR_API_KEY
Si Codex agota el tiempo de espera al arrancar, sube startup_timeout_sec a 40 en su configuración, como sugiere la página de Codex de Context7. Claude Desktop lo añade como conector personalizado: Settings, Connectors, Add Custom Connector, URL https://mcp.context7.com/mcp.
Context7 también ofrece npx ctx7 setup, que te inicia sesión, crea una clave e instala la entrada MCP o una skill para Claude Code, Cursor, Codex u OpenCode. npx ctx7 remove lo deshace. Nuestro generador de configuración escribe las entradas simples si prefieres ver qué va en cada sitio.
Las dos herramientas
tools/list en 4.7.0 devolvió dos herramientas, ambas marcadas como de solo lectura e idempotentes:
| Herramienta | Parámetros | Qué hace |
|---|---|---|
resolve-library-id |
libraryName, query |
Encuentra el ID de Context7 de una biblioteca, clasificado según tu pregunta |
query-docs |
libraryId, query, language opcional |
Devuelve secciones de documentación y ejemplos de código de esa biblioteca |
Las descripciones indican al agente que resuelva primero, salvo que el usuario ya haya dado un ID como /vercel/next.js, y que no haga más de tres llamadas de cada una por pregunta. Ambos campos query llevan la misma advertencia: no incluyas claves de API, contraseñas, datos personales ni código propietario, porque la consulta se envía a la API de Context7.
Si sigues un tutorial antiguo: get-library-docs se sustituyó por query-docs en la versión 2.0.0, y sus parámetros tokens, topic, page y mode ya no existen. Desde la 2.2.5 el servidor corrige en silencio algunos nombres de argumentos que los agentes inventan, como question en lugar de query.
Lo que obtuvimos
Pedimos a resolve-library-id "next.js" con la pregunta "app router middleware". La respuesta fue de 2.175 bytes. El primer resultado fue /vercel/next.js: 7.338 fragmentos de código, reputación de la fuente Alta, puntuación de benchmark 79,96, con versiones desde la v12.3.7 hasta la v16.4.5 además de ramas canary. Después venía /websites/nextjs, el sitio de documentación indexado por separado, con 9.524 fragmentos y una puntuación de 76,15. Dos IDs para un mismo framework es normal en Context7; el repositorio y el sitio web se indexan como bibliotecas distintas.
Luego llamamos a query-docs tres veces:
| ID de biblioteca | Pregunta | Respuesta | Bloques de código |
|---|---|---|---|
/vercel/next.js |
proxy que redirige a usuarios no autenticados | 8.422 bytes | 5 |
/vercel/next.js |
server actions revalidatePath | 4.304 bytes | 8 |
/vercel/next.js/v16.2.9 |
proxy que redirige a usuarios no autenticados | 5.512 bytes | no contados |
Las respuestas son compactas: unas pocas secciones, cada una con un encabezado, un enlace a la fuente y un ejemplo de código, lo bastante pequeñas como para que un agente las llame varias veces en una sesión sin llenar su contexto. Las llamadas anónimas funcionaron sin clave y sin errores.
Fija la versión
El detalle que más importa estaba en los enlaces de origen. Las respuestas sin versión fijada apuntaban a archivos de la rama canary del repositorio de Next.js: documentación de código que aún no se ha publicado. En un framework que avanza rápido, la documentación de canary puede describir APIs, nombres o valores predeterminados que tu versión instalada no tiene.
Fijar la versión lo resuelve. Agrega la versión al ID, /vercel/next.js/v16.2.9, y la respuesta proviene de esa release; la nuestra fue una respuesta distinta y más corta a la misma pregunta. Las versiones que Context7 tiene disponibles se listan en la salida de resolve-library-id, y también puedes indicar la versión con palabras normales en tu prompt.
Una regla permanente te ahorra escribir. El propio consejo de Context7 es una línea en CLAUDE.md o en tus reglas de Cursor que le indica al agente que use Context7 para documentación, configuración y ajustes de librerías sin que se lo pidas. Nosotros agregaríamos una cláusula: "y usa la versión de package.json".
Planes y límites
| Free | Pro | Enterprise | |
|---|---|---|---|
| Precio | $0 | $10 por asiento al mes | Personalizado |
| Llamadas incluidas | 1,000 al mes | 2,000 por asiento al mes | 2,000 por asiento al mes |
| Después de eso | 20 llamadas extra al día hasta que se reinicie el mes | $5 por cada 1,000, nunca se bloquea | $5 por cada 1,000 |
| Repositorios privados | No | Sí, $5 por millón de tokens procesados | Sí |
| Miembros del equipo | Solo tú | Hasta 30 | Ilimitados, con SSO y autoalojamiento |
Una llamada es una búsqueda o una solicitud de documentación, a través del MCP server, el CLI o la REST API. Sin clave obtienes lo que Context7 llama "low rate limits", sin una cifra publicada. Una solicitud limitada devuelve HTTP 429 con las cabeceras Retry-After y RateLimit-*.
En la práctica, cada pregunta que un agente responde con Context7 cuesta dos llamadas: una de resolución y una de consulta, o más si reintenta. Nombrar el ID en tu prompt, o en una regla, se salta el paso de resolución y reduce el costo a la mitad.
Cómo llegan los docs a Context7
Cualquiera puede agregar una biblioteca pública en context7.com/add-library pegando una URL de GitHub, sea o no dueño del proyecto. Context7 también acepta sitios web, archivos llms.txt y especificaciones OpenAPI. Indexa Markdown, MDX, reStructuredText, notebooks y texto similar, convierte PDF y DOCX, y omite las páginas que en su mayoría no están en inglés. Cuando un repositorio tiene poca documentación, Context7 genera ejemplos a partir del código fuente.
Las bibliotecas se actualizan cuando alguien las solicita y la copia está desactualizada. Cuánto tiempo de desfase depende de la popularidad: un día para las top 100, 15 días para las top 1,000, 30 para las top 5,000 y 45 para el resto, con los sitios web y las fuentes llms.txt esperando diez días más. Una biblioteca menos popular puede estar seis semanas por detrás de su propia documentación.
Si mantienes una biblioteca, un archivo context7.json en la raíz del repositorio controla qué se indexa: qué carpetas, qué rama, qué versiones anteriores y las reglas que se anteponen a las respuestas. "disallow": true elimina la biblioteca. Reclamarla te da un panel de administración y un camino hacia la insignia de verificado.
Seguridad
Todo lo que devuelve Context7 lo escribió otra persona, y parte de ello lo enviaron personas que no son dueñas del proyecto. Eso lo convierte en el mismo tipo de entrada que una página web: datos que el modelo lee, no instrucciones que debe seguir.
Context7 afirma que somete cada repositorio y sitio enviado a un clasificador de inyección de prompts de dos pasadas y omite los fragmentos marcados. Puntúa las bibliotecas según su confianza, a partir de señales como la antigüedad de la cuenta, las estrellas y la actividad, y según un benchmark de preguntas de desarrolladores generadas; la puntuación de 79.96 de arriba es ese benchmark. El blog de Upstash dice que la insignia de verificado es, por ahora, solo un indicador visual.
Hay un incidente que conviene conocer. En mayo de 2026, los usuarios informaron de que las respuestas de query-docs terminaban con un "aviso del sistema" que pedía al asistente que ofreciera ejecutar npx ctx7 setup -y (issues 2663 y 2673). Los mantenedores explicaron que era su propia prueba de un aviso de inicio de sesión para usuarios anónimos, añadida en la 2.3.0, y la desactivaron tras las objeciones. Provenía del servidor de Context7 y no de la documentación de una biblioteca, pero demuestra lo fácil que es que un texto en el resultado de una herramienta pida a un agente que ejecute un comando. Aprueba tú mismo los comandos de shell.
Las reglas prácticas: mantén los secretos fuera de las preguntas, prioriza bibliotecas verificadas o conocidas y, en Pro o Enterprise, usa una política de teamspace para restringir qué bibliotecas se pueden usar. Más sobre este tipo de riesgo en Seguridad en MCP.
Alternativas
| Servidor | Qué hace | Clave | Notas |
|---|---|---|---|
| Context7 | Índice preconstruido de documentación de librerías con versiones y puntuaciones | Clave gratuita | 64.773 estrellas, servidor MIT, índice privado |
| DeepWiki MCP | Responde preguntas sobre cualquier repositorio público de GitHub a partir de una wiki escrita por IA | Ninguna | Alojado por Cognition en mcp.deepwiki.com/mcp, gratuito |
| GitMCP | Convierte el llms.txt o el README de un repositorio en un endpoint de documentación |
Ninguna | 8.515 estrellas, Apache-2.0, último push en mayo de 2026 |
| Ref | Busca en la documentación y lee páginas | Obligatoria | 1.186 estrellas, MIT; precio no indicado en su sitio |
Context7 encaja mejor cuando quieres la misma librería en una versión conocida cada vez. DeepWiki va bien para entender un repositorio desconocido en conjunto. GitMCP es la opción más ligera para un proyecto que publica un buen llms.txt. Para trabajo específico de un framework, el servidor propio del framework puede superarlos a todos; Next.js 16 entrega documentación con la versión correspondiente a los agentes mediante next-devtools-mcp, que cubrimos en nuestra guía de MCP para Next.js.
Cuando no funciona
| Lo que ves | Causa | Solución |
|---|---|---|
| HTTP 429 | Se alcanzó el límite gratuito o anónimo | Añade una clave, espera el bono diario o mejora el plan; consulta el uso con el endpoint de uso de la API |
| El código usa una API que tu versión no tiene | Consulta sin versión fijada respondida desde docs más recientes o canary | Fija /org/project/vX o indica la versión en el prompt |
| El agente nunca llama a Context7 | No hay "use context7" ni una regla permanente | Añade la regla a CLAUDE.md o a las reglas de Cursor |
El tutorial llama a get-library-docs |
Escrito antes de 2.0.0 | Usa resolve-library-id y query-docs |
| Codex falla al iniciar | Tiempo de espera de arranque | Configura startup_timeout_sec en 40 |
| Una biblioteca está desactualizada | La actualización es bajo demanda, hasta 45 días | Actualízala en su página de Context7 o pide al mantenedor que añada la GitHub Action |
| Vuelve el proyecto equivocado | Varios IDs para un mismo nombre | Lee la lista de resolución y elige según los fragmentos, la reputación y la puntuación; luego indica el ID |
Las entradas de Context7 en nuestro catálogo, con las puntuaciones de las comprobaciones y los comandos de instalación, están al principio de esta página.