Herramientas MCP con Lazy Loading: Quién las soporta y cómo

La mayoría de la gente piensa que los costes de los servidores MCP residen en el código. Se equivocan.

Si construyes un servidor MCP, te enfrentas a dos tipos de costes de tokens:

  • Coste fijo: Definiciones de herramientas cargadas en el contexto en cada turno.
  • Coste variable: El tamaño de la respuesta que devuelve una herramienta.

Tú controlas el coste variable. Puedes paginar los resultados o limitar el tamaño de la salida.

No controlas el coste fijo. Ese es el trabajo del host (el cliente).

Si tienes diez servidores con muchas herramientas, podrías desperdiciar 40.000 tokens antes incluso de que el modelo lea tu primer mensaje. Esto sucede porque el host carga todas las definiciones de las herramientas de antemano.

La solución es el lazy loading. Esto significa que el host solo carga una pequeña herramienta de búsqueda y extrae las demás definiciones solo cuando es necesario.

¿El problema? La mayoría de los clientes aún no lo soportan.

Estado actual del lazy loading:

  • Claude Code: Lo soporta. Las herramientas se cargan bajo demanda a través de una herramienta de búsqueda.
  • Cursor, Devin y otros: No lo soportan. Cargan todo a la vez.

Si tu contexto se está inflando en un cliente que carece de lazy loading, tienes dos opciones:

  1. Usa un proxy de carga diferida (lazy proxy) Dirige tu host a un servidor proxy en lugar de a tus servidores reales. El proxy expone solo dos herramientas: search_tools y execute_tool. Carga tus definiciones reales solo cuando se solicitan. Esto reduce tu contexto, pero elimina el control de permisos detallado.

  2. Usa un patrón de enrutador (router pattern) Si un servidor se está volviendo demasiado grande, no añadas más herramientas. En su lugar, crea una sola herramienta con un parámetro de operación. Por ejemplo, usa una herramienta "docs" con comandos como "list", "get" o "search". Esto reduce el número de esquemas que el host debe cargar.

Resumen de la estrategia:

  • De 6 a 15 herramientas: No hagas nada. El coste es demasiado bajo como para preocuparse.
  • Muchas herramientas en un solo servidor: Usa un patrón de enrutador.
  • Muchos servidores diferentes: Usa un proxy de carga diferida.

Comprueba el comportamiento de tu cliente antes de pasar horas optimizando tu código. Es posible que la solución no esté en tu servidor en absoluto.

Fuente: https://dev.to/ismaestro/lazy-loading-mcp-tools-which-clients-support-it-and-how-4414

Comunidad de aprendizaje opcional: https://t.me/GyaanSetuAi