Módulo 2: Arquitectura Host-Client-Server

Módulo 2: Arquitectura Host-Client-Server

Módulo 2: Arquitectura Host-Client-Server

Descripción de la cápsula

En el módulo anterior entendiste qué es MCP, el problema M×N que resuelve, y usaste un MCP server existente en Claude Code. Viste que funciona — escribiste una petición, Claude Code usó un tool del MCP server, y recibiste una respuesta. Pero no viste cómo funciona internamente. Esa caja negra se abre en este módulo.

Vas a aprender la arquitectura de 3 capas que hace posible MCP: el Host (Claude Code), el Client (protocolo de comunicación), y el Server (tu código). Cada capa tiene responsabilidades distintas, y entender dónde empieza una y termina otra es la diferencia entre seguir recetas y realmente saber construir MCP servers.

Al terminar este módulo, podrás trazar un request completo — desde que escribes algo en Claude Code hasta que el MCP server responde — identificando qué pasa en cada capa, quién inicia qué, y dónde buscar cuando algo falla.


¿Dónde estamos?

Contexto en la guía

Esta es la Guía #5 de 11 del Claude Code Agentic Development Path. Estás en el Módulo 2 de Phase 1: Fundamentos MCP.

Phase 1: Fundamentos MCP (Módulos 1-3)
  ├── Módulo 1: Qué es MCP y Por Qué Importa ✅ Completado
  ├── Módulo 2: Arquitectura Host-Client-Server ← Estás aquí
  └── Módulo 3: Tres Primitivas — Resources, Tools, Prompts

Phase 2: Construir MCP Servers (Módulos 4-6)
  ├── Módulo 4: MCP Server en TypeScript
  ├── Módulo 5: MCP Server en Python
  └── Módulo 6: MCP Apps y UI Interactivo

Phase 3: Producción (Módulos 7-8)
  ├── Módulo 7: Testing, Debugging e Integración
  └── Módulo 8: Proyecto — MCP Server Real

Lo que ya sabes (Módulo 1)

Del módulo anterior traes estos conceptos sólidos:

  • ✅ MCP es el "USB-C del AI" — un protocolo estándar para integraciones
  • ✅ El problema M×N y cómo MCP lo reduce a M+N
  • ✅ El ecosistema actual: hosts (Claude Code, Cursor, Windsurf), servers (filesystem, memory, GitHub)
  • ✅ Configuraste y usaste un MCP server (Filesystem) en Claude Code

Lo que agregas en este módulo

Pasas de "sé qué es y sé que funciona" a "entiendo cómo funciona internamente":

Módulo 1: Qué es MCP
├── Problema M×N → Solución M+N
├── Ecosistema (hosts, servers)
└── Primer contacto práctico
    ↓
Módulo 2: Cómo funciona MCP (este módulo)
├── Arquitectura de 3 capas
├── Lifecycle de conexión
└── Flujo completo de request-response
    ↓
Módulo 3: Qué expone un MCP Server
├── Resources (datos)
├── Tools (funciones)
└── Prompts (templates)

La transición es directa: ya sabes que el MCP server respondió a tu petición. Ahora vas a ver exactamente cómo llegó esa petición al server y cómo volvió la respuesta.

La pregunta clave de este módulo

En el módulo 1, cuando le pediste a Claude Code "lista los archivos en mi directorio" y el Filesystem server respondió, pasaron estas cosas que no viste:

¿Qué pasó realmente?
│
├── ¿Quién decidió usar el Filesystem server y no otro?
├── ¿Cómo supo Claude Code qué tools tenía disponibles?
├── ¿En qué formato viajó tu petición al server?
├── ¿Cómo respondió el server?
├── ¿Qué pasa si el server falla?
├── ¿Y si hay 5 servers conectados simultáneamente?
└── ¿Quién maneja los permisos de cada operación?

Cada una de estas preguntas tiene una respuesta precisa en la arquitectura. Al terminar el módulo, todas serán obvias.


Objetivo del módulo

Al completar este módulo, serás capaz de:

  • ✅ Dibujar la arquitectura Host-Client-Server de MCP sin ayuda
  • ✅ Explicar el rol específico de cada capa en una oración
  • ✅ Trazar un request completo: usuario escribe → Host procesa → Client envía → Server responde → respuesta llega al usuario
  • ✅ Describir el lifecycle de conexión: initialize → discover capabilities → use → disconnect
  • ✅ Explicar cómo un Host maneja múltiples Clients (Claude Code conectado a varios MCP servers simultáneamente)
  • ✅ Identificar en qué capa buscar cuando algo falla

Roadmap del módulo

CápsulaTemaQué aprenderás
02El Host: el orquestadorClaude Code como Host — quién inicia la conexión, maneja permisos, decide qué tools usar
03El Client: el conectorEl protocolo de comunicación — lifecycle de conexión, capabilities negotiation, formato de mensajes
04El Server: el proveedorTu código — exponer capabilities, responder requests, manejar estado
05Flujo completo request-responseTrazar un request end-to-end + mini-proyecto: diagramar la arquitectura de tu setup

Flujo de aprendizaje

Primero entenderás la capa que ya conoces como usuario — el Host (Claude Code), la interfaz que usas directamente y quien orquesta todo (cápsula 02). Luego bajarás un nivel al Client, el componente invisible que maneja la comunicación entre Host y Server (cápsula 03). Después llegarás al Server, donde eventualmente escribirás tu código (cápsula 04). Finalmente, unirás las 3 capas en un flujo completo trazando un request de principio a fin (cápsula 05).

La progresión es de arriba hacia abajo: Host → Client → Server → Flujo completo. Empiezas con lo familiar (la interfaz que usas) y bajas hacia lo que construirás (el server).

Tiempo estimado

CápsulaContenidoTiempo estimado
02Host + conceptos + ejercicios45-60 min
03Client + protocolo + ejercicios60-75 min
04Server + patrones + ejercicios60-75 min
05Flujo completo + mini-proyecto60-90 min
TotalMódulo completo4-5 horas

Vista previa: las 3 capas en 30 segundos

Antes de profundizar en cada capa en las cápsulas siguientes, aquí tienes el mapa completo:

┌─────────────────────────────────────────────────┐
│                  MCP HOST                        │
│              (Claude Code)                       │
│                                                  │
│  "Soy la aplicación que el usuario ve.           │
│   Decido qué server usar para cada petición.     │
│   Manejo permisos y presento resultados."        │
│                                                  │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐      │
│  │ MCP      │  │ MCP      │  │ MCP      │      │
│  │ Client 1 │  │ Client 2 │  │ Client 3 │      │
│  └────┬─────┘  └────┬─────┘  └────┬─────┘      │
│       │              │              │            │
└───────┼──────────────┼──────────────┼────────────┘
        │              │              │
   JSON-RPC 2.0   JSON-RPC 2.0   JSON-RPC 2.0
   (via stdio)    (via stdio)    (via stdio)
        │              │              │
        ▼              ▼              ▼
   ┌─────────┐   ┌─────────┐   ┌─────────┐
   │ MCP     │   │ MCP     │   │ MCP     │
   │ Server  │   │ Server  │   │ Server  │
   │ (files) │   │ (GitHub)│   │ (DB)    │
   └─────────┘   └─────────┘   └─────────┘

   "Exponemos    "Exponemos    "Exponemos
    tools para    tools para    tools para
    archivos"     repos/PRs"    queries"

Cada capa tiene un trabajo claro:

CapaRolEn una oración
HostOrquestaDecide qué hacer, quién lo hace, y presenta el resultado
ClientComunicaTraduce las decisiones del Host al protocolo MCP y las envía al Server
ServerProveeEjecuta la operación real y retorna el resultado

Esta tabla debería ser obvia al terminar el módulo. Si después de la cápsula 05 no puedes llenarla de memoria, vuelve y repasa.


Conexión con el proyecto

Mini-proyecto de este módulo

Vas a diagramar la arquitectura Host-Client-Server de tu setup actual de Claude Code. Tomarás los MCP servers que configuraste en el módulo anterior (al menos el Filesystem server) y trazarás el flujo completo de un request, identificando cada capa y su responsabilidad.

Conexión con el proyecto integrador (Módulo 8)

En el proyecto final construirás un MCP server production-ready. Entender la arquitectura ahora significa que cuando escribas tu server en los módulos 4-6:

  • Sabrás exactamente qué espera el Client de tu Server
  • Entenderás cómo el Host descubre las capabilities de tu Server
  • Podrás diagnosticar problemas sabiendo en qué capa buscar
  • Diseñarás tu Server sabiendo cómo encaja en la arquitectura completa

Sin este módulo, construirías servers siguiendo recetas. Con este módulo, construyes servers entendiendo el sistema.


Prerequisitos

Para este módulo necesitas:

  • ✅ Haber completado el Módulo 1 (conceptos de MCP, primer contacto)
  • ✅ Tener Claude Code instalado con al menos un MCP server configurado
  • ✅ Comodidad leyendo diagramas de arquitectura y flujos de datos
  • ✅ Familiaridad básica con conceptos de cliente-servidor (HTTP, APIs)

No necesitas: Conocimiento de protocolos específicos, experiencia con JSON-RPC, ni haber construido servers antes.


Límites: Qué NO se cubre en este módulo

  • ❌ Implementación de código — No vas a escribir un MCP server todavía (eso viene en módulos 4-6)
  • ❌ Las 3 primitivas en detalle — Resources, Tools, Prompts se cubren en módulo 3
  • ❌ Transports en profundidad — stdio vs HTTP/SSE se cubren en módulos 4 y 5
  • ❌ Especificación completa del protocolo — Este módulo cubre lo que necesitas saber como developer, no la spec técnica completa
  • ❌ Testing y debugging — Se cubren en módulo 7

Este módulo es arquitectural y conceptual con ejemplos prácticos. Estás construyendo el mapa mental que guiará toda tu implementación futura.


Por qué la arquitectura importa

Podrías argumentar: "Ya sé que MCP funciona, ¿por qué necesito saber cómo funciona internamente?" Tres razones concretas:

1. Debugging efectivo

Cuando tu MCP server no responde, necesitas saber dónde buscar:

¿El Host no inicia la conexión?      → Problema de configuración
¿El Client no descubre capabilities? → Problema de inicialización
¿El Server no responde al request?   → Problema en tu código

Sin entender la arquitectura, cada error es un misterio. Con la arquitectura, cada error tiene una ubicación.

2. Diseño informado

Cuando diseñes tu MCP server, las decisiones dependen de entender las capas:

¿Qué capabilities exponer?   → Depende de qué el Host puede usar
¿Cómo manejar estado?        → Depende del lifecycle del Client
¿Qué errores retornar?       → Depende de qué el Client espera

3. Comunicación con tu equipo

Cuando expliques tu server a colegas o escribas documentación, necesitas el vocabulario correcto: "El Host descubre nuestras capabilities en la fase de inicialización" es mucho más preciso que "Claude Code se conecta y ve lo que puede hacer."

Un ejemplo rápido

Sin entender la arquitectura, este error es un misterio:

MCP Servers:
  filesystem: connected ✅
  github: disconnected ❌
  memory: connected ✅

Con la arquitectura, sabes exactamente dónde buscar:

github: disconnected

→ El Host lanzó el proceso del server (paso 1: ✅)
→ El Client intentó el handshake de inicialización (paso 2)
→ El Server no respondió correctamente (paso 2: ❌)
→ Causa probable: GITHUB_TOKEN no configurado
→ Solución: verificar variables de entorno del server

Los otros 2 servers no se ven afectados porque cada
Client-Server es una conexión independiente.

Eso es debugging con arquitectura. Pasaste de "no funciona" a "sé exactamente qué verificar."


Vocabulario clave del módulo

Estos son los términos que usarás en todo el módulo. No necesitas memorizarlos ahora — se irán anclando con cada cápsula:

TérminoSignificadoPrimera vez que aparece
HostAplicación que el usuario usa (Claude Code)Cápsula 02
ClientComponente dentro del Host que habla MCP con un ServerCápsula 03
ServerTu programa que expone capabilitiesCápsula 04
CapabilitiesLo que un Server puede hacer (tools, resources, prompts)Cápsula 02
InitializeHandshake entre Client y Server al conectarseCápsula 03
LifecycleLas fases de una conexión MCP (init → operate → close)Cápsula 03
JSON-RPCFormato de mensajes que usa MCPCápsula 03
TransportCómo viajan los mensajes (stdio, HTTP)Cápsula 03
HandlerFunción que procesa un request específicoCápsula 04
inputSchemaDefinición de parámetros de un tool (JSON Schema)Cápsula 04

Evidencia de éxito

Al terminar este módulo, sabrás que tuviste éxito si:

  • ✅ Puedes dibujar la arquitectura de 3 capas con flechas correctas de comunicación
  • ✅ Puedes explicar en una oración qué hace cada capa: Host orquesta, Client comunica, Server provee
  • ✅ Puedes trazar el camino de un request desde el usuario hasta el server y de vuelta
  • ✅ Puedes explicar qué pasa cuando Claude Code se inicializa con un MCP server (el lifecycle)
  • ✅ Puedes diagnosticar conceptualmente en qué capa está un problema dado un error
  • ✅ Completaste el diagrama de tu setup actual de Claude Code

La analogía que usaremos en este módulo

En el módulo 1 usaste la analogía USB-C. En este módulo la analogía es un restaurante:

Restaurante MCP:

🧑‍💼 Host (Maître/Gerente) = Claude Code
   → Recibe al cliente (usuario)
   → Decide qué cocina puede satisfacer el pedido
   → Gestiona permisos (¿este cliente puede ordenar este plato?)
   → Coordina todo

📋 Client (Mesero) = Protocolo de comunicación
   → Toma el pedido del maître
   → Lo traduce al formato de la cocina
   → Lo lleva a la cocina correcta
   → Trae la respuesta de vuelta

👨‍🍳 Server (Cocina) = Tu código
   → Recibe el pedido del mesero
   → Lo prepara (ejecuta la operación)
   → Retorna el resultado

Un restaurante puede tener MÚLTIPLES cocinas:
├── Cocina italiana (MCP Server de GitHub)
├── Cocina japonesa (MCP Server de PostgreSQL)
└── Cocina mexicana (MCP Server de Filesystem)

El maître (Host) sabe qué puede servir cada cocina.
Cada cocina tiene su propio mesero (Client) dedicado.

Esta analogía te acompañará en las 4 cápsulas siguientes. Cada vez que algo no quede claro en la teoría, vuelve al restaurante.

La analogía mapeada a un request real

Veamos cómo se traduce al escenario concreto que ya experimentaste en el módulo 1:

Tú pides a Claude Code: "Lista los archivos en mi proyecto"

🧑‍💼 Maître (Host = Claude Code):
   "El cliente quiere saber qué archivos tiene.
    La cocina de filesystem (Filesystem Server) puede resolver esto.
    Le pido a su mesero que lleve el pedido."

📋 Mesero (Client):
   "Recibido. Traduzco el pedido al formato de la cocina:
    tools/call → list_directory → /Users/dev/project
    Lo envío por la ventanilla (stdin)."

👨‍🍳 Cocina (Server = Filesystem):
   "Pedido recibido. Ejecuto la operación: leo el directorio.
    Resultado: src/, package.json, README.md, test/
    Lo paso de vuelta por la ventanilla (stdout)."

📋 Mesero (Client):
   "La cocina respondió. Entrego el resultado al maître."

🧑‍💼 Maître (Host = Claude Code):
   "Recibido. Se lo presento al cliente de forma legible:
    'Tu proyecto tiene estos archivos: src/, package.json,
     README.md, test/'"

Eso que parece instantáneo cuando usas Claude Code — ese flujo completo sucede en milisegundos. Pero cada paso tiene un actor, un formato de datos, y un punto de posible falla.


Autoevaluación rápida antes de empezar

Antes de entrar a las cápsulas técnicas, verifica que tienes los prerequisitos del módulo 1. Responde mentalmente:

  1. ¿Puedes explicar qué es MCP en una oración? (Módulo 1, cápsula 03)
  2. ¿Puedes dar un ejemplo del problema M×N? (Módulo 1, cápsula 02)
  3. ¿Tienes al menos un MCP server configurado en Claude Code? (Módulo 1, cápsula 05)
  4. ¿Puedes ejecutar /mcp en Claude Code y ver un server "connected"? (Módulo 1, cápsula 05)

Si respondiste sí a las 4, estás listo. Si no, vuelve al módulo 1 antes de continuar. Este módulo construye directamente sobre esos conceptos.


Resumen

  • Este módulo cubre la arquitectura interna de MCP — las 3 capas que hacen que todo funcione
  • Progresión: Host (orquestador) → Client (conector) → Server (proveedor) → Flujo completo
  • Al terminar podrás trazar un request desde el usuario hasta el server y de vuelta
  • El mini-proyecto es diagramar tu setup actual de Claude Code
  • Todo lo que aprendes aquí te da las bases para construir MCP servers en módulos 4-6
  • Sin arquitectura, sigues recetas; con arquitectura, entiendes el sistema

Recursos adicionales

  1. MCP Architecture Overview - Documentación oficial de la arquitectura
  2. MCP Specification - Especificación técnica completa del protocolo
  3. Introducing MCP (Anthropic Blog) - Contexto de diseño y decisiones arquitecturales
  4. MCP TypeScript SDK - SDK que usarás en módulo 4 (útil para ver la arquitectura en código)
  5. MCP Python SDK - SDK que usarás en módulo 5

Siguiente cápsula: El Host: el orquestador — cómo Claude Code actúa como Host MCP, quién inicia la conexión, cómo se manejan permisos, y por qué el Host es la pieza central de la arquitectura.