Skip to content
BotServBotServ
MCPMCP ServerServerPythonTypeScriptAgentes

Crear tu propio servidor MCP

Construye servidores MCP en Python o TypeScript. Tools, recursos, transporte e implementación para agentes IA locales.

S

schutzgeist

4 min read
Crear tu propio servidor MCP

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

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

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.

Volver al blog
Share:

Entradas relacionadas