Servidor MCP de herramientas
Un servidor Model Context Protocol que convierte un backend REST existente en herramientas, recursos y prompts que un agente de IA puede usar, con mensajería saliente configurable y una superficie HTTP endurecida.
Camino de una petición en producción
- cliente de IAaquí vive el modelo
- transporte MCPstdio, SSE o HTTP en streaming
- handler de herramientaflag, validación, rate limit
- contexto de ciclo de vidaclientes y servicios compartidos
- cliente del backendJWT de servicio de corta vida
- backend REST / canalescorreo y SMS
Qué expone el servidor
Herramientas
8
Operaciones del backend convertidas en funciones tipadas que un LLM puede llamar, cada una activable por configuración.
Recursos
2
Contexto de solo lectura para el agente: las capacidades del servidor y sus herramientas activas, y un resumen agregado del backend.
Prompts
3
Plantillas de prompts con parámetros que encadenan las herramientas en flujos de varios pasos.
Transportes
stdio · SSE · HTTP
Un solo código sirve a agentes locales por stdio y a remotos por SSE o HTTP en streaming, elegido por configuración.
Decisiones de arquitectura
- Recursos compartidos, creados una vez
- Un ciclo de vida asíncrono crea al arrancar el cliente del backend, los servicios de mensajería y los transformadores; cada herramienta los toma del contexto de la petición en vez de abrir los suyos.
- El backend detrás de un solo cliente
- Las herramientas nunca hablan HTTP directamente. Un único cliente maneja timeouts, autenticación y el formato de respuesta.
- Tokens de servicio que se renuevan solos
- Las llamadas salientes llevan un JWT firmado de corta vida que se vuelve a generar poco antes de expirar, con respaldo a un token de usuario o una API key.
- Canales detrás de interfaces
- El correo pasa por una interfaz con implementación por webhook y respaldo por SMTP, elegida al arrancar; los SMS pasan por una abstracción de proveedor.
- Funcionalidades como configuración
- Cada herramienta revisa su propio flag y responde con un resultado claro de "desactivada"; un recurso le dice al agente qué está encendido.
- Salida adaptada a quien llama
- Los resultados del backend se transforman a varios formatos definidos en JSON, con un timeout.
- Camino a capas explícitas
- Se están introduciendo capas de dominio, aplicación e infraestructura con interfaces de repositorio y un contenedor de inyección de dependencias alrededor del servidor en funcionamiento.
Endurecer la superficie
- No arranca sin protección
- Un transporte HTTP no inicia sin API key, y las claves débiles se señalan al arrancar.
- Rate limits
- Un limitador de ventana deslizante seguro entre hilos, aplicado de forma global y por destinatario por hora.
- Entradas estrictas
- Teléfonos validados en E.164 con listas de bloqueo para números especiales, límites de longitud y sanitización de mensajes.
- Protección SSRF
- Las URLs de medios deben ser HTTPS y no pueden apuntar a direcciones privadas ni de loopback.
- Privacidad en los logs
- Los números de teléfono se enmascaran antes de registrar cualquier cosa.
- Contenedor
- Una imagen liviana que corre con un usuario sin privilegios de root, con un comando de health check.