Crear tu propio servidor MCP
Qué cubre este artículo sobre servidores MCP
- Cómo está estructurado un servidor MCP.
- Cómo definir herramientas y recursos.
- Cómo funciona el transporte por stdio y HTTP.
- Cómo implementar un servidor en Python o TypeScript.
- Despliegue, seguridad y trampas comunes.
Introducción: Crear tu propio servidor MCP
Los servidores MCP son la columna vertebral de un ecosistema modular de agentes. Proporcionan herramientas y datos que los agentes de IA pueden utilizar. Al construir tu propio servidor MCP, puedes exponer bases de datos internas, APIs, sistemas de archivos o herramientas especializadas a los agentes sin necesidad de modificar el agente en sí.
Crear un servidor no es complicado. Unas pocas líneas de código definen herramientas y recursos. El desafío real no está en la técnica, sino en la seguridad: un servidor MCP con acceso al sistema de archivos o a bases de datos es potente y debe estar bien protegido.
¿Por qué necesito mi propio servidor MCP?
Los servidores MCP listos para usar cubren muchas herramientas estándar. Pero los datos propios, las APIs internas o los flujos de trabajo específicos requieren servidores a medida. Un servidor propio permite:
- Conectar bases de datos internas,
- Exponer APIs corporativas,
- Encapsular operaciones críticas de seguridad,
- Reutilización entre múltiples agentes,
- Interfaz clara entre el agente y la infraestructura.
Servidores MCP explicados brevemente
Un servidor MCP responde a solicitudes de un cliente MCP. Le informa al cliente qué herramientas y recursos ofrece. Cuando es necesario, ejecuta la herramienta solicitada o devuelve un recurso. La comunicación ocurre a través de JSON-RPC.
Términos clave:
- Tool: Función ejecutable con esquema de entrada.
- Resource: Fuente de datos direccionable.
- Prompt: Plantilla de mensaje predefinida.
- Capability: Capacidad que el servidor declara.
- Transport: stdio o HTTP/SSE.
- ServerInfo: Metadatos como nombre y versión.
¿Para quién está destinado un servidor MCP?
- Para desarrolladores que desean conectar herramientas internas a agentes.
- Para equipos que proporcionan herramientas reutilizables.
- Para responsables de seguridad que quieren controlar permisos.
- Para arquitectos que construyen sistemas de IA modulares.
Términos importantes sobre servidores MCP
- FastMCP: Framework simple de Python para servidores MCP.
- mcp-sdk: SDKs oficiales para Python y TypeScript.
- StdioServerTransport: Transporte local a través de canales de proceso.
- SSEServerTransport: Transporte HTTP para clientes remotos.
- Pydantic: Validación de entradas de herramientas en Python.
Servidores MCP en Python con FastMCP
FastMCP simplifica mucho el desarrollo:
from fastmcp import FastMCP
mcp = FastMCP('notizen-server')
@mcp.tool()
def suche_notiz(schluesselwort: str) -> str:
"""Sucht nach Notizen mit dem angegebenen Schluesselwort."""
# Beispiel-Implementierung
notizen = {
'ollama': 'Ollama ist ein Tool für lokale KI.',
'docker': 'Docker erleichtert die Bereitstellung.'
}
return notizen.get(schluesselwort, 'Keine Notiz gefunden.')
@mcp.resource('notizen://liste')
def notizen_liste() -> str:
return 'Verfügbare Notizen: ollama, docker'
if __name__ == '__main__':
mcp.run()
El servidor declara la herramienta y el recurso. Un cliente puede invocar ambos.
Definición de herramientas
Las herramientas necesitan un esquema claro. En FastMCP, los type hints de Python y los docstrings ayudan:
@mcp.tool()
def temperature_in_stadt(stadt: str) -> str:
"""Gibt die aktuelle Temperatur für eine Stadt zurück."""
return f'22 Grad in {stadt}'
El docstring se envía al modelo para que entienda cuándo usar la herramienta.
Elegir el transporte
stdio
Adecuado para procesos locales. El cliente inicia el servidor como un subproceso.
mcp.run(transport='stdio')
SSE
Adecuado para conexiones remotas o persistentes. El servidor proporciona un endpoint HTTP.
mcp.run(transport='sse')
Despliegue
Python
python notizen-server.py
O en Docker:
services:
mcp-notizen:
build: .
command: python notizen-server.py
Seguridad
- Validación de entrada: Usa type hints y validación de Pydantic.
- Permisos: Permite solo las operaciones necesarias.
- Logging: ¿Quién invoca qué?
- Sandbox: Ejecuta el servidor en un contenedor o entorno aislado.
- Aprobación manual: Requiere confirmación para eliminar, escribir o llamadas externas.
Trampas comunes al crear un servidor MCP
- Descripciones de herramientas pobres: El modelo no entiende cuándo usar la herramienta.
- Manejo de errores faltante: El servidor se bloquea con entradas inválidas.
- Sin control de versiones: Las interfaces cambian inadvertidamente.
- Demasiados permisos: Un servidor no puede hacerlo todo.
- Problemas de transporte: Elige stdio vs. SSE según el caso de uso.
- Sin monitoreo: No sabes qué invoca el agente.
Enlaces e información adicional
- BotServ.de MCP Fundamentos
- BotServ.de Agentes de IA
- BotServ.de Agentes de Coding
- FastMCP
- Especificación MCP
FAQ: Servidores MCP
¿Necesito TypeScript? No. Python funciona muy bien con FastMCP.
¿Puedo tener varias herramientas en un servidor? Sí. Un servidor puede ofrecer cualquier cantidad de herramientas y recursos.
¿Cómo pruebo un servidor MCP? Con un cliente MCP o el Inspector del MCP SDK.
¿Se ejecutan los servidores MCP localmente?
Sí, con stdio o SSE en localhost.
¿Son seguros los servidores MCP? Solo son tan seguros como sus permisos y validación.
Fuentes y lecturas adicionales
- MCP: https://modelcontextprotocol.io/
- FastMCP: https://github.com/jlowin/fastmcp
- Python SDK: https://github.com/modelcontextprotocol/python-sdk
Resumen: Crear tu propio servidor MCP
Un servidor MCP propio pone herramientas y datos internos a disposición de los agentes de IA. Con FastMCP en Python o los SDKs oficiales, el inicio es rápido. Lo importante es definir esquemas de herramientas claros, escribir buenas descripciones, elegir el transporte adecuado y aplicar seguridad. Si cuidas los permisos, la validación y el logging, obtendrás un vínculo robusto y reutilizable entre tu agente e infraestructura.


