Skip to main content

OpenAPI-like specs for MCP servers — introspect, generate, and serve documentation

Project description

mcpspec-dev

OpenAPI-like specs for Python MCP servers. One line of code. Zero config.

mcpspec wraps your MCP server, introspects its tools, resources, and prompts via the MCP protocol, and serves:

  • /docs — interactive HTML documentation (dark/light/high-contrast themes, no CDN)
  • /mcpspec.yaml — a machine-readable spec in a standardized format

Install

pip install mcpspec-dev
# or
uv add mcpspec-dev

Quick Start (FastMCP)

from mcp.server.fastmcp import FastMCP
from mcpspec_dev import McpSpec

mcp = FastMCP("my-server")

@mcp.tool()
def greet(name: str) -> str:
    """Say hello to someone"""
    return f"Hello, {name}!"

spec = McpSpec(mcp, info={"title": "My Server", "version": "1.0.0"})
mcp.run(transport="streamable-http")

Visit http://localhost:8000/docs and http://localhost:8000/mcpspec.yaml.

Quick Start (Server API)

from mcp.server.lowlevel import Server
from mcpspec_dev import McpSpec
import uvicorn

server = Server("my-server")
# Register tools via @server.call_tool(), etc.

spec = McpSpec(server, info={"title": "My Server", "version": "1.0.0"})
app = spec.create_app()
uvicorn.run(app, port=3000)

What It Does

  1. Introspects your MCP server at first request (lazy, cached)
  2. Generates a mcpspec.yaml spec with tools, resources, prompts, and metadata
  3. Serves human-readable docs and the raw spec as HTTP endpoints
  4. Injects routes on FastMCP via custom_route() — or use create_app() for standalone ASGI

Options

spec = McpSpec(
    server,
    info={
        "title": "My Server",           # Required: display name
        "version": "1.0.0",             # Required: server version
        "description": "Does things",   # Optional
        "repository": "https://...",    # Optional: source repo URL
        "license": "MIT",               # Optional: SPDX identifier
        "serverUrl": "https://...",     # Optional: production URL
        "authors": [{"name": "You"}],  # Optional
    },
    transport=[{                        # Optional: document connection methods
        "type": "streamable-http",
        "url": "https://my-server.com/mcp",
        "auth": {"type": "bearer"},
    }],
    base_path="/api",                   # Optional: prefix all routes
    exclude=["internal_*"],             # Optional: hide tools by glob pattern
    include=["public_*"],              # Optional: allowlist mode (overrides exclude)
    groups={                            # Optional: group tools in the docs UI
        "Data": ["get_users", "list_items"],
        "Admin": ["reset_cache"],
    },
    examples={                          # Optional: add usage examples to tools
        "get_users": [{
            "title": "Fetch first 10 users",
            "input": {"limit": 10},
        }],
    },
)

Security

Your spec, your rules. mcpspec is a documentation tool, not a surveillance tool.

  • Only calls tools/list, resources/list, prompts/list — never reads content or executes tools
  • Introspects via in-memory transport — bypasses HTTP/auth entirely
  • Use exclude/include to control what appears in the spec
  • Use overrides to redact or rewrite descriptions

See the security guide for details.

Links

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

mcpspec_dev-0.1.0.tar.gz (10.5 kB view details)

Uploaded Source

Built Distribution

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

mcpspec_dev-0.1.0-py3-none-any.whl (13.2 kB view details)

Uploaded Python 3

File details

Details for the file mcpspec_dev-0.1.0.tar.gz.

File metadata

  • Download URL: mcpspec_dev-0.1.0.tar.gz
  • Upload date:
  • Size: 10.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for mcpspec_dev-0.1.0.tar.gz
Algorithm Hash digest
SHA256 55ac7c05d5f21fc4699df9f6d4a5ab6c4aed0e62599756406fd4d05b1af424fb
MD5 96d5b675ea20dbb3749301b13ab06d22
BLAKE2b-256 45cbcf7616e0ffa25c5f0194d6d8ea4ba5160ec60c81658af240ee281e956978

See more details on using hashes here.

File details

Details for the file mcpspec_dev-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: mcpspec_dev-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 13.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for mcpspec_dev-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ec6adcb692e4652d17b95cbd2b1348cf0fbe6b3b8fb1dbdcb6e04e9b21c94482
MD5 b8e16d5a00e872a48d4007d998e939d6
BLAKE2b-256 0bfa1eab996f57d0df5edb458425ecd0ec5bf7a8063edc67ec76475c3559fb3a

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