MCP servers are black boxes documented.

One line of code gives your server human-readable docs and a machine-readable spec.

Open-source. TypeScript & Python.

$ npm i @mcpspec-dev/typescript
$ pip install mcpspec-dev
npm downloads PyPI downloads GitHub stars License
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { mcpspec } from "@mcpspec-dev/typescript";

const server = new McpServer({ name: "my-server", version: "1.0.0" });

// register your tools, resources, prompts...

const app = mcpspec(server, {
  info: { title: "My Server", version: "1.0.0" }
});

app.listen(3000);
// → /docs          human-readable docs
// → /mcpspec.yaml  machine-readable spec
// → /mcp           MCP endpoint
from mcp.server.fastmcp import FastMCP
from mcpspec import McpSpec

mcp = FastMCP("my-server")

# register your tools, resources, prompts...

spec = McpSpec(mcp, info={
    "title": "My Server",
    "version": "1.0.0"
})

mcp.run(transport="streamable-http")
# → /docs          human-readable docs
# → /mcpspec.yaml  machine-readable spec
# → /mcp           MCP endpoint
/docs
Human-readable documentation served directly from your MCP server.
/mcpspec.yaml
Machine-readable spec for registries, catalogs, and tooling.
Health check
If /docs responds, your server is alive. Zero-config health endpoint.
Try it — paste any mcpspec.yaml
mcpspec.yaml
Open source. Introspection only.

mcpspec never executes tools, reads resources, or accesses prompt content. Only list endpoints. Only metadata. Server authors control what's exposed.

MIT licensed. Built in the open.