← SCRAM AI Lab
Criterios de ingeniería para decidir entre crear un servidor MCP a la medida o integrar opciones open source según latencia, seguridad y reglas de negocio.
May 21, 2026
408 lecturas

Conviene construir un MCP propio cuando tu operación depende de reglas de negocio privadas, sistemas internos detrás de VPN, o requerimientos estrictos de latencia y gobernanza que las herramientas públicas no cubren. Si la integración solo consulta una API estándar de mercado sin transformar datos, adoptar la solución comunitaria siempre ahorra semanas de mantenimiento técnico recurrente.
Antes de abrir tu editor, contesta: ¿el MCP que necesitas ya existe y lo mantiene alguien que no eres tú? Si la respuesta es sí, adóptalo. El costo de mantener un MCP propio se subestima sistemáticamente: tienes que versionar schemas, manejar errores, paginar respuestas, instrumentar latencia y reescribir cuando el SDK cambia (y va a cambiar). El SDK de @modelcontextprotocol/sdk ha tenido tres rondas de breaking changes en 2025-2026; cada una te cuesta una tarde si tu MCP es propio.
core-mcp-awalab que decide qué endpoint del ERP llamar según el tipo de cliente, aplica reglas de descuento y devuelve algo curado, no el raw response.inegi-mcp existe para consultar el BISE del INEGI con manejo de las idiosincrasias del catálogo de indicadores. Ningún MCP genérico te va a entender los códigos de indicador como 1002000001.La siguiente matriz sintetiza las dimensiones críticas que un equipo de ingeniería debe evaluar antes de comprometer recursos de desarrollo:
| Criterio | Adoptar de la comunidad | Construir servidor propio |
|---|---|---|
| Tiempo inicial a producción | Inmediato (minutos de configuración en JSON de cliente). | Días o semanas según la complejidad del schema Zod y pruebas. |
| Carga de mantenimiento | Delegada en el mantenedor del repositorio upstream. | Total: absorber breaking changes del SDK oficial y dependencias. |
| Superficie de ataque | Riesgo de inyección de código de terceros o dependencias vulnerables. | Control total de sanitización, secretos y filtrado de datos salientes. |
| Mecanismo de transporte típico | stdio para local, SSE para contenedores prearmados. | stdio para baja latencia o HTTP/SSE corporativo autenticado. |
| Adaptabilidad a sistemas legados | Nula: requiere que tu infraestructura se adapte a su schema. | Absoluta: permite normalizar SOAP, XML o bases on-premises. |
En el contexto corporativo de América Latina, la decisión de construir suele ganar fuerza debido a dos factores constantes: la dispersión geográfica de la nube y la prevalencia de software administrativo legado.
Gran parte de las empresas en México operan sobre sistemas como Aspel, CONTPAQi o implementaciones locales de SAP. Ningún repositorio oficial de Model Context Protocol ofrece herramientas listas para consultar catálogos de cuentas con la estructura del SAT o validar facturas electrónicas bajo el esquema CFDI 4.0. Un MCP propio actúa como la capa de abstracción ideal: transforma peticiones en lenguaje natural en consultas estructuradas a bases de datos relacionales locales o llamadas SOAP a Proveedores Autorizados de Certificación (PAC), devolviendo al agente de IA únicamente el UUID, el estatus y los importes sin exponer cadenas de conexión sensibles.
De acuerdo con mediciones de latencia reportadas por la red de Cloudflare para el cono sur y México, una llamada HTTPS transcontinental hacia servidores en la costa este de Estados Unidos o Europa añade entre 120ms y 220ms por salto de ida y vuelta. Si un agente de IA encadena tres llamadas sucesivas de herramientas mediante un MCP remoto de terceros, consume más de 600ms solo en red, agotando el presupuesto de respuesta del usuario final. En este escenario, construir un MCP local que corra por stdio en la misma máquina o contenedor del orquestador reduce esa sobrecarga a menos de 10ms.
Esta lista evita 80% de los incidentes:
delete_user, drop_table, force_push sin un parámetro confirm: true y un nombre de herramienta que grite peligro.list_all_files sobre un repo de 80k archivos te devuelve 12MB de JSON y mata el contexto. Pagina siempre, default 50.users, filtra password_hash, api_keys, tokens antes de pasarla al modelo. Una vez en el contexto, salen en logs, en transcripts, en cualquier parte.query_database, fuerza un LIMIT máximo (1000 está bien) en el servidor, no en el prompt.Implementar servidores MCP sin controles estrictos introduce modos de falla específicos que van más allá de una caída tradicional de servicio:
Cuando una herramienta devuelve respuestas sin limpiar (por ejemplo, volcados completos de stack traces o tablas HTML complejas), satura la ventana de contexto del LLM. Según las especificaciones de Anthropic para el manejo de contexto en Claude, saturar la memoria de trabajo con datos no estructurados incrementa la tasa de alucinaciones y degrada el razonamiento en pasos posteriores. El MCP debe devolver exclusivamente tipos primitivos o JSONs compactos diseñados para consumo de la máquina.
Si tu MCP extrae datos de fuentes no confiables (como correos de clientes, comentarios de soporte o tickets de mesa de ayuda) y los pasa directamente al modelo, un atacante puede insertar instrucciones hostiles en el cuerpo del mensaje. Todo MCP interno debe delimitar claramente la salida con metadatos estructurados que indiquen al agente que el bloque recibido corresponde a datos pasivos y no a instrucciones ejecutables del sistema.
Si tu MCP propio va a tener menos de 5 herramientas, probablemente debería ser un slash command. Si va a tener más de 20, probablemente estás empaquetando dos MCPs distintos. El punto dulce está en 6-12 herramientas, una por caso de uso atómico, cada una con schema Zod estricto y mensajes de error humanos.
La pregunta que vale la pena hacerte: ¿este MCP encapsula conocimiento que ya está documentado en tu wiki, o crea un atajo a algo que nadie había hecho fácil de invocar? La primera categoría se desactualiza. La segunda se vuelve infraestructura.
Artículos relacionados
Claude Code en octubre: mods, control de modelos y 20 versiones en tres semanas
De 2.1.272 a 2.1.291: mods en TypeScript, sec-default para equipos, deniedModels, allowedProviders, AGENTS.md y Opus 5.5 por defecto. Qué configurar.
Cómo usamos Claude Code en SCRAM todos los días: el repo como memoria, skills propios y reglas que no se negocian
No usamos Claude Code para "generar código". Lo usamos para operar un sistema de 127 modelos de datos y 655 endpoints con un equipo chico. Así está montado: memoria en el repo, skills escritos desde el código real, hooks, y tres reglas que aprendimos a golpes en producción.
Claude Code en septiembre de 2026: MCP administrado, modo restringido, /skill-doctor y Fable 5.1 por defecto
Once versiones de Claude Code entre el 25 de agosto y el 9 de septiembre de 2026 (2.1.243 a 2.1.267): Fable 5.1 por defecto, managedMcpServers para toda la organización, --restricted, /skill-doctor, /diff, hooks de cambio de modelo y maxEffortLevel. Qué usar y qué configurar.