API Doctor MCP
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., "@API Doctor MCPCompare two OpenAPI specs and show breaking changes"
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.
API Doctor MCP
A deterministic, stateless MCP server for validating OpenAPI documents, JSON Schemas, and JSON payloads.
It uses Python libraries only. It does not call an LLM, persist user data, or require login.
Current tools
validate_openapilist_openapi_endpointscompare_openapi_specsview_openapi_breaking_changesvalidate_json_schemavalidate_payload
Architecture
MCP transport
-> ServerFactory
-> ToolProvider discovery
-> Handlers
-> Services
-> Validators / ComparatorsImportant properties:
Stateless: no database, sessions, cache, or persistent files.
Open/Closed: add a new
IToolProviderimplementation; discovery registers it automatically.Dependency Inversion: handlers depend on service interfaces, not concrete libraries.
Strategy: parsers, validators, and comparison rules are replaceable strategies.
Factory: application and server creation are centralized.
Adapter: third-party validation libraries are hidden behind internal interfaces.
Class-based: application behavior is represented by classes and objects.
CamelCase Python filenames: used as explicitly requested.
Run locally
uv sync --extra dev
uv run uvicorn app.Main:app --host 0.0.0.0 --port 8085MCP endpoint:
http://localhost:8085/mcpHealth endpoint:
http://localhost:8085/healthThe server uses the MCP Python SDK v2 beta and exposes one Streamable HTTP application. Modern 2026-07-28 requests are sessionless. stateless_http=True also prevents legacy clients from creating retained HTTP sessions.
MCP HTTP usage
The callable MCP endpoint is:
http://localhost:8085/mcpThis server uses the modern stateless MCP HTTP format for protocol version 2026-07-28.
Each MCP request is a single HTTP POST with:
header
Content-Type: application/jsonheader
Accept: application/json, text/event-streamheader
mcp-protocol-version: 2026-07-28header
mcp-method: <json-rpc-method>header
mcp-name: <tool-name>fortools/callrequestsJSON-RPC body containing
params._meta
See MCP_API.md for complete request and response examples for:
tools/listvalidate_json_schemavalidate_payloadvalidate_openapilist_openapi_endpointscompare_openapi_specsview_openapi_breaking_changes
MCP Apps
This repo now includes one MCP App:
view_openapi_breaking_changes
It follows the MCP Apps pattern described in the official docs:
the tool advertises
_meta.ui.resourceUrithe server exposes a
ui://...resourcethe host fetches and renders the bundled HTML app in a sandboxed iframe
The bundled app source lives in:
mcp_apps/breaking-change-viewer/Build the app bundle:
make app-buildThe built artifact served by the Python MCP server is:
mcp_apps/breaking-change-viewer/dist/mcp-app.htmlTest with basic-host
The easiest local host-level test path is the MCP Apps basic-host.
Start this server:
make runIn another folder, clone the MCP Apps repository and start the host:
git clone https://github.com/modelcontextprotocol/ext-apps.git
cd ext-apps/examples/basic-host
npm install
SERVERS='["http://localhost:8085/mcp"]' npm startOpen:
http://localhost:8080Select and call
view_openapi_breaking_changes
When the host calls the tool, it should fetch the ui://... resource and render the Breaking Change Diff Viewer inline.
Test
uv run pytest
uv run ruff check .
uv run mypy appDocker
docker compose up --buildAdd a tool without modifying existing code
Add a service interface and implementation, when needed.
Add a handler class.
Add a concrete class implementing
IToolProviderunderapp/ToolProviders.Give the provider a parameterless constructor.
The provider-discovery mechanism imports and registers it automatically.
Providers receive the application ServiceContainer during registration.
Production note
The pinned MCP SDK is a prerelease. Upgrade the exact pin deliberately after testing API changes.
This server cannot be installed
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
- 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/nitish-iiitd/api-doctor-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server