Skip to main content

Developer toolkit for MCP servers — inspect, test, benchmark, validate, and generate documentation

Project description

mcptools

The missing developer toolkit for the Model Context Protocol ecosystem.

PyPI version License: MIT Python 3.10+ MCP Compatible

Inspect, test, benchmark, validate, and document any MCP server from the command line.

pip install mcptools
$ mcptools inspect python -m my_server
+-------------------------------- MCP Server ---------------------------------+
| Tools:     12                                                               |
| Resources: 0                                                                |
| Prompts:   0                                                                |
+-----------------------------------------------------------------------------+
                                     Tools
+-----+----------------------+------------------------------------+----------+
| #   | Name                 | Description                        | Params   |
|-----+----------------------+------------------------------------+----------|
| 1   | get_weather          | Get current weather for a city     | 1req/1   |
| 2   | search_docs          | Search documentation               | 1req/2   |
| ... | ...                  | ...                                | ...      |
+-----+----------------------+------------------------------------+----------+

Why mcptools?

Building MCP servers is the easy part. Testing, debugging, and documenting them isn't.

Without mcptools With mcptools
Write custom test scripts for each server mcptools test python -m my_server
Manual protocol inspection via logs mcptools inspect python -m my_server
Guess where performance bottlenecks are mcptools bench python -m my_server
Hope your server follows best practices mcptools doctor python -m my_server
Hand-write API documentation mcptools docs -o API.md python -m my_server
Copy-paste boilerplate for new servers mcptools init my-new-server
  • inspect — Instantly see what tools a server exposes, with parameter schemas
  • test — Interactively call tools with guided parameter input and pretty output
  • bench — Measure response times for every tool (min/avg/max/p95)
  • doctor — 10-point health check for best practices and common bugs
  • docs — Auto-generate markdown API documentation
  • init — Scaffold a new MCP server project in seconds

Works with any MCP server — Python, TypeScript, Go, Rust. If it speaks stdio, mcptools can talk to it.

Installation

pip install mcptools

Or from source:

git clone https://github.com/19miha99/mcptools.git
cd mcptools
pip install -e .

Quick Start

# See what tools a server has
mcptools inspect python -m my_server

# Test tools interactively
mcptools test python -m my_server

# Health check
mcptools doctor python -m my_server

# Generate API docs
mcptools docs -o API.md python -m my_server

# Benchmark
mcptools bench python -m my_server

# Start a new MCP server project
mcptools init my-awesome-server

Commands

mcptools inspect

Connect to an MCP server and display all available tools, resources, and prompts.

# Compact view
mcptools inspect python -m my_server

# Detailed view with full parameter schemas
mcptools inspect -d python -m my_server

# Works with any MCP server
mcptools inspect npx -y @anthropic/mcp-server-filesystem /tmp

mcptools test

Interactively test tools with guided parameter input.

# Interactive mode — pick tools from a list
mcptools test python -m my_server

# Test a specific tool
mcptools test -t get_weather python -m my_server

# Pass arguments as JSON
mcptools test -t get_weather -j '{"city": "Tokyo"}' python -m my_server

Features:

  • Auto-detects parameter types from JSON schema
  • Shows required vs optional parameters with defaults
  • Pretty-prints JSON responses
  • Measures response time

mcptools bench

Benchmark tool response times across multiple iterations.

# Benchmark all tools (5 iterations each)
mcptools bench python -m my_server

# Custom iterations
mcptools bench -n 20 python -m my_server

# Benchmark a specific tool
mcptools bench -t get_weather -n 50 python -m my_server

Output:

Benchmarking 8 tools (5 iterations each)
+-----------------------+--------+--------+--------+--------+--------+
| Tool                  |    Min |    Avg |    Max |    P95 | Status |
|-----------------------+--------+--------+--------+--------+--------|
| get_weather           |   45ms |   52ms |   68ms |   65ms |     OK |
| search_docs           |  120ms |  145ms |  190ms |  185ms |     OK |
| get_config            |    8ms |   12ms |   18ms |   17ms |     OK |
| update_record         |      - |      - |      - |      - |   SKIP |
+-----------------------+--------+--------+--------+--------+--------+

Tools with required parameters are skipped (can't auto-test without proper args).

mcptools doctor

Run a 10-point health check that catches common issues.

mcptools doctor python -m my_server

Checks:

  1. Server starts successfully
  2. Tools endpoint responds
  3. All tools have descriptions
  4. All parameters have descriptions
  5. No duplicate tool names
  6. Names follow snake_case convention
  7. Schemas are valid JSON Schema
  8. A tool call succeeds within 5s
  9. Resources endpoint works
  10. Prompts endpoint works

Output:

  PASS Server starts successfully
  PASS Tools endpoint works (12 tools found)
  PASS All tools have descriptions
  WARN 3 parameters without descriptions
  PASS No duplicate tool names
  ...

+---- Doctor Report ----+
| 9/10 checks (1 warn)  |
+-----------------------+

mcptools docs

Auto-generate markdown documentation from tool schemas.

# Print to stdout
mcptools docs python -m my_server

# Write to file
mcptools docs -o API.md python -m my_server

Generates a clean markdown document with:

  • Tool names and descriptions
  • Parameter tables (name, type, required, default, description)
  • Ready to paste into your README

mcptools init

Scaffold a new MCP server project with best practices.

mcptools init my-cool-server
mcptools init my-server -d "Does amazing things"

Generates:

my-cool-server/
├── pyproject.toml       # Ready for pip install -e .
├── README.md            # With Claude Desktop/Code setup instructions
├── .gitignore
└── src/my_cool_server/
    ├── __init__.py
    └── server.py        # Sample server with 2 example tools

Works With Any MCP Server

mcptools connects via stdio transport — the standard way MCP servers communicate. It works with servers written in any language:

# Python servers
mcptools inspect python -m my_server

# TypeScript/Node servers
mcptools inspect npx -y @anthropic/mcp-server-filesystem /tmp

# Any executable
mcptools inspect ./my-rust-mcp-server

Requirements

  • Python 3.10+
  • mcp — MCP SDK (client)
  • click — CLI framework
  • rich — Beautiful terminal output

Contributing

Contributions welcome! Areas of interest:

  • SSE/HTTP transport support
  • More doctor checks
  • Test fixtures and automated testing
  • Shell completions
  • Config file support (named server aliases)

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcpdevkit-1.0.0.tar.gz (12.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcpdevkit-1.0.0-py3-none-any.whl (13.6 kB view details)

Uploaded Python 3

File details

Details for the file mcpdevkit-1.0.0.tar.gz.

File metadata

  • Download URL: mcpdevkit-1.0.0.tar.gz
  • Upload date:
  • Size: 12.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for mcpdevkit-1.0.0.tar.gz
Algorithm Hash digest
SHA256 a55c03e5a93668171e1f6f6274ffc716bc0f2759240085512eab6a92718e3a1a
MD5 9e604412437a1db3c4a17423ba109e96
BLAKE2b-256 0f03927e89e015c6172a3116e4745d6bae3d480bb5eb10f70d618a236e94958b

See more details on using hashes here.

File details

Details for the file mcpdevkit-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: mcpdevkit-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 13.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for mcpdevkit-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3add8ffebe04378d8d669974182d8d4893d7c72a2a8cd020f2b46bded2219739
MD5 204620906f8d8f5dcff8e0cd38d375f2
BLAKE2b-256 511551fec57e6a48cd3c003be73fc6f86eb5508078bb135d5b2a154502869530

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page