Skip to main content

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 isError field.
  • 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

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

MIT 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)

Source distribution for mcp-verdict 0.1.0
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)

Table of built distributions (wheels) for mcp-verdict 0.1.0
File Interpreter ABI Platform Actions
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 log

Release 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 log

Security 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.

Select from 2 files

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 log

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.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page