Repository navigation
Every remote URL in the registry, probed at the tools/list layer: 15,329 → 8,235 answer, 140,284 tool descriptions read (data, CC BY) #1591
Replies: 3 comments
|
Thanks for publishing this. It stops at the 401 and at Between Oct 5 and 12 I paid independent AI agents to connect cold, read-only, to 36 remote servers that had been published or updated in the official registry in the previous 24 hours (Streamable HTTP, on the domain the namespace proves). No accounts or keys, at most 10 requests per server, every request logged with time and status. On initialize: 20 answered without auth, 15 returned 401 with a challenge, and 1 never answered because a WAF/bot rule stopped the request. The 15 that asked for auth:
The 20 that answered without auth (229 tools, median 5.5 per server):
Bot rules: besides the one above, 3 more blocked some clients' default User-Agent and let others through. The counts come from the reports as written; I haven't re-run the servers since. No servers are named. Disclosure: I run pact0, which paid for these checks ($1 jobs) and keeps the reports private. |
|
I build SkillTotal, the static scanner used here. Drafted with AI assistance; the numbers are from the published data. This thread looks at what the remote endpoints answer. I looked at the package entries instead, at what the published npm, PyPI and git code can do once installed. From the 2026-08-16 snapshot I scanned 15,341 of 17,535 distinct components statically (nothing executed, no LLM):
A capability alone doesn't count as risk, and 15,225 of the 15,341 score low. Coverage was 97.4% for npm, 97.2% for PyPI and 73.7% for git. Code fetched at run time isn't visible to a static scan. Method and data: https://www.skilltotal.ai/mcp-registry-security-report · JSON: https://github.com/pezhik/skilltotal/blob/main/docs/mcp-registry-survey.json |
|
Great dataset. One layer this deliberately stops short of, and where I think the next useful signal is: tools/list shows what each tool declares, but not whether behavior matches. A tool declaring readOnlyHint: true that writes, or a delete with no destructiveHint, looks fine at this layer, and both the ChatGPT and Claude directories now check those hints in review, while clients use them for auto-approval. Disclosure: I build Suncly (suncly.com), which runs that next layer for a single server with the owner’s permission: read-only first, write tools only on a sandbox they choose, and a signed report of every declared-vs-actual mismatch. It doesn’t fit a registry-wide walk, since calling tools needs consent. But if anyone here is preparing a directory submission and wants their server checked, reach me at team@suncly.com. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Disclosure first: this work was done by an AI agent (Claude) operating Fetchgate under my oversight; I'm posting it. Every number below is reproducible from the published data.
This extends the walks in #1548 / #1580 and the sampled endpoint checks in #1485 / #1487 by one layer: instead of resolving hosts or sampling
initialize, every remote URL in the registry got one read-only MCP session —initialize→notifications/initialized→tools/list, nevertools/call— and everything that came back was kept.Scope
All 837 pages of
GET /v0/serverson 2026-08-27 (83,603 version records, 25,289 unique names). Everyremotes[].urlacross all versions: 15,329 unique URLs (14,357 belong to an entry's latest version). Probe ran 2026-08-27 23:03 – 2026-08-28 00:18 UTC, 10 s timeout, one retry on transport failure only, identifying User-Agent with a contact URL.What answered
initialize+tools/listboth succeededtools/list(gated, not dead)That is consistent with the 11.2% "not MCP at the URL given" in #1487's sample once you add the 4xx/5xx it filed under
unknown. Two things the full walk adds: 143 URLs answerinitializewith HTTP 402 (x402-gated MCP servers are now a category), and 225 URLs are{variable}templates — schema-valid, but nothing a client can reach without configuration.Who the 8,235 live servers are
pipeworx.io: 1,266 servers;mcp.ai: 1,091. Two operators are 28.6% of live servers and 39% of all tools, each registering one server per topic from a shared template. Same shape as One domain holds 75 registry entries under 75 separately-registered namespaces, and 62 of them servetext/html#1488, two orders of magnitude larger. The most-registered tool name in the registry isrecall(1,281 copies); outside those two it'ssearch(250).What is in the 140,284 tool descriptions
This is the part I couldn't find anywhere else, and it's a partial answer to #1536 (which scanned registry metadata + READMEs and found nothing):
~/.ssh/id_rsa, conceal it) appears 0 times. Every secret-file reference (32 hosts) is a security scanner describing its own scope; every chat-template marker (45 hosts) is theIMPORTANT:convention or a scanner citing what it detects.initialize.instructions— the field clients inject into the system prompt. Median 577 chars; 114 servers over 5,000; longest 68,669. 9,262 tool descriptions exceed 1,500 chars; one is 52,183.annotations; 78,551 declarereadOnlyHint: true. Self-reported, from the same blob as the quotes above.Actionable for this repo, offered as observations
tools/call.instructionshas no length guidance. A 68,669-char string is ~17k tokens on every turn of every conversation for anyone who enables that server.Data
If your server is in there and a row is wrong, say so and I'll re-probe it. (The full tool-text inventory is a paid dataset on the same page; nothing above depends on it.)
All reactions