Vai al contenuto

La tassa sugli strumenti MCP: paghi la superficie prima ancora di chiedere

Definizioni tool reiniettate a ogni richiesta: 6.726 token per soli 36 tool misurati. Quattro strategie per abbattere la tassa, scelte per contesto d'uso.

La tassa sugli strumenti MCP: paghi la superficie prima ancora di chiedere

Ogni volta che un agente si collega a un server MCP, il client chiama tools/list e riceve, per ciascun tool, una definizione JSON Schema completa: nome, descrizione, parametri, tipi, vincoli. Quella definizione entra nel contesto del modello, viene contata in token e viene reiniettata a ogni nuova conversazione, anche quando l'agente userà un solo tool o non ne userà nessuno.

I maintainer del protocollo l'hanno scritto in chiaro nella roadmap ufficiale: "il modello paga per l'intera superficie prima che l'utente abbia posto una sola domanda" (roadmap MCP). Non è un bug: è il comportamento di default del protocollo, e ora è un cantiere dichiarato sotto il nome di progressive discovery.

La misura in prima persona

Per capire quanto pesa davvero questa superficie, ho catturato tools/list via stdio (JSON-RPC su npx) da tre server ufficiali e contato i token con tiktoken in cl100k_base.

Server (ufficiale)ToolCharToken
server-filesystem1412.9832.759
server-memory910.7602.288
server-everything137.6631.679
Totale3631.4066.726

Tre soli server, trentasei tool: 6.726 token buttati nel contesto a ogni richiesta, prima che l'utente chieda qualsiasi cosa. In media 187 token per tool.

La deduplicazione, da sola, non basta — Nessuno dei tre server usa `$defs` o `$ref`: zero occorrenze nei payload. Il costo non nasce dalla duplicazione di schemi, ma dalla semplice presenza degli schemi. È il controesempio alla tesi "basta deduplicare".

Il problema è già stato misurato su scala più ampia: l'analisi di LeanZero ha contato 145 tool su 10 server per 40.784 token a richiesta, con l'81,1% del payload occupato da JSON Schema e 3,2 GiB di KV cache bruciati prima che la conversazione inizi. Il paper "Tool Attention" parla di una tassa tra 10k e 60k token per turno sui deployment multi-server (arXiv).

Quattro strategie a confronto

StrategiaCosto token/richiestaLatenzaComplessitàQuando conviene
Schemi ricchi, $defs ripetuti (status quo)Altissimo: cresce col numero di tool e con la ricchezza degli schemiZeroZero: è il defaultServer già in produzione, se il budget token non è un vincolo
API avvolte 1:1Basso: schemi minimi, zero $defsZeroBassa: un tool per endpointAgenti monouso con pochi endpoint noti
Discovery differita / lazy loadingBasso: si carica solo il tool che serveDa bassa a media: una chiamata in piùMedia: serve un loaderAgenti multi-server con decine di tool
Progressive discovery della specMinimo: dedup via $ref e retrieval per embeddingZero a regime, non ancora disponibileDipende dalla specServer pubblici serviti a molti client diversi

La prima riga è lo status quo, ed è il punto da cui si parte. La seconda è una decisione di design: chi espone un tool per endpoint con schemi minimi, senza $defs, abbassa il costo per tool alla fonte. È la leva che controlla chi costruisce il server.

La terza, la discovery differita, è la risposta che Swarms ha già messo in produzione: la release v15 "Akira" dichiara che i suoi 16 tool built-in costano circa 2.600 token a richiesta e introduce un DynamicToolLoader che registra i tool ma li carica solo quando servono (blog Swarms).

La quarta è il cantiere ufficiale annunciato nella roadmap: la progressive discovery. I meccanismi che prefigura, deduplicare gli schemi via $ref e recuperare i tool per embedding invece di inviarli tutti, sono già stati delineati da una proposta del settembre 2025 (SEP-1576), ma una proposta non è una revisione: la spec deve ancora adottarli.

Dove conviene cosa

Non esiste una strategia che vince su tutti i fronti, e chi la propone sta vendendo la propria.

Agente monouso, pochi endpoint. L'avvolgimento 1:1 è la scelta giusta: schemi minimi, costo quasi azzerato, nessuna infrastruttura in più. Il prezzo è rinunciare alla scoperta dei tool a runtime, ma un agente monouso non ne ha bisogno.

Agente multi-server con decine di tool. Qui la tassa diventa il problema: 4 server come i tre che ho misurato, circa 50 tool, costano oltre 9.000 token a richiesta con un tokenizer standard, il 7% di una finestra da 128k, prima ancora della conversazione. Il lazy loading è la risposta migliore oggi: paghi solo i tool che entrano davvero nel contesto.

Il costo è una chiamata in più per risolvere i tool, e la complessità di un loader che decide cosa caricare. Il paper "Tool Attention" misura una riduzione del 95% dei token con questa tecnica, da 47.300 a 2.400, su un benchmark simulato da 120 tool: i numeri end-to-end sono proiezioni dichiarate, ma la direzione è netta (arXiv).

Server pubblico servito a molti client diversi. È il caso che solo la spec risolve: un server non sa in anticipo quale tool un client ignoto vorrà usare, quindi la discovery progressiva con retrieval per embedding è l'unica leva che scala senza sprecare superficie per tutti.

Il vincitore assoluto non esiste, e questa è la conclusione operativa: la scelta dipende da chi paga il conto.

Il conto per tool

I dati pubblicati e la mia misura permettono un confronto che nessuna delle fonti fa direttamente: il costo per tool dei server ufficiali contro quello dei server ricchi. LeanZero pubblica la media dei suoi dieci server: 281 token per tool, con una forchetta da 87 a 898 (LeanZero). I tre server ufficiali che ho misurato stanno a 187 token per tool. Il confronto è approssimativo ma onesto: i due tokenizer sono diversi (LeanZero usa un tokenizer open-weight locale, io cl100k_base), e sui tre server che abbiamo misurato entrambi il suo conta meno del mio, quindi con lo stesso tokenizer il divario con i server ricchi sarebbe ancora più largo.

Il punto non è la media, sono i casi estremi. Notion costa 698 token per tool secondo LeanZero, quasi quattro volte i miei 187, perché ripete 9 $defs in 24 tool (LeanZero). Il costo per tool non è costante e non dipende dal numero di tool: dipende dalla ricchezza dello schema.

Ne segue la conseguenza che regge il confronto: la deduplicazione via $ref fa risparmiare di più proprio sui server più pesanti, quelli che oggi gonfiano la tassa. Sul server snello il taglio è marginale, sul server con gli schemi ripetuti è il 77,7% del payload (LeanZero). Ridurre il numero di tool, al contrario, colpisce la variabile sbagliata: la correlazione tra tool e costo misurata da LeanZero è r = 0,518.

La leva non sta nel ridurre il numero di tool, ma nel ridurre la superficie per tool che si paga. E fino a quando la progressive discovery non sarà nella spec, quella leva è nelle mani di chi costruisce il server: un tool con schema minimo costa 187 token. Un tool con schemi ricchi e $defs ripetuti ne costa quasi 700. La differenza è una decisione di design, non un vincolo del protocollo.

Further Reading

The New MCP Roadmap
An update on the Model Context Protocol roadmap and focus areas for upcoming specification releases.
145 MCP tool definitions cost 40,784 tokens | LeanZero
Measured on ten real MCP servers: 145 tool definitions burn 40,784 context tokens before your question, and 30% is one server repeating itself.
SEP-1576: Mitigating Token Bloat in MCP: Reducing Schema Redundancy and Optimizing Tool Selection · Issue #1576 · modelcontextprotocol/modelcontextprotocol
Preamble Title: Mitigating Token Bloat in MCP: Reducing Schema Redundancy and Optimizing Tool Selection Authors: Zeze Chang ([email protected]), Jinyang Li ([email protected]), Zhen Cao (zhe…
Swarms v15 ‘Akira’: Dynamic Tool Loading, a Real Agent Harness, and Typed Chat Turns
The complete technical changelog for Swarms v15, code-named Akira. A DynamicToolLoader defers tool schemas behind a searchable catalog so a fifty-tool agent sends one schema, the autonomous agent harness ships sixteen working built-in tools with an honest transcript and a mutable plan, every multi-agent structure now delivers context as typed chat turns instead of one flattened blob, and 27 dead modules are gone. Every new feature, improvement, and bug fix from July 29 to September 1, 2026, day by day.
Swarms v15 ‘Akira’: Dynamic Tool Loading, a Real Agent Harness, and Typed Chat Turns
The complete technical changelog for Swarms v15, code-named Akira. A DynamicToolLoader defers tool schemas behind a searchable catalog so a fifty-tool agent sends one schema, the autonomous agent harness ships sixteen working built-in tools with an honest transcript and a mutable plan, every multi-agent structure now delivers context as typed chat turns instead of one flattened blob, and 27 dead modules are gone. Every new feature, improvement, and bug fix from July 29 to September 1, 2026, day by day.
Condividi