MCP Verdict
Test how your MCP servers behave when things go wrong.
MCP Verdict is an open-source Python CLI for testing failure handling and selected security behavior in Model Context Protocol (MCP) servers. It runs repeatable YAML-defined checks against servers you own or are authorized to assess.
MCP Verdict is a test runner, not a general MCP client or a comprehensive security scanner. It does not provide full OAuth/JWT auditing, compliance certification, sandboxing, or remote target discovery.
Why MCP Verdict?
MCP tools can fail in ways that are difficult to exercise repeatedly: a server may return success while reporting a failure, omit an expected tool error, or handle authentication and authorization boundaries incorrectly. These behaviors can regress as a server changes.
MCP Verdict makes those cases explicit in version-controlled configuration. Instead of maintaining one-off failure-testing scripts, developers can run the same local STDIO or Streamable HTTP scenarios in development and CI.
Features
- STDIO and Streamable HTTP MCP connections.
- MCP tool outcome assertions based on the protocol
isErrorfield. - HTTP authentication and authorization status assertions, including 401 and 403 expectations.
- YAML-defined single or multiple checks with per-check timeouts.
- PASS, FAIL, and ERROR results with CI-friendly exit codes.
- Human-readable terminal output and schema-versioned JSON reports.
- Atomic report files and bounded diagnostic redaction.
Quick start
Requirements: Python 3.11 or 3.12. From the repository root:
python -m pip install -e .
mcp-verdict check --config examples/basic_stdio/verdict.yaml
The Basic STDIO example uses a local FastMCP server and needs no credentials or network access. Its output is:
ping-success: PASS: Expected and observed success
add-success: PASS: Expected and observed success
Summary: 2 passed, 0 failed, 0 errored
For development and tests, install the test tools too:
python -m pip install -e '.[test]'
Configuration
Existing configurations default to STDIO. A minimal check is:
server:
command: [python, examples/basic_stdio/server.py]
tool:
name: ping
arguments: {}
expected: success
server.command starts the local MCP server, tool.name selects a tool,
arguments supplies its JSON-compatible arguments, and expected is either
success or tool_error.
See Configuration for multiple checks, HTTP servers, timeouts, authentication environment variables, and validation rules.
Results and exit codes
| Result | Meaning |
|---|---|
| PASS | The observed behavior matched the explicit expectation. |
| FAIL | The server responded, but the outcome or expected HTTP status differed. |
| ERROR | Configuration, setup, timeout, or transport execution failed. |
The process exits with 0 when all checks pass, 1 when at least one check
fails without execution errors, and 2 when any check errors. See
Reporting for terminal output, JSON schema version 1, and
atomic report files.
Documentation
- Configuration guide
- STDIO and Streamable HTTP transports
- Security testing
- Reporting and JSON schema
- Architecture guide
- Runnable examples
- Contributing
- Security policy
- Changelog
Project status
The current development version is 0.1.0; initial release preparation is in
progress. The implemented checks are intended for repeatable local and
authorized testing, not comprehensive security auditing or compliance
certification.
Contributing
Bug reports, focused test scenarios, and documentation improvements are welcome. Start with CONTRIBUTING.md for setup, quality checks, and fixture conventions.
Security
Test only servers you own or are authorized to assess. STDIO YAML configurations can execute local commands with the current user's permissions; never run an untrusted YAML file. Keep credentials in environment variables and treat diagnostic output carefully. Read the security policy and the security-testing guide before testing protected servers.
License
Disclaimer
MCP Verdict is an independent open-source project and is not affiliated with or endorsed by the Model Context Protocol maintainers.
Metadata
Release files for mcp-verdict 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 | Actions |
|---|---|---|---|---|
| mcp_verdict-0.1.0.tar.gz | 24.4 kB | With provenance | Details for mcp_verdict-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| mcp_verdict-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for mcp_verdict-0.1.0-py3-none-any.whl |
Total release size: 41.0 kB
Release files / mcp_verdict-0.1.0.tar.gz
| Download URL | mcp_verdict-0.1.0.tar.gz |
|---|---|
| Size | 24.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
77456422344a2c83325a4b69c7974820ccb260bf187e031bffba4810ff71b803
|
|
BLAKE2b-256 checksum How to use checksums |
f5ecfe916fc3e0fb19848c85f42e0f5d179528176c074e9410067ae9bcfede95
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 11, 2026.
Transparency logRelease files / mcp_verdict-0.1.0-py3-none-any.whl
| Download URL | mcp_verdict-0.1.0-py3-none-any.whl |
|---|---|
| Size | 16.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
050da53faeb1a5966a0b4dfac9ec8c38f13236226b119fb1b91977c14afda41e
|
|
BLAKE2b-256 checksum How to use checksums |
0105655cca8fac10be7bc6178d7218844da46de15524ab6732d6e3525c5b4566
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 11, 2026.
Transparency logSecurity for mcp-verdict 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.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for mcp_verdict-0.1.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 11, 2026.
Transparency logA 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.