The crash-test dummy
for MCP servers.
Your server tells every AI what it can do. This makes sure it does. Thousands of MCP servers ship every month and almost none are tested: one command speaks the real protocol at yours and slams every lever before real users do, plus an in-memory harness for the tests only you can write.
23 checks · tools, resources and prompts · every check cites the spec (2025-11-25) · the official reference servers pass with 0 failures
checkmcp v0.1.0 · spec 2025-11-25 · invoice-server 2.3.0 · 21 tools found handshake 3/3 passed schemas 41/42 passed errors 12/12 passed robustness 17/18 passed ✗ schemas: inputSchema of "search_orders" is not valid JSON Schema: unknown type "decimal" schemas/input-schema · spec server/tools#tool ✗ robustness: "create_invoice" accepted arguments of the wrong type ({"amount":"not-a-number"}) Sent deliberately mistyped values; the server should refuse before its handler runs. robustness/malformed-argument-types · spec server/tools#security-considerations ~ schemas: tool "search_orders" declares no description A client model chooses tools by their descriptions. An undescribed tool is invisible at best, misused at worst. 73/75 passed, 2 failed (1 advisory)
Every check cites the spec section it enforces. The official reference servers pass with zero failures; does yours?
The ten-second inspection
A battery of conformance checks over the whole surface: tools, resources and prompts, in four categories. No test files, no API keys, no model. Exit codes made for CI.
Tests only you can write
An in-memory harness and five matchers for vitest and jest. Your real server, the real protocol, the network replaced by a function call: milliseconds per test.expect(result).toBeToolSuccess()
Contracts that cannot drift
Tool schemas snapshotted to committed files. A careless change fails CI with a sentence a human can judge: "was optional, now required. This breaks every caller that omits it."
The promise: everything that runs on your machine is free and MIT-licensed, forever. If we ever build a paid product, it will be a hosted service, never a better version of this library.