Nuevas Características en la Próxima Versión de MCP
Introducción
El equipo de Model Context Protocol ha anunciado oficialmente el cronograma para la próxima versión mayor del protocolo. Este post cubre las nuevas características, cambios importantes y el timeline de lanzamiento.
Cronograma oficial
┌────────────────────────────────────────┐
│ 11 Nov 2024 → Release Candidate │
│ 25 Nov 2024 → Lanzamiento oficial │
│ 14 días → Ventana de validación │
└────────────────────────────────────────┘
- RC (Release Candidate): 11 de noviembre de 2024
- Lanzamiento oficial: 25 de noviembre de 2024
- Ventana de validación: 14 días para testing comunitario
Nuevas características
1. Operaciones Asíncronas (SEP-1391)
Una de las limitaciones actuales de MCP es que todas las operaciones son síncronas. Esto causa problemas con tareas de larga duración.
Problema actual
// Operación que tarda 5 minutos
server.setRequestHandler(CallToolRequestSchema, async (request) => {
// Esto bloquea la conexión por 5 minutos
const result = await processLargeDataset();
return { content: [{ type: "text", text: result }] };
});
Solución: Operaciones asíncronas
import { StartAsyncOperationSchema, GetOperationStatusSchema } from "@modelcontextprotocol/sdk/types.js";
// Iniciar operación asíncrona
server.setRequestHandler(StartAsyncOperationSchema, async (request) => {
const operationId = generateUniqueId();
// Iniciar tarea en background
processInBackground(operationId, request.params);
return {
operationId,
status: "started",
estimatedDuration: "5m",
};
});
// Consultar estado
server.setRequestHandler(GetOperationStatusSchema, async (request) => {
const { operationId } = request.params;
const status = await getOperationStatus(operationId);
return {
operationId,
status: status.state, // "running", "completed", "failed"
progress: status.progress, // 0-100
result: status.state === "completed" ? status.result : null,
};
});
Beneficios:
- ✅ No bloquea la conexión
- ✅ Cliente puede hacer polling
- ✅ Soporte para cancelación
- ✅ Mejor UX para tareas largas
2. Escalabilidad sin Estado
Actualmente, los servidores MCP mantienen estado de conexión, lo que dificulta el escalado horizontal.
Arquitectura actual
Cliente → Servidor MCP (con estado)
↓
Solo este servidor conoce el contexto
Problema: No se puede distribuir carga entre múltiples instancias.
Nueva arquitectura sin estado
Cliente → Load Balancer → Servidor MCP 1
→ Servidor MCP 2
→ Servidor MCP 3
↓
Estado compartido (Redis/Database)
Implementación:
import { StatelessServer } from "@modelcontextprotocol/sdk/server/stateless.js";
const server = new StatelessServer(
{
name: "mi-servidor-escalable",
version: "2.0.0",
},
{
// Configuración de almacenamiento de estado
stateStore: {
type: "redis",
url: process.env.REDIS_URL,
},
capabilities: {
tools: {},
stateless: true, // Nuevo capability
},
}
);
Beneficios:
- ✅ Escalado horizontal automático
- ✅ Alta disponibilidad
- ✅ Mejor para empresas
- ✅ Soporte para múltiples data centers
3. Identidad del Servidor
Los servidores ahora pueden exponer su identidad mediante URLs .well-known, similar a OAuth.
Endpoint .well-known/mcp
https://mi-servidor.com/.well-known/mcp
Respuesta:
{
"server": {
"name": "mi-servidor-mcp",
"version": "2.0.0",
"vendor": "Mi Empresa",
"homepage": "https://mi-servidor.com"
},
"capabilities": {
"resources": {
"supported": true,
"pagination": true,
"search": true
},
"tools": {
"supported": true,
"maxConcurrent": 5
},
"prompts": {
"supported": true
},
"stateless": true,
"async": true
},
"auth": {
"methods": ["apiKey", "oauth2"],
"oauth2": {
"authorizationEndpoint": "https://auth.mi-servidor.com/oauth/authorize",
"tokenEndpoint": "https://auth.mi-servidor.com/oauth/token"
}
},
"endpoints": {
"connect": "wss://mi-servidor.com/mcp",
"health": "https://mi-servidor.com/health"
}
}
Ventajas:
- 🔍 Descubrimiento automático de capacidades
- 🔐 Info de autenticación centralizada
- 📊 Metadata del servidor sin conexión previa
- 🌐 Estándar web (similar a OAuth, OpenID)
4. Extensiones Oficiales
El protocolo ahora soporta extensiones oficiales para dominios específicos.
Categorías de extensiones
// Extensión para salud/medicina
import { HealthExtension } from "@modelcontextprotocol/extension-health";
const server = new Server(
{ name: "health-server", version: "1.0.0" },
{
capabilities: { tools: {} },
extensions: [
new HealthExtension({
// Validación automática de datos médicos
validatePatientData: true,
// Cumplimiento HIPAA
hipaaCompliant: true,
// Anonimización automática
anonymize: true,
}),
],
}
);
Extensiones planificadas:
- 🏥 Salud: HIPAA, HL7, FHIR
- 💰 Finanzas: PCI-DSS, SOC2
- 🎓 Educación: FERPA, COPPA
- 🏛️ Legal: Privilegios, confidencialidad
- 🏭 Industrial: OPC-UA, MQTT
5. Estandarización de SDKs
Nuevo sistema de clasificación por niveles para SDKs comunitarios.
Niveles de SDKs
┌─────────────────────────────────────┐
│ Tier 1: Oficial (Anthropic) │
│ - TypeScript/Node.js │
│ - Python │
│ - Soporte completo │
├─────────────────────────────────────┤
│ Tier 2: Certificado (Comunidad) │
│ - Swift │
│ - Rust │
│ - Go │
│ - Revisado por Anthropic │
├─────────────────────────────────────┤
│ Tier 3: Comunitario │
│ - Ruby, PHP, Java, etc. │
│ - Sin revisión oficial │
│ - Puede tener limitaciones │
└─────────────────────────────────────┘
Criterios para Tier 2:
- [ ] Implementa 100% de la especificación
- [ ] Tests con >90% cobertura
- [ ] Documentación completa
- [ ] CI/CD configurado
- [ ] Mantenimiento activo (commits recientes)
- [ ] Revisión de seguridad aprobada
Cambios en gobernanza
Proceso SEP (Server Enhancement Proposal)
Similar a PEPs de Python o RFCs de Rust:
# Crear propuesta
git clone https://github.com/modelcontextprotocol/seps
cd seps
cp template.md sep-XXXX-mi-propuesta.md
# Editar propuesta
vim sep-XXXX-mi-propuesta.md
# Enviar PR
git add sep-XXXX-mi-propuesta.md
git commit -m "SEP-XXXX: Mi propuesta"
git push origin sep-XXXX
Formato de SEP:
# SEP-XXXX: Título de la Propuesta
## Resumen
Descripción breve (2-3 líneas)
## Motivación
¿Por qué es necesario?
## Especificación
Detalles técnicos completos
## Alternativas consideradas
Otras opciones evaluadas
## Impacto
- Breaking changes
- Compatibilidad hacia atrás
- Migración requerida
Grupos de Trabajo
Nuevos grupos especializados:
- Core Protocol: Especificación base
- Security: Seguridad y privacidad
- Tooling: SDKs y herramientas
- Documentation: Docs y tutoriales
- Registry: Gestión del registry
Llamado a contribuir
El equipo de MCP busca contribuciones en:
SDKs TypeScript/Swift
# TypeScript
git clone https://github.com/modelcontextprotocol/typescript-sdk
npm install
npm test
# Swift
git clone https://github.com/modelcontextprotocol/swift-sdk
swift test
Áreas necesitadas:
- Testing de edge cases
- Documentación de APIs
- Ejemplos adicionales
- Optimización de performance
Herramienta Inspector
Debugger visual para MCP:
git clone https://github.com/modelcontextprotocol/inspector
npm install
npm run dev
Features a implementar:
- Vista de mensajes en tiempo real
- Replay de sesiones
- Performance profiling
- Export de traces
Registry (Go)
git clone https://github.com/modelcontextprotocol/registry
go test ./...
Expertise buscada:
- Arquitectura de microservicios
- APIs RESTful con Go
- PostgreSQL/Redis
- Docker/Kubernetes
Migración desde v1.x
Breaking changes
// ❌ v1.x (deprecated)
server.registerTool("mi-tool", async (args) => {
return { result: "..." };
});
// ✅ v2.x (nuevo)
server.setRequestHandler(CallToolRequestSchema, async (request) => {
const { name, arguments: args } = request.params;
return {
content: [{ type: "text", text: "..." }],
};
});
Guía de migración
# Instalar herramienta de migración
npm install -g @modelcontextprotocol/migrate
# Analizar código
mcp-migrate analyze ./src
# Aplicar migraciones automáticas
mcp-migrate upgrade --to v2.0
# Revisar cambios manualmente
git diff
Timeline de adopción
Nov 2024: Lanzamiento v2.0
Dec 2024: Período de transición
Jan 2025: v1.x en modo mantenimiento
Jun 2025: v1.x deprecado
Dec 2025: v1.x end-of-life
Recursos
Documentación
Comunidad
Conclusión
La versión 2.0 de MCP trae mejoras significativas:
- ⚡ Performance: Operaciones asíncronas
- 📈 Escala: Arquitectura sin estado
- 🔌 Descubrimiento: Identidad del servidor
- 🎯 Especialización: Extensiones por dominio
- 🤝 Comunidad: Gobernanza abierta
Estos cambios posicionan a MCP como el estándar de facto para conectar IA con datos externos.
Post anterior: El Registry de MCP
Próximo post: Automatización con MCP Prompts
Recursos: