CLI tool to analyze your MCP server and get a comprehensive report on its quality
Project description
MCPScore
A command-line tool for auditing MCP (Model Context Protocol) servers. MCPScore connects to your server, runs a comprehensive set of validation rules against it, and produces a severity-based report showing what's compliant and what needs attention.
Features
- Multiple transports: STDIO (local servers), Streamable HTTP, and SSE (remote servers)
- Auto-detection: Picks the right transport automatically — tries Streamable HTTP first, falls back to SSE for URLs
- Multi-language: Audits both Python (
.py) and Node.js (.js) MCP servers via STDIO - Severity-based reporting: Rules categorized as CRITICAL, HIGH, MEDIUM, or LOW
- Comprehensive validation: Protocol compliance, server metadata, capabilities, security, and transport
What it audits
-
Protocol Version Compliance:
- ✅ Allowed versions check (CRITICAL)
- ✅ Latest version recommendation (MEDIUM)
- ✅ Deprecated version detection (HIGH)
-
Server Information:
- ✅ Server name presence (CRITICAL)
- ✅ Server title presence (MEDIUM)
- ✅ Server version presence (HIGH)
-
Capabilities: Tools, resources, prompts, logging, and subscription support
-
Security:
- ✅ HTTPS/TLS usage verification
- ✅ Valid certificate checks
-
Transport:
- ✅ SSE transport support detection
Requirements
- Python 3.13+
- Node.js on
PATHif auditing a Node.js MCP server - A Python interpreter on
PATHif auditing a Python MCP server
Installation
pip install mcpscore
Or with uv:
uv tool install mcpscore
Quick start
Run mcpscore against any MCP server — local script or remote URL. The transport is detected automatically.
# Local Python MCP server (STDIO)
mcpscore path/to/your/server.py
# Local Node.js MCP server (STDIO)
mcpscore path/to/your/server.js
# Remote MCP server (auto-detects Streamable HTTP or SSE)
mcpscore https://example.com/mcp
Example output
Welcome to MCPScore!
Connected to the MCP server: /path/to/server.py
Transport: stdio
Starting the audit...
✅ Protocol version '2025-06-18' is one of the allowed versions
✅ Protocol version '2025-06-18' is not deprecated
✅ Protocol version '2025-06-18' is the latest version
✅ Server name is present: 'weather'
✅ Server version is present: '1.17.0'
❌ Server title is not present in server info
✅ Tools capability is present
❌ listChanged is not supported by Tools
✅ Prompts capability is present
❌ listChanged is not supported by Prompts
✅ Resources capability is present
❌ listChanged is not supported by Resources
❌ subscribe is not supported by Resources
❌ Logging is not present in capabilities
✅ MCP Server provides at least one tool
✅ All Tools have a Name property specified
✅ All Tools have a Title property specified
✅ All Tools have a Description property specified
✅ All Tools have a valid Input Schema
✅ All Tools have a valid Output Schema
Audit finished. Final score: 55/71
Understanding the score
Each passing rule contributes points equal to its severity weight: CRITICAL = 5, HIGH = 3, MEDIUM = 2, LOW = 1. Higher scores indicate better compliance with MCP standards.
Troubleshooting
Connection fails
- Check the path or URL is correct and reachable
- For local servers, make sure Python or Node.js is on
PATH - Verify the server actually implements the MCP protocol
Protocol version errors
- Confirm your server uses a currently supported MCP protocol version
- If your server uses a newer version that MCPScore doesn't yet recognize, please open an issue
Feedback
Bug reports, feature requests, and general feedback are welcome at https://github.com/mcp-box/mcpscore/issues.
License
MIT — see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mcpscore-0.3.0.tar.gz.
File metadata
- Download URL: mcpscore-0.3.0.tar.gz
- Upload date:
- Size: 35.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
235d094b593f1d713331dd037202cc9dd0b26f45901072ad35b2e472c91b8993
|
|
| MD5 |
87d0c5a5778c3e27396dac65bdd90895
|
|
| BLAKE2b-256 |
8bba02faffcfbbe7e45d7fab734bd6aa944a38c044733d85ebb5dffb031ea46c
|
Provenance
The following attestation bundles were made for mcpscore-0.3.0.tar.gz:
Publisher:
publish.yml on mcp-box/mcpscore
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcpscore-0.3.0.tar.gz -
Subject digest:
235d094b593f1d713331dd037202cc9dd0b26f45901072ad35b2e472c91b8993 - Sigstore transparency entry: 1751558325
- Sigstore integration time:
-
Permalink:
mcp-box/mcpscore@d8c597c0c2979e7953a5cd7d9ac02162282b0f99 -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/mcp-box
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d8c597c0c2979e7953a5cd7d9ac02162282b0f99 -
Trigger Event:
push
-
Statement type:
File details
Details for the file mcpscore-0.3.0-py3-none-any.whl.
File metadata
- Download URL: mcpscore-0.3.0-py3-none-any.whl
- Upload date:
- Size: 26.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f38564f988260831c111e620a2c899d921a5d58a914e2a81266c7001ec32f620
|
|
| MD5 |
7724ad2cd86a22524b30cd2154cac52e
|
|
| BLAKE2b-256 |
8c8f353d0c4e5440e190032f5ad16b0b46d99a5c8df47e0a78922a60d9103d60
|
Provenance
The following attestation bundles were made for mcpscore-0.3.0-py3-none-any.whl:
Publisher:
publish.yml on mcp-box/mcpscore
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcpscore-0.3.0-py3-none-any.whl -
Subject digest:
f38564f988260831c111e620a2c899d921a5d58a914e2a81266c7001ec32f620 - Sigstore transparency entry: 1751558381
- Sigstore integration time:
-
Permalink:
mcp-box/mcpscore@d8c597c0c2979e7953a5cd7d9ac02162282b0f99 -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/mcp-box
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d8c597c0c2979e7953a5cd7d9ac02162282b0f99 -
Trigger Event:
push
-
Statement type: