modelmarket.dev · blog

What an MCP server's tool list costs: we counted the tokens of 34,374 of them

2026-10-19 · 4 min read #mcp#ai#llm#opensource

Under our survey of 12,915 MCP servers, a reader did the arithmetic we had not: 182,157 tool definitions over 7,656 servers is about 24 tools each, and a client resends every one of them with each model request. Count the tokens of a typical list, the comment said, and that becomes a cost.

HISTOR, our public log of MCP servers, keeps the current tool list of every server it observes. So instead of one typical list we counted all of them: 18,204 npm and PyPI packages and 16,170 remote servers, as of 19 October 2026.

How we counted

A list is counted the way a client puts it into a model request: for each tool its name, description and input_schema, as compact JSON. The tokenizer is o200k_base (tiktoken 0.12). Every server with at least one tool counts once, with the list HISTOR last observed.

The numbers

Packages Remote servers
Servers 18,204 16,170
Tool definitions 337,449 232,427
Tools per server: median / mean 8 / 18.5 7 / 14.4
Tokens per server: median 1,272 1,328
mean 3,812 3,412
90th percentile 8,361 7,425
99th percentile 39,612 22,294
largest 304,780 547,935
Tokens per tool: median 129 231
Servers over 10,000 tokens 1,447 618
Servers over 100,000 tokens 31 9

Three things stand out.

The mean is three times the median. A typical server is cheap. A few hundred servers with hundreds or thousands of tools carry most of the tokens. The "about 24 tools" from the survey was the mean over the packages that answered on 13 October; over today's larger set the mean is 18.5 and the median 8.

The heaviest lists are not the ones with the most tools. The largest remote list is 547,935 tokens for 71 tools, about 7,700 tokens per tool. Another remote server lists 15 tools in 175,588 tokens. What makes a list heavy is the size of each definition more than the number of tools: at thousands of tokens per tool, a description or an input schema is a document of its own.

Some do not fit at all. 304,780 tokens is more than a 200,000-token context window. A client that connects that package has no room left for the question.

In money

The list rides along with every request, so its cost is tokens × price × requests. Per 1,000 requests at list prices on 19 October 2026:

One server's list Tokens $0.10 per million (a small model) $2 per million (a mid-size model) The mid-size model reading it from a prompt cache
median package 1,272 $0.13 $2.54 $0.13
mean package 3,812 $0.38 $7.62 $0.38
90th percentile 8,361 $0.84 $16.72 $0.84
99th percentile 39,612 $3.96 $79.22 $3.96

A client with five median servers sends about 6,400 tokens of tool definitions before the user types a word.

What cuts the bill

Count yours

We put the counter on a free page: modelmarket.dev/tools/tool-list-cost. Paste a tools/list, or name a server HISTOR observes (an https endpoint, npm:<package>, pypi:<package> or a registry name). You get its tokens, where it sits among the 34,374, the money per 1,000 requests, the heaviest tools, and a line for your README:

![tool list](https://img.shields.io/endpoint?url=https%3A%2F%2Fmodelmarket.dev%2Ftools%2Fbadge%2Ftool-list-cost%3Fserver%3Dnpm%253Ayour-package)

The page counts with the same tokenizer as the numbers above. We checked it against tiktoken on 120 of HISTOR's tool lists, 2.6 million tokens, with no difference. A pasted list is counted in memory and not kept; a lookup asks HISTOR and never contacts the server.

What this does not measure

Reproduce

The method, in five languages, is docs/tool-list-cost.md in alexar76/histor, with the script that counted (scripts/tool_list_tokens.py, export query in its docstring) and the summary without server names (docs/tool-list-tokens-2026-10-19.json).

We build HISTOR and WARDEN. The numbers are a snapshot of 19 October 2026; the log keeps moving. No server is named here. Thanks to Paul Irolla for the question.

Questions or corrections? The discussion is on dev.to.