Skip to main content
Glama
shibley

MyMCPTools MCP Server

by shibley
README.md
# MyMCPTools MCP Server

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](https://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](https://registry.modelcontextprotocol.io) 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+):

```bash
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:

```json
{
  "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.

## Tools

| 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

```bash
npm install
npm run build
```

Smoke-test the built server over stdio:

```bash
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

TDQS

D1.7/5.0

Scored across 8 tools

Disambiguation4/5

Tool names target distinct aspects (search, get, status, history, incidents, schema drift, categories, stats) with only possible overlap between get_mcp_server and search_mcp_servers. Without descriptions, ambiguity is minimal.

Naming Consistency2/5

Inconsistent verb usage: mixes 'search_', 'get_', and 'list_' prefixes. Also singular vs plural (get_mcp_server vs search_mcp_servers) and no clear pattern.

Tool Count4/5

8 tools is a reasonable number for a server focused on querying and monitoring MCP servers, not overly large or small.

Completeness3/5

Tools cover searching, fetching details, status, history, incidents, schema drift, categories, and catalog stats, but missing common operations like create, update, or delete. Domain completeness is unclear without descriptions.

Maintenance

ActivityStale
ResponsivenessNo issues