A deterministic, offline quality grader for MCP (Model Context Protocol) servers.
Project description
mcpgauge
Grade an MCP server's tool definitions in seconds — deterministic, offline, no account.
An agent only uses an MCP server well if its
tool definitions are clear — good names, real descriptions, documented
parameters. mcpgauge launches a server, reads its tools, and scores their
definition quality against a published, deterministic rubric.
No LLM, no network beyond the server you point it at, no sign-up.
Quickstart
pipx install mcpgauge # or: uvx mcpgauge ...
mcpgauge "uvx ollama-handoff"
Grade A (4.18/5) — 8 tools
mean 4.31 · min 3.72 · methodology v0
[B] summarize_local 3.72/5
purpose █████ params █████ behavior █████ schema █████ naming █████ concise ████·
[A] query 4.80/5
...
--json— machine-readable output for tooling.--min B— exit non-zero if the server grades belowB(drop it in CI).--quiet— print only the final grade line.
Why it exists
Most MCP servers are thin wrappers with vague tool descriptions, and agents pick
the wrong tool as a result. The only comparable quality score is closed and
requires registering your server on a third-party site. mcpgauge is the
opposite: open methodology, offline, reproducible, and CI-runnable. You can
read exactly how every point is awarded in docs/METHODOLOGY.md
and argue with it.
How scoring works (short version)
Each tool is scored 0–5 on six dimensions — Purpose Clarity, Parameter Semantics,
Behavioral Transparency, Schema Validity, Naming, Conciseness. The server score is
0.6 · mean + 0.4 · min across tools, so one badly-described tool drags the whole
server down (which is exactly how agents fail). Full rubric:
docs/METHODOLOGY.md.
Status
Early and honest: v0 of the rubric, stdio servers, deterministic checks only. An optional LLM "would an agent pick the right tool?" pass and remote-HTTP support are on the roadmap. Issues and rubric critiques welcome.
Development
uv pip install -e ".[dev]"
pytest
ruff check src tests
License
MIT — see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mcpgauge-0.1.0.tar.gz.
File metadata
- Download URL: mcpgauge-0.1.0.tar.gz
- Upload date:
- Size: 71.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e018e4788645f35169acee1fb19b8eac16bb8613d35f7f5d6b6ef54c0e567fed
|
|
| MD5 |
93dc7a57aa6e543869be781999de45de
|
|
| BLAKE2b-256 |
52741b5f23e62f8c952b6b09067c55b328b34c3e25c7bf9548bd01c67dcfd6b6
|
File details
Details for the file mcpgauge-0.1.0-py3-none-any.whl.
File metadata
- Download URL: mcpgauge-0.1.0-py3-none-any.whl
- Upload date:
- Size: 9.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c47c9434f94cfdf5c8f43c0a0a5827dbe3aa642d9f17719bd931095c87ca0e6e
|
|
| MD5 |
0f62491582be0d5ca65b6c8631440240
|
|
| BLAKE2b-256 |
a2868013ccbb10d2398508674d01c10ca3dd8c9d43b158ac060c96dc8cf4fda6
|