$ desarrollomcp
Volver al blog
Novedades

Nuevas Características en la Próxima Versión de MCP

Por DesarrolloMCP
|
#mcp #actualizaciones #features #roadmap

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: