How often does an MCP server change its tools? One in five did within two weeks
Every 12 hours our probe asks each server in the directory for its tool list, without credentials, and keeps what comes back. Put two of those lists side by side and you can see whether the server's tools changed in between. This post counts how often that happened, across every remote MCP server whose tool list we have read at least twice.
What counts as a change
For each list we compute a toolset fingerprint: a hash over the tool names, sorted. So order does not matter, and only names do: a new description or input schema under the same name leaves the fingerprint as it was. We come back to descriptions further down.
A change is two consecutive successful reads of the same server with different fingerprints. A failed read is skipped, and the next successful one is compared with the last one before it. A server's first read cannot be a change.
We left out five servers. Two are claimed servers on the Indie plan, which we read every 15 minutes, a different clock. Three answered with a paged list: the answer carried a cursor for a next page, which we never fetch, so their first page could differ between reads without any tool changing. That leaves 1,893 servers read at least twice.
We also looked for changes that would not be changes. None came from duplicate names alone: every change added or removed at least one name. And a change on our side would show up as a burst inside one 12-hour round, since every server is read once per round. We did not see one: from 17 September to 7 October, between 10 and 26 of every 1,000 successful reads came back different from the read before, and the busier days were busy across the whole day.
One in five, within two weeks
Of the 1,893 servers, 415 changed their tool set at least once: 22 percent. But servers joined at different times. We have read some for 47 days and some for less than one; the median is 9 days. So the fairer question is how many changed within the same length of time:
| read for at least | servers | changed within that time | share |
|---|---|---|---|
| 7 days | 1,419 | 215 | 15% |
| 14 days | 803 | 180 | 22% |
| 21 days | 546 | 156 | 29% |
Each row counts only changes inside each server's first 7, 14 or 21 days of observation. The rows are different groups: the 21-day row holds only the servers we have read the longest.
A few servers make most of the changes
The 415 servers changed 788 times in all:
| changes per server | servers |
|---|---|
| 0 | 1,478 |
| 1 | 242 |
| 2 | 88 |
| 3 to 5 | 72 |
| 6 to 10 | 11 |
| more than 10 | 2 |
The 85 servers with three or more changes, 4.5 percent of the 1,893, account for 370 of the 788, nearly half. The most active server changed 13 times. Over about 24,000 server-days of observation that averages one change every 31 days per server, an average that says little when most servers never changed.
Most changes add tools
We compared the tool names on both sides of each change:
| kind of change | changes | share |
|---|---|---|
| names added, none removed | 667 | 85% |
| names removed, none added | 56 | 7% |
| names both added and removed | 65 | 8% |
In all, 3,040 names appeared and 963 disappeared. Changes were small: 318 touched a single name, and the median was two. Of the 415 servers that changed, 364 ended with more tools than they started with, 33 with fewer and 18 with the same number. Only 11 changes went back to a tool set the server had shown before, so few servers flipped between two versions behind one address.
Bigger tool sets change more often
The 803 servers read for at least 14 days, grouped by how many tools they listed at their first read:
| tools at first read | servers | changed within 14 days | share |
|---|---|---|---|
| 0 to 5 | 362 | 56 | 15% |
| 6 to 10 | 211 | 34 | 16% |
| 11 to 20 | 130 | 39 | 30% |
| 21 to 50 | 71 | 33 | 46% |
| 51 or more | 29 | 18 | 62% |
The last row is small, but the direction holds across all five.
How far apart
For the 173 servers with two or more changes, the median time from one change to the next was 36 hours. A quarter of the gaps were 12 hours or less, one read apart; a quarter were longer than four and a half days. Nothing shorter than our 12 hours is visible: a tool added and removed between two reads leaves no trace.
Names are not the whole story
Since 16 September we also keep a digest over each tool's name, description and input schema. Comparing consecutive reads that both have one, 405 servers changed their tool names 755 times, and 566 servers changed descriptions or schemas while keeping every name, 1,378 times. Some of that is likely text that differs on every request, such as a date in a description; we have not separated it out.
For maintainers
Each server's page in the directory shows when its tool set last changed, by the same fingerprint, and whether that was in the last seven days; the stats page counts the servers that changed in the last seven days. We read without credentials, so the list we compare is the one any anonymous client receives. If the date on your page surprises you, something served a different list than you expected: a deploy, a feature flag, a region.
Changes that removed a name were rarer, 121 of the 788, and they are the ones that break a client still holding the old list. The protocol has a way to announce them: a server that declares the listChanged capability for tools tells connected clients when its list changes, so they can fetch it again.
For agent builders
A tool list fetched once is a snapshot. About one server in five served a different list within two weeks, and among servers that started with more than 20 tools, about half did. Most changes add tools, so a stale list usually misses something new rather than pointing at something gone, but not always. If you record anything about a server to compare later, names alone miss most of what moves. More on what can be checked when an agent adds a server on its own.
How we counted
Population: the 1,903 servers with at least one stored tool list, minus the two claimed servers read every 15 minutes and the three that returned paged lists; 1,893 of the remaining 1,898 were read at least twice. Time: read-only queries against our production database between 13:22 and 13:29 UTC on 8 October 2026. The earliest list is from 20 August.
A read is one successful tools/list answer to our probe, sent without credentials. A tool set is the sorted list of names in it. A change is two consecutive reads of the same server with different tool sets. Added and removed names are names present on one side of a change and not the other. A server's observation window runs from its first read to its latest.
Known limits. Anything shorter than 12 hours is invisible (why every twelve hours). We see only the first page of a paged list. Servers that ask for a key first are not included (three in ten do). The description comparison starts on 16 September. And we cannot see why a list changed: a release, a configuration change, a different backend answering, or tools that depend on something we do not send.