El generador de servidores MCP agrupa 200 endpoints en 8 herramientas
MCP-Generator 2.1.5 deja de crear una herramienta por endpoint, agrupa por tag o ruta y conserva el codigo propio entre regeneraciones

MCP-Generator, la herramienta de Christopher Dond que convierte una especificacion OpenAPI en un servidor MCP, ha publicado la version 2.1.5 con un cambio de planteamiento en como expone la API. En lugar de generar una herramienta por cada operacion, ahora agrupa por tag o por ruta: 200 operaciones repartidas en ocho tags dejan de producir un servidor de 200 herramientas y pasan a generar alrededor de ocho, cada una enrutando internamente por accion. El generador escribe TypeScript, Python y Go.
El propio autor admite que la primera version lo hacia mal. Una operacion, una herramienta. Con una API real eso da un servidor con doscientas herramientas que ningun agente puede manejar, y el feedback que recibio apuntaba exactamente ahi. La correccion llega por la via de agrupar antes de exponer.
Filtrar antes de generar
No todo el mundo quiere el catalogo completo dentro del servidor. La CLI permite recortar la especificacion antes de escribir codigo:
--group-by tagpara agrupar por tag o por ruta--include-tags,--include-pathsy--exclude-pathspara elegir que entra--path-prefixpara limitar por prefijo de ruta--operation-allowlistpara listar por nombre las operaciones que se quieren
El caso de uso es evidente: si el agente solo va a tocar usuarios y pedidos, no tiene sentido cargarle el resto de la API.
Regenerar sin perder codigo
El otro punto que suele romper estos generadores es la segunda pasada. Aqui el codigo propio vive entre marcadores y sobrevive a la regeneracion con un merge a tres bandas. Al ejecutar con --incremental, el contenido que hay entre las marcas se conserva. La logica reutilizable va en handlers.custom.* y no se sobrescribe salvo que se pase --force de forma explicita.
La version 2.1.5 tambien cierra varios agujeros de la fase 0. En TypeScript ya se serializan bien los parametros de consulta, de modo que una llamada con limite se traduce en el ?limit=5 correspondiente. En Python funcionan _build_query y _build_headers en modo --http, incluidos los grupos de herramientas. En Go, --http apunta por fin al APIClient real y desaparecen los stubs de "not yet wired" que arrastraba. El registro de especificaciones pasa a ser exclusivo de la version 3, con errores que indican que clave se ha eliminado en lugar de fallar en silencio.
Se instala como paquete global de npm (@christopher_dondici/mcp-gen@2.1.5) o se clona el repositorio y se compila en local; el ejemplo de petstore viene incluido para probar el flujo completo. El autor dice haberlo validado con npm run build y npm test, 11 suites y 196 pruebas. Lo que queda por ver es si el enfoque de agrupar resiste APIs donde el agrupado por tag no separa bien las acciones, y si el merge a tres bandas se comporta cuando varias ramas tocan el mismo bloque marcado.


