MCP (Model Context Protocol)
Protocolo abierto creado por Anthropic que estandariza cómo los agentes AI se conectan a aplicaciones y servicios externos.
Pronunciación
Qué es
MCP (Model Context Protocol) es un protocolo abierto desarrollado por Anthropic que define cómo los modelos de AI (como Claude, ChatGPT, Gemini) se conectan a aplicaciones y servicios externos.
Piensa en MCP como un “USB para AI”: un estándar que permite que cualquier AI se conecte a cualquier servicio de forma consistente.
Pronunciación
IPA: /ɛm siː piː/
Suena como: “em-si-pi” - se pronuncian las tres letras por separado
Errores comunes:
- ❌ “mcpé” (no es una palabra, son iniciales)
- ❌ “eme-ce-pe” (usar pronunciación inglesa)
Por qué existe MCP
El problema antes de MCP
┌─────────────────────────────────────────────────────────┐
│ SIN ESTÁNDAR (Antes) │
├─────────────────────────────────────────────────────────┤
│ │
│ Claude ────→ Plugin Anthropic ────→ Tu App │
│ │
│ ChatGPT ───→ Plugin OpenAI ───────→ Tu App │
│ (diferente formato) │
│ │
│ Gemini ────→ Extension Google ────→ Tu App │
│ (otro formato más) │
│ │
│ = 3 integraciones diferentes para lo mismo │
│ │
└─────────────────────────────────────────────────────────┘
La solución con MCP
┌─────────────────────────────────────────────────────────┐
│ CON MCP (Ahora) │
├─────────────────────────────────────────────────────────┤
│ │
│ Claude ─┐ │
│ │ │
│ ChatGPT ─┼────→ MCP Server ────→ Tu App │
│ │ (un formato) │
│ Gemini ─┘ │
│ │
│ = 1 integración sirve para todas las AI │
│ │
└─────────────────────────────────────────────────────────┘
Arquitectura MCP
MCP define tres componentes principales:
| Componente | Rol | Ejemplo |
|---|---|---|
| Host | La aplicación AI | Claude Desktop, Cursor |
| Client | Mantiene conexión con servers | Librería MCP |
| Server | Expone recursos y herramientas | Tu backend |
Flujo de comunicación
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Host │ │ Client │ │ Server │
│ (Claude) │ ←──→ │ (MCP) │ ←──→ │ (Tu API) │
└──────────┘ └──────────┘ └──────────┘
│ │ │
│ "Lista mis │ │
│ tareas" │ │
│ ───────────────→│ │
│ │ tools/list │
│ │ ────────────────→│
│ │ │
│ │ [getTasks, │
│ │ createTask] │
│ │ ←────────────────│
│ │ │
│ │ tools/call │
│ │ getTasks() │
│ │ ────────────────→│
│ │ │
│ │ [{id:1, ...}] │
│ │ ←────────────────│
│ "Tienes 5 │ │
│ tareas..." │ │
│ ←───────────────│ │
Ejemplo práctico: Servidor MCP básico
// server.ts - Un servidor MCP mínimo
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
const server = new Server({
name: "mi-servidor-tareas",
version: "1.0.0",
});
// Definir herramientas disponibles
server.setRequestHandler("tools/list", async () => ({
tools: [
{
name: "obtener_tareas",
description: "Obtiene la lista de tareas pendientes",
inputSchema: {
type: "object",
properties: {
estado: {
type: "string",
enum: ["pendiente", "completada", "todas"]
}
}
}
}
]
}));
// Implementar la herramienta
server.setRequestHandler("tools/call", async (request) => {
if (request.params.name === "obtener_tareas") {
const tareas = await fetchTareasFromDB(request.params.arguments.estado);
return { content: [{ type: "text", text: JSON.stringify(tareas) }] };
}
});
// Iniciar servidor
const transport = new StdioServerTransport();
await server.connect(transport);
Capacidades de MCP
MCP permite exponer tres tipos de capacidades:
1. Tools (Herramientas)
Funciones que la AI puede ejecutar:
{
"name": "enviar_email",
"description": "Envía un email a un destinatario",
"inputSchema": {
"type": "object",
"properties": {
"to": { "type": "string" },
"subject": { "type": "string" },
"body": { "type": "string" }
},
"required": ["to", "subject", "body"]
}
}
2. Resources (Recursos)
Datos que la AI puede leer:
{
"uri": "file:///config/settings.json",
"name": "Configuración del sistema",
"mimeType": "application/json"
}
3. Prompts (Plantillas)
Instrucciones reutilizables:
{
"name": "revisar_codigo",
"description": "Template para code review",
"arguments": [
{ "name": "archivo", "required": true }
]
}
Servidores MCP populares
| Servidor | Función | Mantenedor |
|---|---|---|
| filesystem | Acceso a archivos locales | Anthropic |
| github | Operaciones con repos | Anthropic |
| postgres | Consultas a PostgreSQL | Anthropic |
| slack | Mensajes y canales | Comunidad |
| google-drive | Archivos de Drive | Comunidad |
Configuración en Claude Desktop
// ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"mi-servidor": {
"command": "node",
"args": ["/path/to/server.js"],
"env": {
"API_KEY": "tu-api-key"
}
}
}
}
Seguridad en MCP
Principios de seguridad
- Menor privilegio: Exponer solo lo necesario
- Validación: Verificar todos los inputs
- Autenticación: Usar tokens para acceso
- Auditoría: Registrar todas las operaciones
Ejemplo de validación
server.setRequestHandler("tools/call", async (request) => {
// Validar que la herramienta existe
if (!allowedTools.includes(request.params.name)) {
throw new Error("Herramienta no permitida");
}
// Validar parámetros
const validated = schema.parse(request.params.arguments);
// Ejecutar con permisos limitados
return executeWithSandbox(request.params.name, validated);
});
Términos relacionados
- [[Agentic AI]] - AI que actúa de forma autónoma usando herramientas
- [[API]] - Interfaz de programación de aplicaciones
- [[Webhook]] - Callback HTTP para eventos
Recursos oficiales: