Evento: MCP Workshop Madrid
Duración: 180 minutos (3 horas)
Nivel: Intermedio
Requisitos previos: C# básico, .NET 10.0 instalado, Visual Studio Code
Este taller intensivo de 3 horas te enseñará a crear servidores MCP (Model Context Protocol) en C# para conectar modelos de IA con tus fuentes de datos. A través de 5 ejercicios progresivos, aprenderás desde los fundamentos hasta la orquestación multi-fuente y seguridad empresarial.
Al finalizar, serás capaz de:
- ✅ Crear servidores MCP desde cero en .NET
- ✅ Implementar recursos (data sources) y herramientas (acciones)
- ✅ Añadir autenticación JWT y rate limiting
- ✅ Orquestar múltiples servidores MCP en arquitecturas distribuidas
- ✅ Desplegar servidores MCP en Azure de forma segura
| Bloque | Tiempo | Duración | Tipo | Contenido |
|---|---|---|---|---|
| 1. Apertura | 0-10 min | 10 min | Presentación | Bienvenida, objetivos, logística |
| 2. Fundamentos MCP | 10-35 min | 25 min | Teoría | ¿Qué es MCP? Arquitectura, flujos, casos de uso |
| 3. Anatomía + Ejercicio 1 | 35-65 min | 30 min | Demo + Práctica | Crear servidor MCP con recursos estáticos |
| 🔄 Descanso | 65-68 min | 3 min | - | Breve pausa |
| 4. Ejercicio 2: Consultas Paramétricas | 68-88 min | 20 min | Ejercicio | Añadir herramientas con parámetros |
| 5. Ejercicio 3: Seguridad | 88-108 min | 20 min | Ejercicio | JWT, scopes, rate limiting |
| 🔄 Descanso | 108-113 min | 5 min | - | Café, networking |
| 6. Seguridad y Gobernanza | 113-128 min | 15 min | Sesión | Azure AD, Key Vault, GDPR, arquitectura |
| 7. Ejercicio 4: Orquestador | 128-153 min | 25 min | Ejercicio Grupo | Orquestación multi-fuente |
| 🔄 Descanso | 153-156 min | 3 min | - | Formar equipos |
| 8. Orquestación Multi-Fuente | 156-171 min | 15 min | Sesión | Patrones: paralelo, secuencial, caching |
| 9. Ejercicio 5: Agente con MAF | 171-201 min | 30 min | Ejercicio | Agente IA con Microsoft Agent Framework |
| 10. Roadmap y Casos B2B | 201-211 min | 10 min | Business | ROI, casos reales, monetización |
| 11. Cierre y Retrospectiva | 211-221 min | 10 min | Cierre | Retrospectiva 3-2-1, Q&A, próximos pasos |
| Buffer | 221-230 min | 9 min | - | Tiempo reserva para atrasos |
Tiempo total: 221 minutos efectivos + 9 min buffer = 230 min (3h 50m asignados)
Objetivo: Presentar taller, instructor, y establecer expectativas.
Contenido:
- Bienvenida y presentación del instructor
- Objetivos del taller y agenda
- Logística (WiFi, repositorio GitHub, descansos)
- Verificación de requisitos técnicos (dotnet --version, VS Code)
Entregable: Repositorio clonado y verificación completada.
Objetivo: Comprender qué es MCP, por qué existe, y cómo funciona.
Contenido:
- Definición de MCP (Model Context Protocol)
- Analogía USB-C: "Un servidor, múltiples clientes"
- Arquitectura cliente-servidor
- Flujo de comunicación (initialize → discover → execute)
- JSON-RPC 2.0 como protocolo base
- MCP vs Plugins tradicionales
- Casos de uso empresariales: CRM enrichment, DevOps, compliance
Diagrama clave:
flowchart LR
Cliente["Cliente MCP<br/>(Claude, Cursor)"] <-->|JSON-RPC 2.0| Servidor["Servidor MCP<br/>(Tu código .NET)"]
Servidor <--> Datos["Fuentes de Datos<br/>(SQL, Cosmos, APIs)"]
Objetivo: Ver en vivo cómo crear un servidor MCP completo desde cero.
Contenido (Live Coding):
- Crear proyecto .NET 10.0
DemoServer - Añadir referencia a
ModelContextProtocol - Crear modelos de datos (
Customer) - Implementar endpoint
/mcpcon routing manual - Handlers:
initialize,resources/list,resources/read - Probar con PowerShell
Invoke-RestMethod
Código resultado: DemoServer funcional con recursos estáticos.
Café, networking, verificar que todos siguen el ritmo.
Objetivo: Implementar tu primer servidor MCP con recursos JSON.
Tarea: Crear Exercise1Server que expone:
- Recurso:
customers(leedata/customers.json) - Recurso:
products(leedata/products.json) - Handlers:
initialize,resources/list,resources/read
Criterios de éxito:
- Servidor responde a
initialize -
resources/listdevuelve 2 recursos -
resources/readcon uricustomersdevuelve JSON válido
Tiempo: 15 minutos guiados con checkpoints cada 3 minutos.
📄 Documentación completa → (Fusionado: Demostración + Ejercicio guiado)
Objetivo: Añadir herramientas (tools) con parámetros.
Tarea: Crear Exercise2Server con 3 herramientas:
search_customers: Busca clientes por nombre o ciudadget_order_details: Obtiene detalles de un pedido (con join)calculate_metrics: Calcula ventas totales, promedio, o top productos
Conceptos nuevos:
- Diferencia entre
resources(data sources) ytools(acciones) - JSON Schema para validar parámetros
- Método
tools/listytools/call
Tiempo: 20 minutos semi-independientes con soporte roaming.
Pausa breve, estirar piernas.
Objetivo: Implementar autenticación JWT, scopes, y rate limiting.
Tarea: Crear Exercise3Server con:
- JwtAuthenticationService: Generar y validar JWT tokens
- ScopeAuthorizationService: Verificar scopes (read/write/admin)
- RateLimitingService: 10 req/min base, 50 req/min premium
- Middlewares:
AuthenticationMiddlewareyRateLimitingMiddleware - Endpoint
/auth/token: Generar tokens para testing
Conceptos nuevos:
- JWT structure (Header.Payload.Signature)
- Scope-based authorization (least privilege)
- Rate limiting con sliding window
Pruebas:
- Generar token con scope "read"
- Acceder a
resources/read→ ✅ Éxito - Intentar
tools/call→ ❌ 401 Unauthorized (requiere "write")
Tiempo: 20 minutos con plantillas pre-creadas.
Objetivo: Mejores prácticas empresariales para producción.
Contenido (Sesión):
- Anti-patterns: Hardcoded secrets, validación deshabilitada
- Azure AD integration: Delegar autenticación a Azure AD/Entra ID
- Azure Key Vault: Gestión centralizada de secretos
- Refresh tokens: Access token 15 min + Refresh token 7 días
- Auditoría: Logging estructurado con Application Insights
- GDPR: Derecho al olvido, portabilidad, consentimiento
- Arquitectura Azure: APIM → AppGW + WAF → Container Apps → Key Vault
Diagrama arquitectura:
flowchart LR
Internet --> APIM[API Management]
APIM --> WAF[App Gateway + WAF]
WAF --> ACA[Container Apps]
ACA --> KV[Key Vault]
ACA --> AAD[Azure AD]
ACA --> AI[App Insights]
Checklist producción: 30+ items (autenticación, autorización, comunicación, auditoría, infraestructura, compliance).
Formar equipos de 3-5 personas para Ejercicio 4.
Objetivo: Orquestar 3 servidores MCP para responder preguntas de negocio en español.
Tarea (En grupo):
Crear Exercise4VirtualAnalyst que:
- Parsea queries en español: "¿Cuántos clientes nuevos en Madrid?"
- Identifica intent:
new_customers,abandoned_carts,order_status,sales_summary - Orquesta llamadas:
- SQL MCP Server (datos transaccionales)
- Cosmos MCP Server (comportamiento usuarios)
- REST API MCP Server (inventario, envíos)
- Patrones de ejecución:
- Paralelo: Consultas independientes simultáneas
- Secuencial: Resultado N usado en consulta N+1
- Caching: TTL 5 minutos para queries frecuentes
Rúbrica (grupos evaluados):
- 40% Funcionalidad (parser + orquestación)
- 30% Arquitectura (código modular)
- 20% Performance (uso correcto de paralelismo)
- 10% Documentación
Tiempo: 25 minutos (desafío más complejo del taller).
Objetivo: Teoría sobre patrones de integración multi-fuente.
Contenido (Sesión):
- Patrón Paralelo: Latencia = max(S1, S2, S3) no suma
- Patrón Secuencial: Dependencias obligatorias
- Patrón Fan-Out/Fan-In: 1 query → N sub-queries paralelas
- Patrón Caching: TTL estratégico (1-5 min, 15-60 min, 1-24h)
- Fusión de resultados: Concatenación, enriquecimiento, agregación
- Manejo de fallos: Circuit Breaker, Timeout, Retry con Polly
Benchmark:
- Secuencial (3 queries × 500ms): 1500ms
- Paralelo: 500ms (3x más rápido)
- Paralelo + Cache: 50ms (30x más rápido)
Objetivo: Crear un agente conversacional inteligente que integra los MCP servers creados en ejercicios anteriores.
Tarea (Individual/Parejas):
Crear Exercise5AgentServer que:
- Conecta con los 3 servidores MCP (SQL, Cosmos, REST API)
- Descubre herramientas automáticamente usando
ListToolsAsync() - Crea un agente conversacional con Microsoft Agent Framework
- Entiende preguntas en lenguaje natural en español
- Mantiene contexto entre mensajes (conversación multi-turno)
Ejemplos de conversaciones:
Usuario: "¿Cuántos clientes tenemos en Madrid?"
Agente: [Usa herramienta list_customers_by_city]
"Actualmente hay 342 clientes registrados en Madrid."
Usuario: "¿Y en toda España?"
Agente: [Mantiene contexto, usa list_customers_by_country]
"En total tenemos 1,247 clientes en España."
Conceptos clave:
- Microsoft Agent Framework (MAF): Framework para crear agentes conversacionales
- Function Calling: LLM decide qué herramienta MCP usar
- AgentThread: Mantiene el contexto de la conversación
- Transport Layer: HTTP vs Stdio para conectar con MCP servers
Componentes:
McpClientHelper.cs: Helper para conectar a servidores MCPappsettings.json: Configuración de Azure OpenAI y servidores MCPProgram.cs: Loop de conversación interactivo
Tiempo: 30 minutos (ejercicio de culminación del taller).
Objetivo: Conectar MCP con valor de negocio y oportunidades comerciales.
Contenido:
5 Casos B2B reales:
- CRM Enrichment: Vendedores ahorran 30 min/día → 165,000€/año
- Document Compliance Auditor: Auditoría 96% más rápida → 276,000€/año
- Multi-Source Inventory Sync: Evita sobreventa → 120,000€/año
- AI Customer Insights: Aumenta conversión 15% → 450,000€/año
- DevOps Incident Response: MTTR de 60→15 min → 90,000€/año
Calculadora ROI:
ROI = ((Beneficio Anual - Costo Inversión) / Costo Inversión) × 100%
Estrategias de monetización:
- SaaS (29-299€/mes)
- Licencias empresariales (50,000€)
- Consultoría (400€/día)
- Marketplace commission (30%)
Objetivo: Consolidar aprendizaje y recoger feedback.
Formato 3-2-1:
- 3 cosas que aprendiste
- 2 cosas que harás mañana
- 1 pregunta sin respuesta
Encuesta de satisfacción (2-3 min):
- Escala 1-5: Contenido, claridad, ritmo, ejercicios, aplicabilidad
- Abiertas: ¿Qué fue lo mejor? ¿Qué mejorar? ¿Qué tema faltó?
Próximos pasos:
- Semana 1: Implementar 1er servidor MCP
- Semana 2-4: Autenticación + deploy Azure
- Mes 2: Orquestación en caso real
- Mes 3+: Producción y escalado
Recursos:
- Especificación MCP: https://modelcontextprotocol.io/specification/2025-06-18
- Repo del taller: [GitHub URL]
| Objetivo | Bloque(s) | Evaluación |
|---|---|---|
| Comprender qué es MCP y por qué existe | 2 | Quiz teórico |
| Crear servidor MCP básico | 3, 4 | Ejercicio 1 funcional |
| Implementar recursos y herramientas | 4, 5 | Ejercicio 2 funcional |
| Añadir autenticación y autorización | 6, 7 | Ejercicio 3 funcional |
| Orquestar múltiples servidores | 8, 9 | Ejercicio 4 en grupo |
| Aplicar mejores prácticas empresariales | 7, 10 | Checklist producción |
Software (pre-instalado):
- .NET 10.0 SDK (verificar con
dotnet --version) - Visual Studio Code
- PowerShell 7+ (verificar con
pwsh --version) - Git (verificar con
git --version)
Hardware:
- Laptop con Windows/macOS/Linux
- 8GB RAM mínimo (16GB recomendado)
- 2GB espacio disco libre
Acceso:
- Repositorio GitHub del taller clonado
- WiFi funcional (probar
dotnet restore)
Técnicos:
- Proyector/pantalla funcional (probar resolución)
- Micrófono (si sala >30 personas)
- Backup de código en USB (por si falla internet)
- Terminal con fuente grande (mínimo 18pt)
Documentación:
- Slides de bloques 2, 7, 9, 10 (teoría)
- Código de referencia de ejercicios 1-4
- Script de contingencias impreso
Logística:
- QR de encuesta feedback
- Marcadores para whiteboard (explicar diagramas)
- Cronómetro visible (gestión del tiempo)
| Minuto | Checkpoint | Acción si Atrasado |
|---|---|---|
| 35 | Finalizar Bloque 2 | Omitir comparación REST vs MCP |
| 55 | Finalizar Bloque 3 | Compartir código completo vía chat |
| 75 | Finalizar Ejercicio 1 | Reducir a 1 recurso solo |
| 95 | Finalizar Ejercicio 2 | Reducir a 2 herramientas |
| 133 | Finalizar Bloque 7 | Omitir detalles de KQL queries |
| 161 | Finalizar Ejercicio 4 | Evaluar solo funcionalidad básica |
Regla de oro: Priorizar ejercicios prácticos sobre teoría extendida.
Causa: Sin internet o firewall corporativo.
Solución: Compartir carpeta packages/ pre-descargada vía USB.
Causa: Proceso previo no cerrado.
Solución: Get-Process | Where-Object {$_.Path -like "*dotnet*"} | Stop-Process -Force
Causa: Script create-sample-data.ps1 no ejecutado.
Solución: Ejecutar script o compartir carpeta data/ completa.
Causa: Falta referencia a ModelContextProtocol.
Solución: dotnet add package ModelContextProtocol --version 0.9.0-preview.1
| Métrica | Objetivo | Medición |
|---|---|---|
| Satisfacción general | ≥4.0/5.0 | Encuesta post-taller |
| Aplicabilidad | ≥75% responde 4-5 | Pregunta encuesta #5 |
| Completación ejercicios | ≥80% completa 3/4 | Observación directa |
| Recomendación NPS | ≥70% | Pregunta encuesta #6 |
| Adopción real | ≥20% implementa en 30 días | Email seguimiento 1 mes |
Email recordatorio:
- Verificar requisitos técnicos
- Clonar repositorio
- Confirmar asistencia
Canales:
- Chat en sala (preguntas rápidas)
- Roaming durante ejercicios (soporte personalizado)
Email seguimiento:
- Enlace a código completo
- Recursos adicionales
- Encuesta (si no completada)
- Certificado de asistencia
Contenido mínimo:
- Nombre del participante
- Título del taller: "Model Context Protocol (MCP) en C#"
- Evento: MCP Workshop Madrid
- Duración: 3 horas
- Contenido cubierto: Fundamentos, desarrollo, seguridad, orquestación, Azure
- Firma del instructor y fecha
Generación: Script PowerShell scripts/generate-certificates.ps1
Este taller es posible gracias a:
- Anthropic por crear la especificación MCP
- Microsoft por el SDK .NET y Azure
- MCP Workshop Madrid por el espacio y oportunidad
- Comunidad MCP por feedback y mejoras continuas
Preparado por: Instructor del taller MCP
Versión: 1.0.0
Última actualización: Febrero 2026
Licencia: CC BY-SA 4.0
¡Nos vemos en el taller! 🚀