Escribe tu propio servidor MCP
Un servidor MCP pone herramientas, datos o plantillas a disposición de cualquier cliente compatible con MCP, desde Claude Code hasta Antigravity.
Tres bloques de construcción
Un servidor MCP ofrece a un cliente como Claude Code o Antigravity tres tipos de capacidades: Tools (funciones que el modelo llama activamente, por ejemplo una consulta a una base de datos), Resources (datos pasivos como archivos o respuestas de API que la aplicación proporciona) y Prompts (plantillas ya hechas que las personas usuarias eligen de forma deliberada).
Flujo mínimo
Un servidor se ejecuta como su propio proceso y se comunica con el cliente mediante un protocolo fijo (normalmente E/S estándar o HTTP). Al arrancar, el cliente consulta tools/list, recibe una lista de definiciones de herramientas con un esquema JSON para los parámetros, y llama a tools/call con los argumentos adecuados cuando lo necesita. Así que tu servidor solo tiene que: registrar herramientas con nombre, descripción y esquema de entrada, y devolver el resultado cuando se le llama.
SDKs oficiales
La organización modelcontextprotocol mantiene SDKs oficiales para Python, TypeScript, Java, Kotlin, C#, Go, PHP, Ruby, Rust y Swift, así que no tienes que implementar el protocolo a mano.
Conexión con un cliente
Un servidor terminado se registra en la configuración del cliente (por ejemplo, mcpServers en Claude Code o mcp_config.json en Antigravity), normalmente con el comando y los argumentos para iniciar el proceso del servidor. Después aparece en el gestor de MCP del cliente, y sus herramientas quedan disponibles para el modelo.
EJEMPLO
Núcleo mínimo de un servidor en Python (con el SDK oficial): un decorador `@mcp.tool()` registra una función `get_forecast(latitude, longitude)` como herramienta; el cliente la descubre automáticamente mediante `tools/list` y la llama cuando la necesita.
🛠️ EJERCICIO — PRUÉBALO TÚ
Con un SDK oficial de MCP (por ejemplo, Python), construye un servidor mínimo con exactamente una tool y conéctalo a un cliente compatible con MCP.
- Instala el SDK oficial para tu lenguaje y crea un servidor con una única tool (por ejemplo, una función que devuelva la fecha actual).
- Registra el servidor en la configuración MCP de tu cliente (por ejemplo, Claude Code o Antigravity) con el comando de inicio y los argumentos.
- Abre el gestor de MCP en el cliente (por ejemplo, /mcp), comprueba que el servidor está conectado y deja que el modelo llame a tu tool.
✅ AUTOEVALUACIÓN
- ☐ ¿Detectó el cliente tu tool automáticamente mediante tools/list, sin que la registraras manualmente en otro sitio?
- ☐ ¿Qué ocurre si el proceso de tu servidor (con transporte STDIO) registra por error en stdout en lugar de stderr?
- ☐ ¿Podrías conectar ahora ese mismo servidor a otro cliente MCP distinto, sin reescribirlo?
QUIZ RÁPIDO
¿Qué diferencia a una "tool" de MCP de una "resource" de MCP?
FUENTES
- MCP-Doku: Build an MCP server ↗ modelcontextprotocol.io
- MCP-Doku: Understanding MCP servers (Tools/Resources/Prompts) ↗ modelcontextprotocol.io
- GitHub: modelcontextprotocol-Organisation (offizielle SDKs) ↗ github.com