En pocas palabras
Estándar que permite a aplicaciones de IA descubrir y utilizar herramientas, recursos y prompts externos.
Qué problema resuelve
Integraciones particulares repetidas entre cada agente y cada fuente de datos.
Cuándo utilizarlo
Agentes conectados a sistemas. Ejemplo: exponer consultas de un catálogo interno mediante un servidor MCP.
De la idea a la práctica
Funcionamiento, ejemplos y decisiones para pasar al siguiente nivel.
En el Radar compartido: Trial (valoración de la edición aportada).
Cómo funciona
Un host incorpora clientes que se comunican con servidores MCP. Estos publican capacidades con contratos para invocación y acceso al contexto.
Ejemplo de uso
Un servidor ofrece buscar_servicio y consultar_documentacion. El agente descubre las operaciones, envía argumentos validados y utiliza las respuestas para explicar dependencias del sistema.
Arquitectura
Host (Claude Code, IDE, aplicación de chat)
├── Cliente MCP ──► Servidor MCP "tickets" (stdio, proceso local)
├── Cliente MCP ──► Servidor MCP "base-datos" (stdio)
└── Cliente MCP ──► Servidor MCP "docs" (Streamable HTTP, remoto)
Cada cliente mantiene una conexión con un servidor. Los mensajes son JSON-RPC 2.0 y la conexión empieza con una negociación de versión y capacidades.
Primitivas
| Lado | Primitiva | Quién la controla | Uso |
|---|---|---|---|
| Servidor | Tools | El modelo | Acciones: consultar, crear, ejecutar |
| Servidor | Resources | La aplicación | Datos de contexto identificados por URI (archivos, registros) |
| Servidor | Prompts | El usuario | Plantillas que el usuario elige (slash commands) |
| Cliente | Sampling | — | El servidor pide al host una generación del modelo |
| Cliente | Elicitation | — | El servidor pide información adicional al usuario |
| Cliente | Roots | — | El cliente indica qué directorios o URIs puede usar el servidor |
Transportes
| Transporte | Uso |
|---|---|
| stdio | Servidor como proceso local; credenciales del usuario en su máquina |
| Streamable HTTP | Servidor remoto; una sola URL, respuestas normales o en streaming (sustituye al antiguo HTTP+SSE) |
Para servidores remotos la especificación define autorización basada en OAuth 2.1: el servidor actúa como servidor de recursos y valida tokens emitidos para él.
Un servidor mínimo
from fastmcp import FastMCP
mcp = FastMCP("cartera")
@mcp.tool
def saldo_credito(credito_id: str) -> dict:
"""Devuelve saldo, cuota y días de mora de un crédito."""
return api_cartera.saldo(credito_id)
if __name__ == "__main__":
mcp.run() # stdio por defecto
El docstring y los tipos se convierten en la descripción y el JSON Schema que ve el modelo. Más detalles en FastMCP. Para probar servidores, npx @modelcontextprotocol/inspector ofrece una interfaz para listar e invocar herramientas.
Riesgos de seguridad
| Riesgo | Descripción | Mitigación |
|---|---|---|
| Prompt injection indirecta | Contenido devuelto por una herramienta contiene instrucciones | Tratar resultados como datos; confirmación humana para acciones sensibles |
| Tool poisoning | Descripciones de herramientas maliciosas o que cambian tras instalarse | Revisar y fijar versiones de servidores |
| Exceso de permisos | Un servidor con credenciales amplias | Credenciales por usuario y de mínimo privilegio |
| Token passthrough | Reenviar el token del cliente a APIs aguas abajo | Prohibido por la especificación; usar tokens propios |
| Combinación peligrosa | Datos privados + contenido no confiable + capacidad de enviar fuera | No reunir las tres en la misma sesión sin controles |
Gobierno en una organización
Mantén un registro de servidores aprobados, con propietario, alcance de datos y versión. Prefiere servidores remotos gestionados centralmente para datos corporativos, de modo que credenciales y auditoría no dependan de cada portátil.
Criterios de implementación
Autenticar al usuario, limitar permisos y revisar contenido recuperado y efectos de las herramientas. Fijar versiones y probar compatibilidad; MCP y comunicación entre agentes resuelven necesidades distintas.
Continúa en las fuentes
Documentación oficial para verificar detalles y explorar más.