An MCP server for finding other MCP servers โ and, more usefully, for checking whether the one you are about to recommend is actually reachable.
Every uptime figure it returns comes from a real MCP handshake against the server's remote endpoint, not from self-reported metadata in a README.
Backed by mymcptools.com. No API key required.
Install
Remote endpoint (recommended โ nothing to install)
The server is hosted. If your client speaks Streamable HTTP, point it straight at:
https://mymcptools.com/api/mcp
Stateless, read-only, no auth, no API key. This is also the entry published to the
official MCP Registry as
io.github.shibley/mymcptools.
Local stdio adapter
The code in this repo is a thin stdio adapter over that same endpoint, for clients
that don't speak Streamable HTTP yet. It is not on npm yet, so build it from
source (Node.js 18+):
git clone https://github.com/shibley/mymcptools-mcp-server.git
cd mymcptools-mcp-server
npm install && npm run build
Then point your client at the built entrypoint:
{
"mcpServers": {
"mymcptools": {
"command": "node",
"args": ["/absolute/path/to/mymcptools-mcp-server/dist/index.js"]
}
}
}
Add that to claude_desktop_config.json (Claude Desktop), .cursor/mcp.json (Cursor), or your client's equivalent.
Set MYMCPTOOLS_MCP_URL to override the upstream endpoint the adapter talks to.
| Tool | What it answers |
|---|
search_mcp_servers | Which servers match this keyword, category, client integration or install type? |
get_mcp_server | Full entry for one server: install command, repo, supported clients, current probe verdict. |
get_server_status | Is this server reachable right now? Verdict, exposed tool count, handshake latency, negotiated protocol version. |
get_server_history | Trailing probe history and a daily uptime sparkline for one server. |
list_server_incidents | Reconstructed outages โ contiguous runs of failed probes, with start, end and duration. |
list_schema_drift | Which servers added, removed or changed tools between probes. Useful for spotting breaking changes. |
list_categories | Every category and client integration, with counts. Returns the valid slugs for the filters above. |
get_catalog_stats | Population-level health: verdict breakdown, transport mix, latency percentiles. |
What the probe data does and does not cover
Worth stating plainly, because the numbers are easy to misread:
- The catalog carries ~2,700 entries, but only ~44 are probeable โ that is, they publish a remote endpoint something can actually connect to.
- The rest are local-only servers (stdio, run via
npx or docker on your machine). There is no remote endpoint to handshake against, so they are reported as UNPROBEABLE rather than assigned a made-up status. For those, get_mcp_server falls back to a static repo-freshness signal.
UNPROBEABLE therefore means "not remotely checkable", not "broken".
So treat the live-verification tools as high-confidence for remote/hosted servers, and treat the catalog entry itself as the useful part for local ones.
Verdicts
| Verdict | Meaning |
|---|
GOOD | Handshake succeeded and the server listed its tools. |
WARN | Reachable, but something was off โ slow handshake or a degraded response. |
AUTH_REQUIRED | Endpoint is live but needs credentials before it will list tools. |
DOWN | Endpoint is published but the handshake failed. |
UNPROBEABLE | No remote endpoint to probe โ typically a local stdio server. |
Development
npm install
npm run build
Smoke-test the built server over stdio:
printf '%s\n%s\n%s\n' \
'{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"t","version":"1"}}}' \
'{"jsonrpc":"2.0","method":"notifications/initialized"}' \
'{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}' \
| node dist/index.js
License
MIT