Who actually calls an MCP server

A census taken from the server side. pseo.rovy.tech/api/mcp is a live remote MCP server (DNS / TLS / HTTP / SEO checks, plus stateful page watches) listed in the official MCP registry. These are the real request logs, not an estimate.

2885MCP requests
149distinct clients
15days observed
5real agent runtimes
The headline finding: of 149 distinct clients, 98 are crawlers, directories, indexers or liveness probes and only 5 look like an agent actually using the tools. The MCP ecosystem currently generates far more indexing traffic than usage traffic. If you are deciding whether to publish an MCP server, this is the number to plan against.

All clients, by request count

ClientKindRequestsFirst seenLast seen
mcpbeatliveness monitor5582026-11-012026-11-03
python-requestsgeneric HTTP client4842026-11-012026-11-02
nodegeneric HTTP client4752026-11-012026-11-03
undici (Node)generic HTTP client1802026-11-012026-11-02
-unknown1012026-11-012026-11-03
AgentRankranking index922026-11-012026-11-02
curlmanual test492026-10-302026-11-03
Moongladedirectory372026-11-012026-11-02
Protogridindexer362026-11-012026-11-02
EveryMCPdirectory362026-11-012026-11-02
Historindexer332026-11-012026-11-02
coda-agent-runtimeagent runtime302026-11-012026-11-02
mcptry.com indexer (+https:crawler / probe282026-11-012026-11-02
python-httpxgeneric HTTP client262026-11-012026-11-03
Talariaagent runtime242026-11-012026-11-02
Enerlio FACTANKERunclear242026-11-012026-11-02
MCPWatchsecurity research202026-11-012026-11-02
InvokeRankBotcrawler / probe182026-11-012026-11-03
Mozillaunknown172026-11-012026-11-02
agent-collectorcapability survey162026-11-012026-11-03
agent-collectorcapability survey162026-11-012026-11-02
reliability-bureau-spikeunknown162026-11-012026-11-02
python-httpxgeneric HTTP client162026-11-012026-11-02
Bungeneric HTTP client152026-11-012026-11-03
Ziweiunclear152026-11-012026-11-01
Mozillaunknown142026-10-202026-11-02
ProofBenchcrawler / probe122026-11-012026-11-03
SquatchMCP-Scannercrawler / probe122026-11-012026-11-02
ToolVetProbecrawler / probe122026-11-012026-11-02
Go-http-clientgeneric HTTP client122026-11-012026-11-02
SealKeeperBotcrawler / probe122026-11-022026-11-02
mcphub-probecrawler / probe112026-11-012026-11-03
anlyon.dev-indexercrawler / probe102026-11-012026-11-02
agent-tools.cloud-crawlercrawler / probe102026-11-012026-11-03
agora-probecrawler / probe102026-11-012026-11-02
AlphaProxy-MCP-Probecrawler / probe92026-11-012026-11-03
addrbook-probecrawler / probe92026-11-012026-11-02
VentruHealthcrawler / probe92026-11-012026-11-02
atpp-scancrawler / probe92026-11-012026-11-02
AIWorkforceunknown82026-11-012026-11-02

Why this matters

Publishing to the official registry produces a long tail of automated verification: directories re-check that your endpoint answers initialize and tools/list, ranking sites crawl your tool descriptions, security researchers sample your responses. That traffic looks like adoption in a dashboard and is worth exactly zero revenue. Distinguishing the two is the whole game.

Method

Every POST /api/mcp and GET /api/mcp in the nginx access log, including rotated and gzipped files, grouped by User-Agent with version numbers normalised. A client is counted as a "real agent runtime" only if its User-Agent names an agent runtime or a model SDK (e.g. Talaria, OpenAI/Python). Everything self-identifying as a bot, crawler, index, probe, census, survey, monitor, scanner or health check is counted as crawler traffic. Machine-readable copy: mcp-census.json.

Stateful watch usage

The same server offers /watch/, a stateful page-change detector. It has 6 watches and 775 stored snapshots. All of them were created by the operator while testing. Zero external callers in 15 days. A capability that an agent provably cannot reproduce locally still gets no use when nobody knows it exists. Distribution, not capability, is the binding constraint.