mcpgrade

Grades other MCP servers' tool catalogs for how well an AI agent can use them

By Teng Li (individual) TypeScript Local · stdio Developer toolsTesting

45 popularity score ★ 20 ↓ 5.0k/wk

Connect your client

Local (npm)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

Claude CodeTerminal
claude mcp add mcpgrade -- npx -y mcpgrade serve
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "mcpgrade": {
      "command": "npx",
      "args": [
        "-y",
        "mcpgrade",
        "serve"
      ]
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "mcpgrade": {
      "command": "npx",
      "args": [
        "-y",
        "mcpgrade",
        "serve"
      ]
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "mcpgrade": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "mcpgrade",
        "serve"
      ]
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.mcpgrade]
command = "npx"
args = ["-y", "mcpgrade", "serve"]
Gemini CLITerminal
gemini mcp add --scope user mcpgrade npx -- -y mcpgrade serve

What it does

mcpgrade is a linter for MCP servers. It connects to a target server, asks for its tool list, and scores the catalog from A to F on how usable it is for a model rather than on spec compliance: description quality, input schema design, tool naming (confusable or generic names), token cost of the whole catalog, and consistency. Each finding comes with a rule identifier and a suggested fix.

Most people run it as a command-line tool, but `mcpgrade serve` starts it as a stdio MCP server so an assistant can grade a server for you. That mode has three tools: one grades a target (a remote URL, a local launch command, or a saved tools/list JSON file), one explains a rule, and one lists the rules. A grade returns the 20 most severe findings by default, up to 200 with `max_findings` (src/serve.ts).

The serve mode runs only the static rule engine. The CLI's extra modes, `--probe` (live calls to check error messages) and `--eval` (model-driven tool-selection tests that need an `ANTHROPIC_API_KEY` or another OpenAI-compatible endpoint), are not exposed as tools. In version 0.4.0 the server still announces itself as version 0.3.0 in its MCP handshake (src/serve.ts).

What it needs

RuntimeNode.js 18+

Node.js 18 or later with npx. No account or API key for serve mode. To grade a local server, the launcher it needs (npx, node, python, uv, deno, bun or docker) must be on PATH; a remote target must be reachable from your machine.

Limits

In serve mode a local target must start with one of npx, node, python, python3, uv, uvx, deno, bun or docker; other commands are refused, while URLs and .json snapshots are accepted (src/serve.ts). Serve mode takes no headers, so remote servers that need a bearer token can only be graded with the CLI's `--header`. The `--probe` and `--eval` checks are CLI-only. Results are capped at 200 findings per call. The ruleset is opinionated by its author's own account, and the README says the scoring model is still settling.

Who it suits

Suits MCP server authors who want an assistant to check their tool names, descriptions and schemas while they work, or anyone comparing how agent-friendly several servers are. For CI gating, authenticated remote servers or LLM-driven evaluation, the mcpgrade CLI itself (`--fail-on`, `--header`, `--eval`) is the better fit than the MCP mode. It reads and grades; it does not fix the target server's code.

Tools 3

grade_mcp_server
Connects to a target server, lints its tool list and returns an A-F grade, category scores and findings with fixes
explain_rule
Gives the rationale and suggested fix for one rule by its identifier, such as D004
list_grading_rules
Lists the rules with identifier, severity and summary, for all categories or one

Similar servers