mcpcost

report · 46 137 servers · run of 2026-10-24

The state of the MCP registry, October 2026

mcpcost probes every server in the official MCP registry once a day. It connects as a client, lists the tools, and counts what the tool definitions cost in context tokens. This report reads the daily runs of October 2026, from the first full run on 2026-10-03 to the run of 2026-10-24. Package servers from npm and PyPI joined the probe on 2026-10-15. The tables say which numbers cover them.

1. The registry in numbers

The registry lists an entry per server version. mcpcost takes the latest version of each server. It probes every entry with a remote URL, and every entry whose only package is on npm or PyPI. Entries with only an OCI or MCPB package are not probed.

Registry, 2026-10-24EntriesShare
Entries, latest versions49 221100 %
With a remote URL32 36466 %
With an npm or PyPI package only14 27129 %
Probed46 13794 %
of which remote32 36470 %
of which package, in a container13 77330 %
Hosts23 592

By result

Three groups. Alive: the server answers initialize and tools/list. Gated: the server is reachable, but it wants auth, a payment, an environment variable or an argument first. Down: everything else.

ResultGroupServersShare of probed
Alivealive25 50955 %
Gatedgated11 11324 %
Down or brokendown9 51521 %
alivealive25 50955 %
needs authgated9 04120 %
crashed on startdown2 5996 %
not MCPdown2 0254 %
not founddown1 3453 %
needs envgated9282 %
no DNSdown8422 %
timeoutdown6711 %
install faileddown6511 %
paid (402)gated4721 %
server errordown4691 %
needs argsgated4111 %
TLS errordown3071 %
rate limiteddown2541 %
no executabledown1750 %
errordown1430 %
newer protocolgated1330 %
needs networkgated1280 %
refuseddown340 %

2. What changed in October

The first full run was on 2026-10-03. The table compares it with the run of 2026-10-24. The rows cover remote servers only, so the two runs measure the same thing. Package servers are in the second table.

Remote servers2026-10-032026-10-24Change
Registry entries, latest versions38 94249 22110 279
Entries with a remote URL24 29432 3648 070
Alive12 97517 1974 222
Alive, share of remote53 %53 %
Need auth5 8369 0413 205
Need auth, share of remote24 %28 %
Protocol 2025-11-25, share of alive with a known version60 %65 %
Hosts16 53423 5927 058

Token cost

Exact counts start on 2026-10-05, the first run with an API key. From 2026-10-15 the alive set also holds package servers. Their tool sets are smaller, so the median goes down as they join. The estimate row covers every run.

Alive servers2026-10-032026-10-052026-10-24
Alive servers in the set12 97513 33725 509
Median tokens, Claude Opus 5.5, exact2 9092 286
90th percentile, exact13 05013 046
99th percentile, exact44 09534 083
Median tokens, o200k estimate1 7271 6781 346
Median tools per server887

Run by run

25 daily runs. A point is missing where a run could not separate remote from package servers (2026-10-15 to 2026-10-20). Hover a point for its value, or open the table.

Alive remote servers

12 96815 08317 19710-0310-2410-03 · 12 97510-03 · 12 96810-04 · 13 09210-04 · 13 10610-05 · 13 32410-05 · 13 33710-06 · 13 66110-07 · 13 43610-08 · 13 67010-09 · 14 05410-10 · 14 28810-11 · 14 45710-12 · 14 75910-13 · 14 81710-14 · 15 09710-21 · 16 74010-23 · 17 00310-24 · 17 19717 197
as a table
RunValue
2026-10-2417 197
2026-10-2317 003
2026-10-2116 740
2026-10-1415 097
2026-10-1314 817
2026-10-1214 759
2026-10-1114 457
2026-10-1014 288
2026-10-0914 054
2026-10-0813 670
2026-10-0713 436
2026-10-0613 661
2026-10-0513 337
2026-10-0513 324
2026-10-0413 106
2026-10-0413 092
2026-10-0312 968
2026-10-0312 975

Alive, share of remote servers

53.054.055.010-0310-2410-03 · 53.4 %10-03 · 53.3 %10-04 · 53.5 %10-04 · 53.6 %10-05 · 54.0 %10-05 · 53.8 %10-06 · 54.5 %10-07 · 52.9 %10-08 · 53.0 %10-09 · 54.2 %10-10 · 54.5 %10-11 · 54.5 %10-12 · 54.8 %10-13 · 54.2 %10-14 · 54.5 %10-21 · 54.1 %10-23 · 53.1 %10-24 · 53.1 %53.1 %
as a table
RunValue
2026-10-2453.1 %
2026-10-2353.1 %
2026-10-2154.1 %
2026-10-1454.5 %
2026-10-1354.2 %
2026-10-1254.8 %
2026-10-1154.5 %
2026-10-1054.5 %
2026-10-0954.2 %
2026-10-0853.0 %
2026-10-0752.9 %
2026-10-0654.5 %
2026-10-0553.8 %
2026-10-0554.0 %
2026-10-0453.6 %
2026-10-0453.5 %
2026-10-0353.3 %
2026-10-0353.4 %

Median tokens of a tool set in Claude Opus 5.5, alive servers, exact

2 2862 6422 99810-0510-2410-05 · 2 90910-06 · 2 79010-07 · 2 88010-08 · 2 84310-09 · 2 99810-10 · 2 93510-11 · 2 93410-12 · 2 93310-13 · 2 97610-14 · 2 90910-15 · 2 73710-16 · 2 65510-17 · 2 56410-18 · 2 42010-19 · 2 38610-19 · 2 36710-20 · 2 35810-21 · 2 34210-23 · 2 29510-24 · 2 2862 286
as a table
RunValue
2026-10-242 286
2026-10-232 295
2026-10-212 342
2026-10-202 358
2026-10-192 367
2026-10-192 386
2026-10-182 420
2026-10-172 564
2026-10-162 655
2026-10-152 737
2026-10-142 909
2026-10-132 976
2026-10-122 933
2026-10-112 934
2026-10-102 935
2026-10-092 998
2026-10-082 843
2026-10-072 880
2026-10-062 790
2026-10-052 909

Servers that need auth, share of remote servers

24.026.028.010-0310-2410-03 · 24.0 %10-03 · 24.8 %10-04 · 25.0 %10-04 · 25.0 %10-05 · 25.2 %10-05 · 25.2 %10-06 · 25.3 %10-07 · 25.4 %10-08 · 25.5 %10-09 · 25.9 %10-10 · 26.1 %10-11 · 26.2 %10-12 · 26.3 %10-13 · 26.4 %10-14 · 26.6 %10-15 · 26.8 %10-16 · 27.0 %10-17 · 27.2 %10-18 · 27.2 %10-19 · 27.2 %10-19 · 27.3 %10-20 · 27.4 %10-21 · 27.7 %10-23 · 27.8 %10-24 · 27.9 %27.9 %
as a table
RunValue
2026-10-2427.9 %
2026-10-2327.8 %
2026-10-2127.7 %
2026-10-2027.4 %
2026-10-1927.3 %
2026-10-1927.2 %
2026-10-1827.2 %
2026-10-1727.2 %
2026-10-1627.0 %
2026-10-1526.8 %
2026-10-1426.6 %
2026-10-1326.4 %
2026-10-1226.3 %
2026-10-1126.2 %
2026-10-1026.1 %
2026-10-0925.9 %
2026-10-0825.5 %
2026-10-0725.4 %
2026-10-0625.3 %
2026-10-0525.2 %
2026-10-0525.2 %
2026-10-0425.0 %
2026-10-0425.0 %
2026-10-0324.8 %
2026-10-0324.0 %

Protocol 2025-11-25, share of alive servers with a known version

59.062.065.010-0310-2410-03 · 59.6 %10-03 · 59.4 %10-04 · 59.7 %10-04 · 59.6 %10-05 · 60.2 %10-05 · 60.1 %10-06 · 60.9 %10-07 · 59.8 %10-08 · 60.5 %10-09 · 59.7 %10-10 · 60.4 %10-11 · 60.6 %10-12 · 60.6 %10-13 · 60.3 %10-14 · 60.7 %10-15 · 61.5 %10-16 · 61.3 %10-17 · 61.6 %10-18 · 62.0 %10-19 · 62.3 %10-19 · 62.5 %10-20 · 62.5 %10-21 · 62.8 %10-23 · 64.5 %10-24 · 64.7 %64.7 %
as a table
RunValue
2026-10-2464.7 %
2026-10-2364.5 %
2026-10-2162.8 %
2026-10-2062.5 %
2026-10-1962.5 %
2026-10-1962.3 %
2026-10-1862.0 %
2026-10-1761.6 %
2026-10-1661.3 %
2026-10-1561.5 %
2026-10-1460.7 %
2026-10-1360.3 %
2026-10-1260.6 %
2026-10-1160.6 %
2026-10-1060.4 %
2026-10-0959.7 %
2026-10-0860.5 %
2026-10-0759.8 %
2026-10-0660.9 %
2026-10-0560.1 %
2026-10-0560.2 %
2026-10-0459.6 %
2026-10-0459.7 %
2026-10-0359.4 %
2026-10-0359.6 %

Registry entries, latest versions

38 94244 08249 22110-0310-2410-03 · 38 94210-03 · 38 98810-04 · 39 13810-04 · 39 15910-05 · 39 40710-05 · 39 61410-06 · 39 94310-07 · 40 32810-08 · 40 82210-09 · 41 05110-10 · 41 40710-11 · 41 78410-12 · 38 94210-13 · 42 79710-14 · 43 29110-15 · 43 84510-16 · 44 46210-17 · 45 12310-18 · 45 67810-19 · 46 18410-19 · 46 39310-20 · 46 82410-21 · 47 50710-23 · 48 74010-24 · 49 22149 221
as a table
RunValue
2026-10-2449 221
2026-10-2348 740
2026-10-2147 507
2026-10-2046 824
2026-10-1946 393
2026-10-1946 184
2026-10-1845 678
2026-10-1745 123
2026-10-1644 462
2026-10-1543 845
2026-10-1443 291
2026-10-1342 797
2026-10-1238 942
2026-10-1141 784
2026-10-1041 407
2026-10-0941 051
2026-10-0840 822
2026-10-0740 328
2026-10-0639 943
2026-10-0539 614
2026-10-0539 407
2026-10-0439 159
2026-10-0439 138
2026-10-0338 988
2026-10-0338 942

3. Token cost

A client sends the model the name, the description and the input schema of each tool. It does this in each request, also when the model calls no tool. The numbers below are the cost of the tool definitions of one server, as the Anthropic count_tokens endpoint counts them for Claude Opus 5.5. The endpoint is free and calls no model. Claude Code puts mcp__<server>__ in front of each tool name. The second column counts that variant.

Alive servers, 15 455 countedClaude Opus 5.5In Claude Codeo200k estimate
Median2 2862 4151 346
90th percentile13 04613 3877 428
99th percentile34 08334 59831 619
Maximum529 755532 593699 960
Sum over all counted servers86 597 00589 046 505103 984 113

The estimate column covers all 25 509 alive servers. 8 823 alive servers publish a schema the endpoint refuses; they have the estimate only.

Servers per cost band

How many of the counted servers fall into each band of exact tokens.

  1. 1 350< 500
  2. 2 099500 – 1k
  3. 3 0391k – 2k
  4. 4 0252k – 5k
  5. 1 4265k – 10k
  6. 3 13310k – 20k
  7. 29520k – 50k
  8. 6750k – 100k
  9. 21100k+
as a table
TokensServers
< 5001 350
500 – 1k2 099
1k – 2k3 039
2k – 5k4 025
5k – 10k1 426
10k – 20k3 133
20k – 50k295
50k – 100k67
100k+21

Exact against the estimate

The estimate serializes each tool as compact JSON and counts it with the o200k_base tokenizer. Claude renders the schemas in its own format, so the exact count is higher. The ratio is steady across servers.

Exact count divided by the estimateRatio
10th percentile1.64
Median1.76
90th percentile1.87

The heaviest tool sets

Claude's context window holds 200 000 tokens. The last column says how much of it one server takes before the first prompt. 6 alive servers do not fit into the window at all.

ServerHostToolsClaude Opus 5.5In Claude CodeOf 200k
com.mcparmory/elevenlabspypi.org258529 755532 593265 %
com.mcparmory/atlassian-jirapypi.org317438 661442 465219 %
ai.oobeprotocol.sap.mcp/sap-mcpmcp.sap.oobeprotocol.ai453317 425322 408159 %
io.github.Invaro/opentaxopentax.invaro.ai15294 076294 196147 %
com.mcparmory/klaviyopypi.org295272 624275 574136 %
com.mcparmory/canvaspypi.org696222 223227 791111 %
io.github.getgapup/gapup-mcpmcp.gapup.io279188 039191 38794 %
io.github.getgapup/mcp-knowledgemcp.gapup.io279188 039191 66694 %
io.github.silamir/boondmanager-mcp-servernpmjs.com238173 742177 55087 %
com.mcparmory/bitbucketpypi.org261164 500167 11082 %
io.github.zachshallbetter/adobe-mcp-illustratornpmjs.com308137 194142 43069 %
ai.intuitek.the-stall/the-stallthe-stall.intuitek.ai302131 963134 68166 %

All servers by token cost → · What a server costs, the short answer →

4. Auth

A server that answers 401 or 403 is reachable, but it does not talk to a client without credentials. The probe records the WWW-Authenticate scheme. Then it reads what the server publishes about getting in: the OAuth protected-resource metadata (RFC 9728) and the authorization server's metadata (RFC 8414). It never asks for a token.

WWW-Authenticate schemeServersShare of servers that need auth
Bearer7 87687 %
no WWW-Authenticate header1 13313 %
ApiKey180 %
AzureApiManagementKey60 %
OAuth20 %
Basic10 %
other schemes, 5 of them5

How a client gets in

Four kinds. The sentence under each one says what it means for a client.

KindServersShareFor a client
oauth-dcrOAuth, clients register themselves7 23880 %The authorization server registers clients itself (RFC 7591). Claude Code, Cursor or npx mcpcost auth connect with no setup. The user signs in and consents.
oauthOAuth, the publisher issues the client id4605 %The server publishes OAuth metadata, but the publisher issues the client id. A client needs a registration with the publisher before it can start the flow.
tokena key or token from the publisher4125 %The server wants a key or a token in a header. The publisher gives it out. A client has no standard way to get one.
unknownno WWW-Authenticate header, no OAuth metadata93110 %The server answers 401 or 403 and publishes nothing a client can read: no WWW-Authenticate scheme, no OAuth metadata. A client can only read the documentation.

All servers that need auth → · How the kinds are read →

5. The lumps

The registry is not flat. Most hosts publish one server. A few hosts publish thousands of entries from one template. The table lists the hosts with at least 200 entries. “Distinct tool sets” is the number of different tool lists one host serves: a host with many entries and few tool sets publishes the same server under many names.

HostEntriesAliveGatedDownDistinct tool setsMedian tokens, estimate
agent-observatory-sensor.nolimit-observatory.workers.dev2 3652 365002 3417 424
gateway.pipeworx.io1 89836901 52936925 220
api.mcp.ai1 1161 116001 0431 241
mcp.apify.com6288619181 835
api.m2mcent.com276027600
server.smithery.ai2160261900

Duplicate tool sets

A hash of the sorted tool names and schema sizes marks servers that serve the same tools under different names.

Alive serversServersShare
Alive servers25 509100 %
Distinct tool sets24 39696 %
Servers that copy another server's tool set1 1134 %

Packages

The two package registries are the biggest hosts. A package is probed in a container with the network off and placeholder values for the environment variables the registry entry lists.

HostEntriesAliveGatedDownDistinct tool setsMedian tokens, estimate
npmjs.com9 6386 8209261 8926 535973
pypi.org4 1351 4925412 1021 4771 819

The 500 biggest hosts hold 22 961 of the 46 137 probed servers. The other 23 092 hosts hold the rest. All hosts →

6. Protocol versions

The version a server negotiates in initialize. The container run does not record the version of a package server, so package servers are the “unknown” row. A server that answers with a version the current SDK rejects is counted as “newer protocol” in section 1, not here.

Negotiated versionAlive serversShare of alive with a known version
2025-11-2511 09365 %
2025-03-263 22919 %
2025-06-182 24013 %
2024-11-055863 %
unknown8 361

133 servers answer with a version the SDK does not support yet. They are reachable and count as gated.

7. What the registry does not catch

The registry checks who may publish under a name. It does not check that the endpoint speaks MCP, or that it still exists. These servers are listed as active, and a client that adds one gets an error. Not MCP, not found, no DNS and paid are the big ones.

ResultWhat the probe sawServersShare of remote
not MCPHTTP 200, but the body is not a valid MCP reply, or a JSON-RPC error to initialize2 0256 %
not foundHTTP 404, 405 or 410 on the endpoint the registry names1 3454 %
no DNSthe host name does not resolve8423 %
timeoutno answer in 15 seconds6712 %
paid (402)HTTP 402: the server wants a payment before it talks4721 %
server errorHTTP 5xx4691 %
TLS errorthe certificate or the handshake fails3071 %
rate limitedHTTP 429 to the first request2541 %
erroranother transport failure1430 %
refusedthe connection is refused340 %
Together6 56220 %

Packages that do not start

ResultWhat the probe sawPackagesShare of packages
crashed on startthe package starts and exits before it answers initialize2 59919 %
install failednpm or pip cannot install the package6515 %
no executablethe package installs but has no executable to start1751 %

What changed since yesterday → · All servers that are down →

8. Method and limits

The probe connects to each server once a day with the official TypeScript SDK, sends initialize and tools/list, and sends no credentials. The exact token count comes from the Anthropic count_tokens endpoint: one request with the server's tools and a marker tool, one with the marker tool only, and the difference is the cost. A server is counted again only when its tool definitions change. A server that needs auth shows no tools, so its cost is not in the numbers. One probe from one network on one day can miss a server that is alive: a timeout or a rate limit on that day counts as down. Package servers run in a container with the network off, so a package that needs a real network or a real credential shows as gated, not as alive.

The full method → · The source →

9. The dataset

One row per probed server from the run of 2026-10-24, with the numbers the board shows for it. The numbers of a row are the numbers the JSON API gives for that server, /api/s/<name>.json, on that day. The file is a static file of this site: it is small, and a static file costs no Worker request on the free tier, so it is the cheaper of the two ways to publish it. A GitHub release would hold a file over 10 MB.

46 137rows, one per probed server
13fields per row
1.2 MBgzip of a JSON document
CC BY 4.0use it, name the source

Download mcpcost-2026-10.json.gz

The document has the licence, the run date, the field list and the citation at the top. The rows are under rows. A missing value is null.

curl -sL https://mcpcost.ulehla.dev/data/mcpcost-2026-10.json.gz | gunzip | jq '.rows[] | select(.status == "ok") | .claude_tokens' | sort -n | tail -3

Fields

FieldMeaning
namethe registry name; the server page is /s/<name>
hostthe host of the remote endpoint; npmjs.com or pypi.org for a package server
transportstreamable-http, sse or stdio
statusthe probe result, the same words as the status filter of the board
http_statusthe HTTP status of the first response, when there was one
auth_schemethe WWW-Authenticate scheme of a server that needs auth
auth_kindhow a client gets in: oauth-dcr, oauth, token or unknown
protocol_versionthe protocol version the server negotiated
tool_countthe number of tools in tools/list
tools_tokensestimate: o200k_base over the compact JSON of the tool definitions
claude_tokensexact: the Anthropic count_tokens endpoint, claude-opus-5-5, tool names as published
claude_tokens_ccexact: the same with the Claude Code prefix mcp__<server>__ on each tool name
probed_atwhen the run probed the server; a package server keeps the time of its last container run

The same run as re-check evidence for the registry

The official registry discusses a periodic re-check of its entries (issue #1715). This file is this run in the row shape agreed there, so a registry job can merge it with evidence from other sources: entry, checked_at, check (endpoint for a remote server, package for an npm or PyPI server started in a container), state and evidence. The state is one of five: alive (initialize and tools/list succeeded), auth (reachable, needs credentials or payment), transient (the endpoint exists but did not serve this run: timeout, 429, 5xx, refused), dead (no DNS, TLS failure, 404, not MCP; a package that does not install), unknown (a package that needs values or a network to start). The evidence holds the probe status by cause, the target, the HTTP status, the auth scheme and kind, the protocol version, the tool count and the first line of the error.

Download mcpcost-evidence-2026-10.json.gz (1.6 MB, CC BY 4.0, the same licence and citation)

The newest run in the same shape is always at /data/mcpcost-evidence-latest.json.gz. It changes after each daily run. Its index, mcpcost-evidence-latest.index.json, gives the run date, the number of rows, the size and the SHA-256.

Licence and citation

The dataset is published under Creative Commons Attribution 4.0. You may copy it, change it and build on it, also for commercial work. Name the source. A link to this page is enough.

Ondřej Úlehla, The state of the MCP registry, October 2026. mcpcost, run of 2026-10-24. https://mcpcost.ulehla.dev/report/2026-10. CC BY 4.0.

The code of the probe and of this site is MIT. The daily summaries since 2026-10-03 are committed in the repository as data/latest/summary.json, and the summary API serves the latest one.