mcp-assert
The testing standard for MCP servers. Lint, test, and fuzz. No SDK required. No LLM required.
This is the PyPI distribution of mcp-assert, a single Go binary that connects to your MCP server over stdio, SSE, or HTTP, runs 24 static analysis rules, calls tools with real arguments, and asserts results against YAML expectations.
Install
pip install mcp-assert
Usage
# Zero-config audit (finds crashes)
mcp-assert audit --server "python my_server.py"
# Static analysis (finds schema issues)
mcp-assert lint --server "python my_server.py"
# Auto-fix schema issues
mcp-assert lint --server "python my_server.py" --fix
# Adversarial fuzzing
mcp-assert fuzz --server "python my_server.py"
# Run YAML assertions
mcp-assert run --suite evals/
# CI with threshold
mcp-assert ci --suite evals/ --threshold 95
Or use as a Python module:
python -m mcp_assert lint --server "python my_server.py"
pytest Integration
pip install pytest-mcp-assert
pytest --mcp-suite evals/
Each YAML file becomes a pytest Item. Configure via pyproject.toml:
[tool.pytest.ini_options]
mcp_suite = "evals/"
mcp_fixture = "fixtures/"
Lint (24 Rules)
mcp-assert lint --server "python my_server.py"
E E103 create_user Required parameter "email" has no description
W W109 search User-facing parameter "query" has no examples
W W108 delete_user Tool name implies mutation but description doesn't acknowledge
# Auto-generate fixes
mcp-assert lint --server "python my_server.py" --fix
# Strict mode for CI
mcp-assert lint --server "python my_server.py" --strict
Links
- Documentation
- GitHub
- Error Reference (24 error codes)
- Scorecard (102 servers scanned, 4,794 issues found)
- pytest plugin
License
MIT
Metadata
Release files for mcp-assert 0.12.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| mcp_assert-0.12.3-py3-none-win_arm64.whl | Python 3 | none | Windows ARM64 | Details |
| mcp_assert-0.12.3-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| mcp_assert-0.12.3-py3-none-manylinux2014_x86_64.whl | Python 3 | none | Linux glibc 2.17+ x86-64 | Details |
| mcp_assert-0.12.3-py3-none-manylinux2014_aarch64.whl | Python 3 | none | Linux glibc 2.17+ ARM64 | Details |
| mcp_assert-0.12.3-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details |
| mcp_assert-0.12.3-py3-none-macosx_10_12_x86_64.whl | Python 3 | none | macOS 10.12+ x86-64 | Details |
Total release size: 35.8 MB
Release files / mcp_assert-0.12.3-py3-none-win_arm64.whl
| Download URL | mcp_assert-0.12.3-py3-none-win_arm64.whl |
|---|---|
| Size | 6.0 MB |
| Tags | Python 3 Windows ARM64 |
|
SHA-256 checksum How to use checksums |
4aafa6d7240c59aa359d5896eba2a9732bd72b7e7cce9358eecbccc47b281c39
|
|
BLAKE2b-256 checksum How to use checksums |
4c4039151f8868843ac1b8d78a216873141b5b35c5db99e86ae69c89962fe8ad
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|
Release files / mcp_assert-0.12.3-py3-none-win_amd64.whl
| Download URL | mcp_assert-0.12.3-py3-none-win_amd64.whl |
|---|---|
| Size | 3.4 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
aff4cb96224b118c97651027aa5145b3277ac1143f1cfe481492cbe4ffddc236
|
|
BLAKE2b-256 checksum How to use checksums |
b4b978d689b8bc724564b741729a1cdd0323eda577ec284f6279971effc20ee5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|
Release files / mcp_assert-0.12.3-py3-none-manylinux2014_x86_64.whl
| Download URL | mcp_assert-0.12.3-py3-none-manylinux2014_x86_64.whl |
|---|---|
| Size | 6.7 MB |
| Tags | Linux glibc 2.17+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
16edd89e772d893e0c23282c307fcc6279e0c8ed2b108811fec96a8e6b78e407
|
|
BLAKE2b-256 checksum How to use checksums |
fb282115526eac01d212775b2fc2cda51c6eab589fccc995d4a6ee7330f28ec2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|
Release files / mcp_assert-0.12.3-py3-none-manylinux2014_aarch64.whl
| Download URL | mcp_assert-0.12.3-py3-none-manylinux2014_aarch64.whl |
|---|---|
| Size | 6.4 MB |
| Tags | Linux glibc 2.17+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
9e6d5188c0564e642be182d1a65c992f85683562699261d271e952a724e30286
|
|
BLAKE2b-256 checksum How to use checksums |
92be0b50d6d019af2664fba94326b1af0e3b53f44a2bf2ea4d1e751d45cdf016
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|
Release files / mcp_assert-0.12.3-py3-none-macosx_11_0_arm64.whl
| Download URL | mcp_assert-0.12.3-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 6.5 MB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
9f6bf85abd920ab4727631144c792218b23f3d3ba65f363de64a546eff6b0eb7
|
|
BLAKE2b-256 checksum How to use checksums |
8fa96cc344c506a9e9e71427c4af9b3c211076809472dcadc0c4874149e0ed12
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|
Release files / mcp_assert-0.12.3-py3-none-macosx_10_12_x86_64.whl
| Download URL | mcp_assert-0.12.3-py3-none-macosx_10_12_x86_64.whl |
|---|---|
| Size | 6.7 MB |
| Tags | Python 3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
0850c08db1fd40e6c26739c8edf32bcbec04e59712be615fd71f1c02554fdc35
|
|
BLAKE2b-256 checksum How to use checksums |
430d86caac443efe96c1563d07192f52d2d464d3963606d0bacd69dd0e8c33b4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|
Security for mcp-assert 0.12.3
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.