La ideaTu caso. Tienes Claude Code con varios servidores MCP conectados —los programas que le añaden herramientas al agente, como leer tus ficheros o consultar una base de datos—. Cada herramienta que traen tiene un nombre y una descripción, y la descripción es larga.
Quién decide qué se manda. Una variable de entorno llamada ENABLE_TOOL_SEARCH. Decide una sola cosa: si Claude Code le manda al modelo la descripción entera de cada herramienta o solo su nombre. V
Cómo mirar la tuya. Puede estar puesta en tres sitios distintos, y conviene mirarlos en este orden, porque lo que esté escrito en el terminal se impone a lo que digan los ficheros de ajustes. V
- En el terminal desde el que abres Claude Code. Escribe
echo $ENABLE_TOOL_SEARCH y pulsa intro. Si la línea que aparece debajo sale vacía, la variable no está puesta en ese terminal. Si aparece un valor, ese es el que se está aplicando. - En tus ficheros de ajustes. La variable puede estar escrita en el apartado
env de dos ficheros: ~/.claude/settings.json, que vale para todos tus proyectos, y el .claude/settings.json del proyecto en el que estés, que vale solo para ese. Ábrelos y busca el nombre de la variable dentro de ese apartado. - En el diagnóstico que trae Claude Code. La orden
claude doctor, escrita en el terminal, imprime el estado de tu instalación y de tus ajustes sin llegar a abrir una sesión. Y ya dentro de una sesión, /status te dice qué ficheros de ajustes están activos, que es lo que necesitas cuando la variable aparece en más de un sitio y quieres saber cuál gana. V
Qué hace de fábrica, sin tocarla. Manda solo los nombres. Cuando el modelo va a usar una herramienta, pide entonces su descripción. A eso lo llaman búsqueda de herramientas, y viene puesta. V
Qué pasa si la tocas. Al ponerla en false, Claude Code manda las descripciones enteras desde el primer mensaje, y en todos los demás. Con cuatro servidores y 46 herramientas, eso fueron 34.703 tokens más en cada petición. V
Y aquí está lo que no esperábamos: solo 11.069 de esos tokens eran de nuestros servidores. Los otros 23.634 eran herramientas del propio Claude Code, que también esperaban a hacer falta y que al apagar la búsqueda se mandan todas igual. V Dicho de otra manera: apagarla te sale caro aunque no tengas conectado ningún servidor.
Esos tokens ocupan contexto, que es todo lo que el modelo tiene delante en cada petición, y se vuelven a mandar en cada una. El tope de ese espacio es la ventana de contexto. En una ventana de 1 millón, 34.703 tokens son el 3,5 % ocupado antes de que escribas nada. En una sesión de 200.000, que es lo que tienes con Opus 4.6 o Sonnet 4.6 si no pides la variante de 1 millón, son el 17 %. V
Lo que se ha medido. Cada forma de dejar la variable es un brazo del experimento. En cada brazo se abrió 3 veces la misma sesión vacía y se contaron los tokens de su primera petición tal como los cuenta la API, el servicio de Anthropic que recibe cada petición de Claude Code. Las 3 repeticiones salieron iguales, con 3 tokens de diferencia como mucho. V
| Cómo estaba la variable | Tokens de la primera petición | Qué añaden los servidores y la variable |
|---|
Sin servidores, sin tocar el punto de partida | 32.847 | Nada: es lo que pesa Claude Code solo. |
Cuatro servidores, sin tocar lo que trae de fábrica | 34.773 | 1.926 tokens: los nombres de las 46 herramientas y las instrucciones de cada servidor. |
Cuatro servidores, true | 34.775 | Lo mismo que sin tocar. La documentación dice que son el mismo comportamiento, y lo son. V |
Cuatro servidores, auto | 70.456 | 37.609 tokens. Con una ventana de 1 millón se portó como false. |
Cuatro servidores, false | 69.476 | 36.629 tokens: tus 46 herramientas enteras y las herramientas propias de Claude Code. |
Sin servidores, false para separar las dos cosas | 56.481 | 23.634 tokens que no son de ningún servidor: son de Claude Code. |
Por qué auto no es un término medio. Con auto, Claude Code las manda todas desde el principio mientras las definiciones ocupen menos del 10 % de la ventana, y solo a partir de ahí activa la búsqueda. V En una ventana de 1 millón, ese 10 % son 100.000 tokens. Nuestras 46 herramientas ocupaban unos 13.000, así que auto las cargó todas y salió igual que apagarla. V Para que auto llegue a buscar, con esa ventana, haría falta un catálogo de herramientas unas ocho veces mayor que el nuestro. I
Y lo que cuesta la búsqueda cuando se usa. Se pidió 5 veces en cada brazo una tarea que obliga a usar una herramienta concreta: crear una nota con el servidor de memoria. Salió bien las 20 veces, así que ningún brazo ahorra tokens a costa de fallar la tarea. V Con la búsqueda encendida, en 6 de las 10 ejecuciones el modelo pidió primero la descripción de la herramienta, y eso es una petición más; en las otras 4 la llamó directamente por su nombre. La tarea entera pesó unos 105.500 tokens en el primer caso y unos 69.800 en el segundo. Con la búsqueda apagada pesó 139.196 las 5 veces, con 4 tokens de diferencia como mucho, y con auto, unos 141.150. V Incluso con el paso de más, encendida salió un 24 % más ligera, porque esa petición extra pesa menos que llevar 34.703 tokens de más en cada una de las otras. I
Lo que haríamos, y esto es propuesta nuestra a partir de lo medido: I
- No pongas
ENABLE_TOOL_SEARCH en false ni en auto. Si la tienes en el env de tus ajustes o en tu terminal, quítala. - Abre una sesión y teclea
/context. Las líneas de herramientas marcadas como diferidas son el sitio que te estás ahorrando. La de las herramientas propias de Claude Code es la que te dice cuánto te costaría apagar la búsqueda aunque no tuvieras ningún servidor. - Si hay un servidor cuyas herramientas tienen que estar a mano en cada turno, ponle a él solo
"alwaysLoad": true en su configuración y deja la búsqueda encendida para los demás. La documentación lo recomienda para pocas herramientas, porque cada una que se carga al principio ocupa sitio en todas las peticiones. V
Cómo se decidió el montaje, para que puedas discutirlo. I
- Contar con la API y no solo con
/context. /context da un reparto por categorías, pero su propia cabecera dice que es una estimación: en nuestra sesión vacía decía 27.000 tokens y la API contó 32.847. Las cifras de arriba son las de la API, que es lo que de verdad se manda; /context sirvió para ver de qué estaba hecha cada cifra. - Una tarea mínima en vez de una realista. Se valoró pedir un arreglo en un proyecto de verdad, y se descartó: el modelo decide cuántos pasos da, y esa variación taparía una diferencia que está en la parte fija de cada petición. Se pierde saber qué pasa en una sesión de una hora; se gana poder atribuir cada token.
- 3 repeticiones del arranque y 5 de la tarea. El arranque no depende del modelo, así que 3 bastaban para comprobar que no variaba, y no varió. La tarea sí depende de él, porque decide si busca antes la herramienta, y por eso lleva más.
- Servidores de referencia y no los de tu trabajo. Se descartaron servidores como los de GitHub o Jira porque exigen cuenta y cambian solos. Los cuatro elegidos son los de ejemplo del proyecto MCP, fijados por versión, y cualquiera puede instalarlos.
- El sexto brazo se añadió después. Al ver que apagar la búsqueda subía también las herramientas propias de Claude Code, se repitió el arranque sin ningún servidor y con
false, para separar lo que pesan tus servidores de lo que pesa Claude Code. Sin ese brazo, los 36.629 tokens se habrían leído como coste de los servidores.