State of MCP, October 2026: a TestedMCP data report

Download the data (CSV) scored.json

*Published 2026-10-22. Every number below comes from TestedMCP's automated test runs on that day; none is estimated or copied from a vendor.*

Headline: deprecation and archive status, verified

Of the original 31 listings, 7 are deprecated or archived, and 6 of them are official reference servers. This confirms the earlier internal estimate (7, including 6 reference servers). All 7 carry an npm deprecated flag *and* live in a GitHub repository marked archived:

Across the expanded set of 136 listings, 22 (16%) are deprecated or archived. 18 are flagged deprecated on npm or have a yanked latest PyPI release, 18 sit in archived GitHub repos, and 14 are both. 13 of the 22 are former modelcontextprotocol reference servers. 7 of the 22 still install and complete a handshake, so an MCP client gives no warning that the package is unmaintained.

PackageRegistryDeprecated / yankedRepo archivedHandshake
@browserbasehq/mcp-server-browserbasenpmyesyes (browserbase/mcp-server-browserbase)working
@circleci/mcp-server-circlecinpmyesnoworking
@elastic/mcp-server-elasticsearchnpmyesnofailed
@modelcontextprotocol/server-aws-kb-retrievalnpmyesyes (modelcontextprotocol/servers-archived)working
@modelcontextprotocol/server-brave-searchnpmyesyes (modelcontextprotocol/servers-archived)auth-gated
@modelcontextprotocol/server-everartnpmyesyes (modelcontextprotocol/servers-archived)auth-gated
@modelcontextprotocol/server-gdrivenpmyesyes (modelcontextprotocol/servers-archived)auth-gated
@modelcontextprotocol/server-githubnpmyesyes (modelcontextprotocol/servers-archived)working
@modelcontextprotocol/server-gitlabnpmyesyes (modelcontextprotocol/servers-archived)auth-gated
@modelcontextprotocol/server-google-mapsnpmyesyes (modelcontextprotocol/servers-archived)auth-gated
@modelcontextprotocol/server-postgresnpmyesyes (modelcontextprotocol/servers-archived)working
@modelcontextprotocol/server-puppeteernpmyesyes (modelcontextprotocol/servers-archived)working
@modelcontextprotocol/server-redisnpmyesyes (modelcontextprotocol/servers-archived)working
@modelcontextprotocol/server-slacknpmyesyes (modelcontextprotocol/servers-archived)auth-gated
@neondatabase/mcp-server-neonnpmyesnofailed
@railway/mcp-servernpmyesyes (railwayapp/railway-mcp-server)failed
@sanity/mcp-servernpmyesyes (sanity-io/sanity-mcp-server)failed
awslabs.core-mcp-serverpypiyesnoinstall-failed
elevenlabs-mcppypinoyes (elevenlabs/elevenlabs-mcp)auth-gated
mcp-server-sentrypypinoyes (modelcontextprotocol/servers-archived)failed
mcp-server-sqlitepypinoyes (modelcontextprotocol/servers-archived)failed
mcp-server-tree-sitterpypinoyes (wrale/mcp-server-tree-sitter)failed

Vendor packages deprecated in favour of hosted remote MCP endpoints or CLIs: @browserbasehq/mcp-server-browserbase, @circleci/mcp-server-circleci, @neondatabase/mcp-server-neon, @railway/mcp-server, @sanity/mcp-server.

Full deprecation messages, quoted verbatim from the npm deprecated field or the PyPI yank reason:

The sample

Results

Outcome (no credentials)CountShare
Working: handshake + tools/list succeeded8160%
Auth-gated: only output was a missing-credential message (remote: HTTP 401/403 or OAuth challenge)2115%
Failed: crashed, timed out, or needs a service or argument3224%
Install failed21%

The median score is 75.0/100 (mean 74.7). 59 listings (43%) had a push or release within 30 days of the test.

npm vs Python

RegistryListingsInstalledWorkingAuth-gatedFailedMedian score
npm898855 (62%)181675
pypi454425 (56%)21880
remote221 (50%)1063.0

Python servers fail more often on a fresh install. 7 Python packages crashed on startup with errors that point to the API change in version 2.x of the mcp Python SDK (for example 'Server' object has no attribute 'list_tools', or "pin 'mcp<2'"). None of them pins an upper bound on the SDK, so anyone who installs them today gets a broken server: postgres-mcp, mcp-server-fetch-python, mcp-server-tree-sitter, mcp-server-sqlite, playwright-mcp-server, mcp-server-office, mcp-server-kubernetes.

By category

CategoryListingsWorkingAuth-gatedDeprecated/archivedMedian score
database1792570
dev1575575
browser13120275
cloud1362370
memory1160075
fetch1071075.0
search981190
files850086.5
productivity732270
utility530085
design523175
docs4400100.0
comms402150.0
maps211170.0
web-scraping211084.0
local-llm210065.0
payments200062.5
llm1100100
reasoning110093
testing110093
dev-tools110090
finance110083
ai110075
media101150

Auth-gated share

21 of 136 listings (15%) are auth-gated: without a key, all they do is print a message naming the credential they need (1 remote server(s) instead answered HTTP 401/403 with an OAuth challenge). The old scoring gave these servers 20 of 30 handshake points. The new rubric gives them 5 and reports them separately from working servers. Another 32 failed for other reasons. Some of those may also be credential errors that didn't show up in our captured output (we keep only the last 400 characters of stderr), but we count them as failed rather than assume.

Functional task tests (no API keys)

We ran these only on servers that completed a handshake, and only in categories where a key-free task makes sense. When our test box blocked a task, we recorded it as *not run*, not as a failure. Causes included: sandbox DNS resolves public hosts to 198.18.0.1, so SSRF guards refuse the request; the harness skips bundled browser downloads; no backing service was running; a browser extension was required.

CategoryServersTasks runPassedNot run (env)
browser128514
files5663
memory6863
fetch7443
postgres2220
redis3660

Overall, 29/34 executed tasks passed (85%) across 35 servers. The tasks: write, read and list a temp file; store and retrieve a memory entity; fetch https://example.com/; navigate to that page and read the title "Example Domain"; run a SQL SELECT on a seeded table; SET and GET a Redis key. Servers that passed every task they ran: @playwright/mcp, chrome-devtools-mcp, @wonderwhy-er/desktop-commander, markitdown-mcp, redis-mcp-server, @modelcontextprotocol/server-memory, @modelcontextprotocol/server-filesystem, basic-memory, fetcher-mcp, @henkey/postgres-mcp-server, @modelcontextprotocol/server-redis, @itseasy21/mcp-knowledge-graph, @tokenizin/mcp-npx-fetch, @kazuph/mcp-fetch, mcp-redis, @modelcontextprotocol/server-postgres.

Failures: @agent-infra/mcp-server-browser (read page title (expect "Example Domain")); mcp-knowledge-graph (store entity, retrieve entity); @browserbasehq/mcp-server-browserbase (navigate to https://example.com/, read page title (expect "Example Domain")). The harness picks tools and arguments from each schema using heuristics. A failure shows that the generic call did not work; it does not prove the server is broken.

Replacements for the deprecated Postgres and Redis reference servers: against live local instances, the maintained @henkey/postgres-mcp-server passed the SQL task, and both redis-mcp-server (Redis's official package on PyPI) and mcp-redis (npm) passed SET/GET. The deprecated reference servers still work against a live service too. postgres-mcp (Crystal DBA, PyPI) installed but crashed on startup because of the mcp SDK 2.x incompatibility.

Small-model readiness

76 servers have measured tool schemas (5 more working servers, added after the schema pass, are not yet measured and count as unknown). Their median schema cost is 1068 tokens and the maximum is 16536 (tiktoken cl100k estimate over name, description and inputSchema). 20 servers need more than 4k tokens, and 8 need more than a full 8k context window before the user types anything. Static rating: 34 high, 30 medium, 12 low, 60 unknown (no tools/list, or not yet measured). The thresholds are on the methodology page.

Live small-model runs: CPU only (8 vCPU, no GPU), Ollama 0.40.8, Q4_K_M GGUF, temperature 0, output capped at 512 tokens, driven by a minimal MCP client (harness/smallmodel.mjs).

ServerModelRunsTask completedCorrect toolAvg roundsAvg seconds
@modelcontextprotocol/server-filesystemqwen2.5-3b-instruct-q4km3100%100%213
@modelcontextprotocol/server-memoryqwen2.5-3b-instruct-q4km3100%100%320
chrome-devtools-mcpqwen2.5-3b-instruct-q4km333%100%4.767
markitdown-mcpqwen2.5-3b-instruct-q4km30%0%13
@modelcontextprotocol/server-memoryqwen2.5-1.5b-instruct-q4km367%100%26
@modelcontextprotocol/server-filesystemqwen2.5-1.5b-instruct-q4km3100%100%24
chrome-devtools-mcpqwen2.5-1.5b-instruct-q4km30%100%211
markitdown-mcpqwen2.5-1.5b-instruct-q4km3100%100%22

These are 3 runs per pair, not the 10 the spec calls for, so treat them as directional. Raw logs are in data/smallmodel.json. Failure modes we saw: with markitdown-mcp, the 3B model returned an empty reply and made no tool call in all 3 runs, while the 1.5B model succeeded; with chrome-devtools-mcp, both models called navigate_page without the required pageId and got validation errors, which matches the community advice to start small models on servers with few tools. An earlier exploratory run with Qwen2.5 7B Q4_K_M (CPU) completed the memory and filesystem tasks once each, in 30-32 s; it is not included in the table.

Methodology

Limitations

Download the data (CSV) scored.json