mcp-probe-cli
MCP server conformance tester — zero external dependencies.
Catch spec violations before your MCP server ships. mcp-conform runs a suite of
Model Context Protocol conformance checks and tells you exactly what's wrong and why.
pip install mcp-conform
mcp-conform server --transport stdio --command "python my_server.py"
Why mcp-conform?
The official MCP Inspector accepts invalid JSON Schema that MCP clients (including
Claude Code) reject — silently, with no useful error messages. You discover the
problem when a real user reports it. mcp-conform catches it before push.
What it checks:
| Check | What it validates |
|---|---|
| JSON-RPC envelope | jsonrpc: "2.0", matching id, exactly one of result/error |
| Initialize response | protocolVersion, capabilities object, serverInfo.name/version |
| tools/list structure | tools array, each tool's name/description/inputSchema |
| JSON Schema validity | Detects true/false boolean schemas rejected by Claude Code |
| Error responses | code (integer) + message (string) per spec |
| Method not found | Returns -32601 for unknown methods |
Usage
stdio transport (most common)
mcp-conform server --transport stdio --command "python my_server.py"
mcp-conform server --transport stdio --command "node dist/server.js"
mcp-conform server --transport stdio --command "uv run python -m mypackage.server"
HTTP transport
mcp-conform server --transport http --url http://localhost:8080
CI / GitHub Actions
# Fails with exit code 1 if any check fails
mcp-conform server --transport stdio --command "python my_server.py" --format json | tee report.json
# .github/workflows/mcp-conformance.yml
- name: Run MCP conformance checks
run: |
pip install mcp-conform
mcp-conform server --transport stdio --command "python my_server.py"
Output example
════════════════════════════════════════════════════════════
mcp-conform report
Server : python my_server.py
Transport: stdio
Duration : 312 ms
════════════════════════════════════════════════════════════
✓ jsonrpc_envelope
JSON-RPC 2.0 envelope is valid
✓ protocol_version
protocolVersion '2025-03-26' is valid
✓ capabilities
capabilities is an object
✓ server_info_name
serverInfo.name = 'MyServer'
✗ tool[0](search)_input_schema
inputSchema invalid: JSON Schema 'true' literal is not accepted by Claude Code
────────────────────────────────────────────────────────────
Result: FAIL — 1/5 checks failed
Failing checks:
✗ tool[0](search)_input_schema: inputSchema invalid: ...
════════════════════════════════════════════════════════════
Zero dependencies
mcp-conform uses only Python stdlib (Python 3.10+). No mcp SDK, no httpx,
no pydantic — nothing to install, no version conflicts.
License
MIT
Metadata
Release files for mcp-conform 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| mcp_conform-0.1.0.tar.gz | 10.7 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mcp_conform-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 21.0 kB
Release files / mcp_conform-0.1.0.tar.gz
| Download URL | mcp_conform-0.1.0.tar.gz |
|---|---|
| Size | 10.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e9cf32cf9c64094fc3ce5a06150e14ab659cc0f9d2874f4ca2961158f1c6fb42
|
|
BLAKE2b-256 checksum How to use checksums |
69b4aab8b715aba49d58b17a7867a612ca99988898889dd3e08ba593582709a1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.3
|
Release files / mcp_conform-0.1.0-py3-none-any.whl
| Download URL | mcp_conform-0.1.0-py3-none-any.whl |
|---|---|
| Size | 10.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4da3420d78697fd6a5a9d7629458dfe78657aa31d3bda8b1040c57466173c08c
|
|
BLAKE2b-256 checksum How to use checksums |
39afd03d50e8368ca4cec72863f55317baba5af281213a16677e743d52b1b5e0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.3
|
Security for mcp-conform 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.