Skip to main content

MCP server conformance tester — zero external dependencies

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcp_conform-0.1.0.tar.gz (10.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcp_conform-0.1.0-py3-none-any.whl (10.3 kB view details)

Uploaded Python 3

File details

Details for the file mcp_conform-0.1.0.tar.gz.

File metadata

  • Download URL: mcp_conform-0.1.0.tar.gz
  • Upload date:
  • Size: 10.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for mcp_conform-0.1.0.tar.gz
Algorithm Hash digest
SHA256 e9cf32cf9c64094fc3ce5a06150e14ab659cc0f9d2874f4ca2961158f1c6fb42
MD5 b2817b1aca52bea7a832196e6deed888
BLAKE2b-256 69b4aab8b715aba49d58b17a7867a612ca99988898889dd3e08ba593582709a1

See more details on using hashes here.

File details

Details for the file mcp_conform-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: mcp_conform-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 10.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for mcp_conform-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4da3420d78697fd6a5a9d7629458dfe78657aa31d3bda8b1040c57466173c08c
MD5 149b027683ee0e4f7632d3bb9e747755
BLAKE2b-256 39afd03d50e8368ca4cec72863f55317baba5af281213a16677e743d52b1b5e0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page