mcpgauntlet

A strictly conformant MCP 2026-07-28 server, live, to test your client against. v0.3.2 · API docs · health

Zero false positives, provable in one request

curl {HOST}/audit/self

Runs all 11 probes against this instance over real HTTP and reports the result. Zero violations is criterion 3 — a checker that flags a correct server is worse than no checker, because the first false positive teaches its user to ignore every later report.

A fixed target for your MCP client

curl -X POST {HOST}/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -H 'mcp-protocol-version: 2026-07-28' \
  -H 'mcp-method: tools/list' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

Try breaking the rules and watch it refuse correctly:

curl -X GET {HOST}/mcp            # 405 — the GET stream is gone in 2026-07-28
curl -X POST {HOST}/mcp -d '{}'   # header/body disagreement → -32020

The rules, each with its clause

curl {HOST}/spec/rules

8 MUST and 3 SHOULD rules. Every one cites the specification text it comes from — a probe that cannot cite a clause is an opinion.

There is deliberately no hosted auditor here

docs/NON-GOALS.md ruled out a hosted service before any code was written, on the grounds that the value is a citable result in CI rather than a chart. Reversing that once it became convenient would make the document worthless. An auditor accepting a URL from an anonymous visitor is also a request-forgery gadget aimed at whatever a stranger types, and read-only probes do not make sending them on someone else’s behalf acceptable. Auditing arbitrary targets stays a CLI, where whoever runs it is accountable for where it points.

Audit your own server

pipx install git+https://github.com/Raghu23-dev/mcpgauntlet
mcpgauntlet audit http://localhost:8000/mcp