Implementar un Servidor MCP en Python y TypeScript

El Covert: la base de operaciones que expone capacidades

En Nevarro existe un Covert — la base secreta de los Mandalorianos. Está oculta bajo la ciudad, acceso controlado, y solo entra quien conoce el Credo. Dentro del Covert hay tres tipos de servicios: acciones que modifican el mundo (forjar armadura, reparar naves), datos que podés consultar (el registro del Gremio), y templates estandarizados (el Juramento Mandaloriano — siempre la misma formulación).

Eso es exactamente un servidor MCP: una entidad que expone capacidades a clientes que se conectan siguiendo el protocolo correcto. Las tres primitivas del Covert son las tres primitivas de MCP: tools con efectos secundarios, resources de solo lectura, y prompts como templates reutilizables.

En este video construís el servidor desde cero — dos veces. Primero en Python, después en TypeScript. Y al final lo conectás a Claude Code para verificar que funciona en producción real.

Este es el video más técnico del Módulo 2. No hay trucos de memoria ni analogías creativas para salvar. Hay que entender la estructura, el código, y las diferencias entre lenguajes. Pero si llegaste hasta acá en el curso, ya tenés todo lo necesario.

Las tres primitivas: lo que el Covert expone

Antes de escribir una línea de código, hay que tener claro qué puede exponer un servidor MCP. Son exactamente tres tipos de capacidades, y cada una tiene un contrato diferente con el cliente:

[tabla]

La distinción más importante para el examen: tools tienen side effects (modifican estado), resources son read-only (nunca modifican nada). El examen pregunta esto directamente.

En el Covert Mandaloriano: la tool aceptar_contrato modifica el estado del sistema — registra un contrato nuevo, y eso cambia la base de datos. El resource del registro del Gremio solo devuelve información — nunca puede usarse para modificar quién está buscado o cuánto vale su cabeza. El prompt del Juramento es un template — define cómo empezar una operación de caza, pero es texto, no acción.

Primera decisión de arquitectura: ¿cómo se conecta el cliente?

Antes de construir el servidor, hay una decisión que cambia el deployment completo: el transporte. MCP soporta dos formas de conectar cliente y servidor, y la elección depende del contexto de uso:

[tabla ]

💡 Para Claude Code y desarrollo local: siempre stdio. Para producción con múltiples agentes o acceso remoto: HTTP con SSE.

En los demos de este video usamos stdio. El servidor corre como proceso en tu máquina, Claude Code se comunica con él por standard input/output, y cuando Claude Code termina, el proceso del servidor también termina. Sin configuración de red, sin puertos, sin autenticación explícita.

🎯 TRAMPA DE EXAMEN: El examen puede preguntar cuándo usar cada transporte. Regla simple: stdio = local + Claude Code. HTTP/SSE = producción + múltiples clientes + acceso remoto.

Demo A: el servidor completo en Python

Instalación primero:

El servidor Python usa decoradores para registrar handlers de cada primitiva. La estructura base:

covert_server.py — Estructura base e identidad del servidor