- MCP es un protocolo abierto sobre JSON-RPC 2.0 que define cómo las aplicaciones LLM descubren y usan herramientas externas sin integraciones ad hoc.
- Publicado por Anthropic en noviembre de 2024 y donado a la Agentic AI Foundation para gobernanza independiente.
- Tres primitivas del servidor: Tools (acciones), Resources (datos) y Prompts (plantillas). Tres primitivas del cliente: Sampling, Roots y Elicitation.
- Dos transportes: stdio para servidores locales, Streamable HTTP para servidores remotos con autorización OAuth 2.1.
- Adoptado por Claude Desktop, Claude Code, Cursor, VS Code, GitHub Copilot, ChatGPT y Gemini a mayo de 2026.
El coste de N x M integraciones
Antes de MCP, conectar un modelo de IA a una herramienta externa requería código específico para cada par modelo-herramienta. Con N modelos y M herramientas, el resultado era una matriz de N x M integraciones incompatibles entre sí.
Cuando un equipo quería que su asistente de IA pudiera consultar una base de datos, buscar en un repositorio de código o leer archivos del sistema, tenía que escribir integraciones desde cero para cada combinación. El equipo que usaba GPT-4 escribía conectores distintos a los del equipo que usaba Claude o Gemini. Si cambiaban de modelo, reescribían toda la capa de integración. Si añadían una herramienta nueva, hacían lo mismo para cada modelo activo.
Anthropic formuló el problema en el lanzamiento de MCP como "el problema de los silos de información y la fragmentación de conectores". La analogía que usó el protocolo oficial: igual que USB-C eliminó la proliferación de conectores propietarios en electrónica de consumo, MCP propone un conector estándar para que cualquier aplicación LLM pueda hablar con cualquier fuente de datos o herramienta externa sin código específico para cada par.
Qué es MCP exactamente
MCP es un protocolo de mensajería sobre JSON-RPC 2.0. Define cómo hosts, clients y servers se descubren, negocian capacidades y se comunican de forma estandarizada.
La definición más precisa, según la especificación normativa de modelcontextprotocol.io , es que MCP es un protocolo abierto que permite la integración fluida entre aplicaciones LLM y fuentes de datos o herramientas externas. Usa JSON-RPC 2.0 como protocolo de mensajería y organiza la comunicación en tres roles: host, client y server.
MCP no es una librería ni un SDK específico: es una especificación de
protocolo. La especificación canónica actual es la versión
2025-11-25, publicada en
modelcontextprotocol.io/specification/2025-11-25 .
A partir de esa especificación existen implementaciones oficiales en Python
(FastMCP) y TypeScript, además de implementaciones de comunidad en Go, Rust,
Java y otros lenguajes.
La diferencia más importante respecto al function calling tradicional es de nivel de abstracción. El function calling clásico está acoplado al proveedor del modelo: el desarrollador traduce manualmente sus funciones a schemas propietarios y vuelve a inyectar los resultados. MCP eleva ese mecanismo a un protocolo con descubrimiento de capacidades, negociación de transporte, gestión de lifecycle y autorización estandarizada, todo vendor-neutral.
Arquitectura: host, client y server
La arquitectura canónica de MCP separa tres roles con responsabilidades bien delimitadas. Entender esta separación es clave para saber dónde poner cada pieza al construir agentes.
El flujo de una interacción típica sigue estos pasos:
-
Inicialización: el client envía
initializeal server con la versión del protocolo y sus capacidades. El server responde con sus propias capacidades. Se establece el lifecycle de la sesión. -
Descubrimiento: el host llama a
tools/list,resources/listyprompts/listpara conocer lo que el server puede hacer. El server puede enviar notificaciones si sus capacidades cambian. -
Invocación: el LLM decide usar una tool o leer un resource.
El host llama a
tools/calloresources/readcon los argumentos necesarios. El server ejecuta la acción y devuelve el resultado. - Cierre: cuando la sesión termina, ambos lados ejecutan el shutdown definido en el protocolo. El client puede reconectarse en sesiones futuras con el mismo server.
Toda la comunicación usa JSON-RPC 2.0: mensajes con
jsonrpc: "2.0", un id para correlacionar petición
y respuesta, un campo method y un campo params
o result. MCP añade encima el lifecycle de sesión, la
negociación de capacidades y los tipos de mensajes específicos del protocolo
(requests, responses, notifications y errors).
Primitivas: Tools, Resources y Prompts
MCP define tres primitivas en el lado del servidor y tres en el lado del cliente. Cada una tiene un propósito distinto y un patrón de uso específico en el ciclo de vida de un agente.
Primitivas del servidor
Tools (herramientas)
Acciones que el modelo puede invocar para realizar operaciones: ejecutar una consulta SQL, buscar en un repositorio, enviar un mensaje, crear un fichero. Cada tool tiene un nombre, una descripción y un input schema JSON que el modelo usa para saber cómo llamarla. La ejecución ocurre en el server, no en el modelo. La documentación oficial las define como "model-controlled".
Resources (recursos)
Fuentes de datos que el server expone para que el host o el modelo las lean: ficheros del sistema, registros de base de datos, respuestas de API, contenido de páginas web. A diferencia de las tools, los resources son "application-controlled": el host decide cuándo leerlos, no el modelo directamente. Cada resource tiene una URI única y un tipo MIME.
Prompts (plantillas)
Plantillas de prompt reutilizables que el server ofrece al host. Permiten que los servidores expongan formas estandarizadas de interactuar con sus capacidades. Un servidor de base de datos podría ofrecer un prompt "explica este esquema" que ya incluya el contexto del schema actual, listo para que el usuario lo active con un solo clic.
Primitivas del cliente
Transportes: stdio local y Streamable HTTP remoto
MCP define dos transportes principales según si el servidor está en la misma máquina o en un servidor remoto. La elección del transporte afecta la configuración, la seguridad y la autorización necesaria.
stderr para logs, no stdout, para no corromper
el canal JSON-RPC.
La especificación también documenta compatibilidad con el transporte SSE legado (usado en versiones anteriores a 2025-11-25) para que los clientes puedan mantener compatibilidad con servidores antiguos. Si tienes que soportar servidores heredados, la recomendación oficial es intentar primero Streamable HTTP y caer a SSE si el endpoint falla.
Autorización: OAuth 2.1 + PKCE
Para servidores remotos sobre HTTP, MCP específica un flujo de autorización basado en OAuth 2.1 con PKCE (Proof Key for Code Exchange). El servidor protegido actúa como OAuth 2.1 Resource Server y debe exponer un documento Protected Resource Metadata. El flujo es:
- El client recibe un
401 Unauthorizedcon cabeceraWWW-Authenticate. - Descubre el Protected Resource Metadata del servidor para saber qué Authorization Server usar.
- Completa un authorization code flow con PKCE (S256 obligatorio cuando sea técnicamente posible).
- Usa el access token en peticiones posteriores. El server puede elevar privilegios en runtime via step-up authorization.
Para servidores locales en stdio, la recomendación de la spec es no usar OAuth y extraer credenciales del entorno o de librerías embebidas directamente.
MCP frente a APIs REST tradicionales
MCP no reemplaza las APIs REST: las envuelve y las hace descubribles por modelos de lenguaje. La diferencia clave está en quién controla la integración y a qué nivel de abstracción.
| Dimensión | API REST tradicional | MCP |
|---|---|---|
| Descubrimiento de capacidades | Manual (documentación + OpenAPI) | Automático via tools/list |
| Negociación de versión | Versionado de URL (/v1/, /v2/) |
Handshake de inicialización estándar |
| Acoplamiento a proveedor | Alto: cada API tiene su schema propio | Vendor-neutral: JSON-RPC estándar |
| Datos + acciones | Solo HTTP: GET para datos, POST para acciones | Resources (datos) + Tools (acciones) unificados |
| Interactividad con el usuario | No prevista en el protocolo | Elicitation: el server puede pedir input al usuario |
| Invocación de LLM desde el server | No (el server no sabe que hay un LLM) | Sampling: el server puede pedir inferencia al cliente |
| Contexto de trabajo | Sin concepto equivalente | Roots: el client informa al server del workspace |
| Streaming de respuestas | Requiere implementación específica (SSE, WebSocket) | Incluido en Streamable HTTP transport |
| Autorización estandarizada | Cada API define su propio esquema | OAuth 2.1 + PKCE definido en la spec |
| Curva de aprendizaje inicial | Baja: HTTP + JSON conocido por todos | Media: protocolo nuevo con conceptos específicos |
La razón de adopción rápida de MCP no es que sustituya a REST, sino que elimina el trabajo de integración repetitivo. Sin MCP, cuando quieres que Claude pueda usar tu API de Postgres, escribes un conector específico para Claude. Cuando cambias a otro modelo, reescribes. Con MCP, escribes el servidor MCP una vez y funciona con cualquier cliente compatible. El servidor de Postgres existente en el registro oficial ya lo ha escrito alguien; solo necesitas configurarlo.
Adopción actual: de Anthropic al ecosistema completo
Entre noviembre de 2024 y mayo de 2026, MCP pasó de ser un protocolo interno de Anthropic a ser implementado por los principales entornos de desarrollo con IA del mercado.
La cronología relevante para entender la adopción:
- Noviembre 2024: Anthropic publica MCP como protocolo abierto junto con los primeros servidores de referencia (filesystem, GitHub, Postgres, Brave Search, Puppeteer). Claude Desktop es el primer host.
- Marzo 2025: primera revisión mayor de la especificación (
2025-03-26). Se introducen mejoras en transportes y autorización. - Septiembre 2025: lanzamiento del Official MCP Registry en preview, el catálogo canónico de servidores públicos.
- Noviembre 2025: especificación
2025-11-25, la versión canónica de referencia actual. Se estabiliza OAuth 2.1, Streamable HTTP y las primitivas de cliente (Sampling, Roots, Elicitation). - Enero 2026: Visual Studio Code anuncia soporte nativo de MCP para GitHub Copilot.
- 2026: Anthropic dona el protocolo a la Agentic AI Foundation para gobernanza independiente. ChatGPT integra conectores MCP. Gemini API soporta MCP para coding agents.
A mayo de 2026, el registro oficial de MCP cuenta con más de 97 servidores verificados en github.com/mcp , incluyendo integraciones con GitHub, Atlassian, Figma, Notion, Zapier, Elasticsearch, Slack, Postgres, Microsoft Learn, Dynamics 365 y Power BI, entre otros. El ecosistema público total es considerablemente mayor, con servidores de comunidad fuera del registro oficial.
Preguntas frecuentes sobre MCP
MCP es un protocolo abierto publicado por Anthropic en noviembre de 2024 que define un estándar de comunicación entre aplicaciones LLM y herramientas o fuentes de datos externas. Usa JSON-RPC 2.0 y organiza la comunicación entre hosts (la aplicación que el usuario ve), clients (la conexión protocolaria) y servers (los que exponen herramientas y datos). Funciona como el "USB-C de la IA": un servidor MCP escrito una vez funciona con cualquier cliente compatible.
MCP resuelve el problema de la fragmentación de conectores. Sin un estándar común, cada modelo de IA necesita una integración ad hoc con cada herramienta, lo que genera una matriz de N modelos x M herramientas integraciones distintas. Con MCP, cualquier cliente compatible puede usar cualquier servidor sin código específico para cada par, igual que cualquier dispositivo USB-C puede cargarse con cualquier cargador compatible.
Las tres primitivas del servidor son: Tools (herramientas que el modelo puede invocar para ejecutar acciones), Resources (fuentes de datos que el servidor expone para que el host las lea, como ficheros o registros de base de datos) y Prompts (plantillas de prompt reutilizables que el servidor ofrece al host). Además existen tres primitivas del cliente: Sampling (el server puede pedir inferencia LLM al cliente), Roots (el cliente informa al server del workspace) y Elicitation (el server puede pedir input al usuario).
MCP fue creado por Anthropic y publicado como protocolo abierto el 25 de noviembre de 2024. En 2026 Anthropic anunció la donación del protocolo a la Agentic AI Foundation para garantizar su gobernanza independiente de cualquier proveedor. La especificación canónica de referencia es la versión 2025-11-25, disponible en modelcontextprotocol.io.
El function calling tradicional está acoplado al proveedor del modelo y asume que el desarrollador traduce manualmente sus funciones a schemas en cada interacción. MCP generaliza y externaliza este mecanismo: añade un protocolo vendor-neutral con descubrimiento de capacidades, negociación de transportes, autorización OAuth 2.1 y primitivas como Sampling, Roots y Elicitation que no tienen equivalente en el function calling clásico. La diferencia es de nivel de abstracción: MCP es un protocolo de sistema, el function calling es un mecanismo de API.
A mayo de 2026, MCP está soportado por Claude Desktop, Claude Code, Cursor, Visual Studio Code con GitHub Copilot, ChatGPT (via conectores), Gemini API y varios entornos de desarrollo más. El registro oficial cuenta con más de 97 servidores verificados en github.com/mcp. La lista completa de clientes con su nivel de soporte por primitiva está disponible en modelcontextprotocol.io/clients.
Explora los servidores MCP disponibles
Guía completa de servidores MCP: servidores oficiales vs comunidad, criterios de seguridad para elegirlos, ejemplos populares y riesgos de supply chain que debes conocer antes de integrar servidores de terceros.
Ver servidores MCP