Every MCP server you connect charges rent on every turn
Connecting an MCP server is not free and it is not one-off. Its tool definitions go into the model's context on every turn, whether you call the tools or not. We measured nine common servers: together they cost about 29,300 tokens per turn, which is roughly 15% of a 200k context window, gone before you type anything. The number that surprised us is not the total. It is that the tool count you eyeball when deciding what to connect tells you almost nothing about what a server will cost you.
What nine servers actually cost
Tool count does not predict the bill
This is the part worth internalising. context7 ships two tools and costs more than puppeteer's seven. sequential-thinking ships one tool, and that single tool costs 1,093 tokens — more than puppeteer's entire server. Cost per tool across the set spans 11.5×, from 95 tokens to 1,093.
| Server | Tools | Tokens/turn | Tokens per tool |
|---|---|---|---|
| firecrawl | 26 | 10,767 | 414 |
| playwright | 24 | 4,758 | 198 |
| filesystem | 14 | 3,345 | 239 |
| memory | 9 | 2,955 | 328 |
| marigold-draft (ours) | 13 | 2,486 | 191 |
| everything | 13 | 2,071 | 159 |
| context7 | 2 | 1,134 | 567 |
| sequential-thinking | 1 | 1,093 | 1,093 |
| puppeteer | 7 | 667 | 95 |
Two servers that drive a browser sit 7× apart: puppeteer at 667 tokens, playwright at 4,758. That is a real difference in what they expose, not waste — playwright's surface is genuinely larger. But if you connected one because you vaguely wanted browser automation, you probably did not price it.
The expensive tools are expensive for a reason
We went into this expecting to find bloat, including our own. We did not, and the honest version of the finding is more useful than the one we planned.
Our worst single tool is save_insight at 581 tokens. Reading it: 329 tokens are the input schema and 206 are the description, and that description documents a refusal protocol — what comes back when the server rejects a near-duplicate, and the four ways to respond. An agent cannot use the tool correctly without it. We could cut it and improve our ranking in our own table. The tool would get worse.
sequential-thinking is the same story in the extreme. Its one tool costs 1,093 tokens because the tool is a methodology written into a description. That is not a bug in how it was packaged; it is what the server is.
So the useful question is about rent, not waste
- Every connected server charges rent every turn, forever. Not at install, not on first call. On every turn, for the life of the session.
- Price the rent against how often you actually call it. A 10,767-token server you use twice a day is a bad trade. A 1,093-token server you lean on constantly is a fine one. The absolute number means nothing without the usage.
- Audit what is connected, not what is installed. Most people accumulate servers and never disconnect one. The bill is the sum of everything currently attached, including the three you forgot about.
- Do not judge by tool count. It is the intuitive proxy and it is wrong by up to 11.5× in this sample.
initialize, then tools/list; we tokenized the returned tool array with cl100k_base via tiktoken. Measured 30 July 2026 on then-current versions — tool schemas change between releases, so treat this table as a snapshot, not a standing ranking. cl100k_base is OpenAI's tokenizer; Claude and Gemini tokenize differently, so read these as comparative rather than absolute. Servers requiring API keys (slack, brave-search) and Python-runner servers (git, fetch) failed to start in our environment and are excluded — this is a sample of nine, not a census. We measured the tool array only; a real client also spends tokens on system prompt scaffolding around those definitions, so these numbers are a floor. And we are the authors of one of the servers in the table, which you should weigh accordingly, though it did not come out flattering.
Third in a short series. We are a two-person project trying to get a developer tool in front of people, and we keep finding that the received wisdom in this area is either unmeasured or measured once and copied forever. When we check something and the answer is useful, we write it up like this — including when the answer is that we were wrong.