mcpsnoop
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcpsnoopInspect my_server.py for protocol violations"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcpsnoop
Zero-dependency MCP server inspector — protocol conformance, tool annotations, and capability checks.
"Validate your MCP server before your users do."
mcpsnoop statically analyzes a Python MCP server module and reports protocol violations, missing tool annotations, and capability gaps — without installing the MCP SDK or standing up a live server.
Quick Start
pip install mcpsnoop-mcp-mcp-mcpfrom mcpsnoop import inspect_server, check_capabilities, lint_annotations
# Inspect a Python MCP server module (stdlib only, no mcp SDK import required)
issues = inspect_server("path.to.your.server_module")
# Returns: list of Issue(severity, code, message, path)
# Check capability declarations against a target MCP version
gap = check_capabilities(server_module, target_version="1.0.0")
# Lint tool annotations for MCP 1.x compliance
report = lint_annotations(server_module)Related MCP server: dejared-mcp
CLI
# Inspect a Python file
mcpsnoop inspect ./src/myserver.py --target-version 1.0.0
# Lint tool annotations
mcpsnoop lint ./src
# Check capability declarations
mcpsnoop check-capabilities ./src/myserver.py --target 1.0.0
# Output formats
mcpsnoop inspect ./src --output sarif # SARIF format for CI
mcpsnoop inspect ./src --output json # Raw JSON
# Run as stdio MCP server (for use inside MCP-powered agents)
mcpsnoop serve --inspect ./path/to/server.py⚡ Performance & Benchmarks
Workload | Tools | mcpsnoop (mean) | mcpaudit (mean) | Speedup |
empty_module | 0 | 19.45ms | N/A | N/A |
few_tools | 2 | 19.08ms | N/A | N/A |
many_tools | 50 | 18.98ms | N/A | N/A |
mixed_issues | 30 | 19.25ms | N/A | N/A |
large_file | 200 | 19.40ms | N/A | N/A |
Benchmarked on: Linux (Python 3.11). mcpaudit requires Node.js and is not available in this environment — mcpsnoop is zero-dependency and runs entirely offline. Run: python3 benchmarks/run_benchmark.py
Key Features
Zero runtime dependencies — stdlib only (
importlib,json,typing)Static analysis — no live server, no network, works offline in CI
Three inspection dimensions: protocol conformance, tool annotations, capability gaps
MCP stdio server mode — exposes a
snooptool for use inside MCP agentsSARIF output — CI-friendly integration with GitHub Actions, Semgrep, etc.
Python 3.11+ with full type hints
API Reference
mcpsnoop.inspect_server(module_path: str) -> list[Issue]
Inspect a Python MCP server module and return protocol conformance issues.
Issue codes:
Code | Severity | Meaning |
| HIGH | Tool has no |
| HIGH | Tool dict is missing the |
| LOW | Tool name is not |
| HIGH | Module/path could not be resolved |
| HIGH | Module loaded but raised an exception |
Example:
from mcpsnoop import inspect_server
issues = inspect_server("my_mcp_server")
for issue in issues:
print(f"[{issue.severity.value}] {issue.code.value}: {issue.message}")mcpsnoop.check_capabilities(module_path: str, target_version: str = "1.0.0") -> CapabilityGap
Check capability declarations against a target MCP version. Returns CapabilityGap(missing, deprecated, extra).
Version support:
Version | Expected capabilities |
|
|
|
|
mcpsnoop.lint_annotations(module_path: str) -> AnnotationReport
Lint tool annotations for MCP 1.x compliance. Checks for idempotentHint, openWorldHint, readOnlyHint. Returns AnnotationReport(missing_idempotent_hint, missing_open_world_hint, missing_read_only_hint).
mcpsnoop.format_report(issues: list[Issue]) -> str
Format a list of issues into a human-readable multi-line report with pass/warn/fail counts.
mcpsnoop.server.MCPStdioServer
Minimal MCP stdio server exposing the snoop tool. Initialize and call run() to start the server loop.
from mcpsnoop.server import MCPStdioServer
server = MCPStdioServer(inspect_path=".", target_version="1.0.0")
server.run() # reads JSON-RPC from stdin, writes to stdoutLimitations
Static analysis only — dynamically constructed tools (factory functions that return tool dicts at runtime) may not be detected;
inspect_serverreads whatimportlibexposes at module load time.Python-only — inspection targets Python MCP server modules, not TypeScript/Node.js servers.
MCP 1.x annotations — tool annotation fields (
idempotentHint,openWorldHint,readOnlyHint) are from MCP 1.x and may change in 2.0. Usetarget_versionto pin to a known baseline.No auto-fix —
mcpsnoopreports issues but does not modify code.
Non-Goals
Runtime evaluation of tool handlers
MCP client or agent functionality
Auto-fixing of detected issues
Integration with specific MCP clients (Claude Desktop, Cursor, etc.)
Generating mock MCP clients for live testing
License
MIT License — © 2026 Abhishek Prasad
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/prasad-a-abhishek/mcpsnoop'
If you have feedback or need assistance with the MCP directory API, please join our Discord server