openapi-tools-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., "@openapi-tools-mcplist all paths in openapi.yaml"
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.
OpenAPI Tools MCP Server
A Model Context Protocol server powered by fastMCP for inspecting local or remote OpenAPI specs. It exposes tools for listing and retrieving spec details with optional glob/tag filters and $ref resolution.
The server also publishes MCP metadata (instructions and website_url) to guide clients toward local-file OpenAPI inspection workflows.
Add as an MCP server
Add this server to your MCP client configuration (PyPI):
{
"mcpServers": {
"openapi-tools": {
"command": "uvx",
"args": [
"--from",
"openapi-tools-mcp",
"openapi-tools-mcp"
]
}
}
}This launches the openapi-tools-mcp entrypoint from PyPI via uvx.
TOML version (PyPI):
[mcp_servers.openapi-tools]
command = "uvx"
args = ["--from", "openapi-tools-mcp", "openapi-tools-mcp"]You can also install directly from GitHub with uvx:
uvx --from git+ssh://git@github.com/kardaj/openapi-tools-mcp.git openapi-tools-mcpRelated MCP server: mcp-swagger-reader
Available tools
spec_info(spec_path): Quickly summarize a spec source (OpenAPI version, title/description, servers). Use this first to confirm you're reading the right spec and its base URLs.spec_list(section, spec_path, filter_by_glob?, filter_by_tag?): Enumerate keys within a spec section (e.g., all paths, schemas, or responses). Use to discover what exists before drilling into details.spec_get(section, name, spec_path, resolve_refs=True): Retrieve a specific item from a section (e.g., one path or schema), with optional$refresolution and source line numbers for precise navigation.
All tools accept either a readable OpenAPI YAML/JSON file path on the local filesystem or a URL source object. Local paths keep the existing behavior, including ~ expansion and absolute path resolution. An example spec lives at tests/openapi.example.yml.
URL source objects are passed through the existing spec_path argument:
{
"url": "https://example.com/openapi.yaml",
"headers": {
"Authorization": "Bearer token",
"Accept": "application/yaml"
}
}The headers object is optional and defaults to no extra request headers. Only http:// and https:// URLs are supported. Remote YAML and JSON documents are both supported.
Downloaded URL content is cached in memory for 15 minutes per server process. Cache entries are keyed by URL plus the complete headers mapping, independent of header insertion order, so different authentication or content-negotiation inputs do not share responses. When an expired cached entry cannot be refreshed because of a network error or HTTP 5XX response, the stale cached content is used for that request. HTTP 4XX responses and unsupported URL schemes surface an error and do not use stale content.
License
MIT
Available Tools
3 toolsspec_getA
Retrieve a specific item from a local path string or URL source object, with optional $ref resolution and source line numbers. For remote specs, pass spec_path as {"url": "https://example.com/openapi.yaml", "headers": {"Header-Name": "value"}}; headers are optional, only http/https URLs are supported, and successful downloads are cached in memory for 15 minutes with stale fallback on network errors or HTTP 5XX refresh failures.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| section | Yes | ||
| spec_path | Yes | ||
| resolve_refs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description discloses caching details (15-minute cache, stale fallback on error), supported URL schemes, and optional headers. It covers important behavioral traits beyond basic functionality.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, fitting in one sentence with additional details separated by a semicolon. It is front-loaded with the core purpose, though could be slightly better structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters, no output schema, and no annotations, the description covers caching and URL handling but omits explanations for name and section parameters, and does not describe the return value. Adequate but with gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains the spec_path parameter well (string vs object with headers) but does not describe the name or section parameters, leaving their meaning unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'retrieve' and the resource 'specific item from a local path string or URL source object', with optional features. It distinguishes from sibling tools spec_info and spec_list by focusing on getting a specific item.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear guidance on how to use the tool, especially for remote specs with URL and headers, including caching behavior and fallback. However, it does not explicitly state when not to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spec_infoA
Quickly summarize an OpenAPI spec from a local path string or URL source object. For remote specs, pass {"url": "https://example.com/openapi.yaml", "headers": {"Header-Name": "value"}}; headers are optional, only http/https URLs are supported, and successful downloads are cached in memory for 15 minutes with stale fallback on network errors or HTTP 5XX refresh failures.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description discloses caching (15 min, stale fallback) and supported URL schemes. Does not explicitly state read-only nature but implies it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence with embedded details; front-loaded with purpose. Slightly long but well-structured and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists so return values not needed. Description covers the single parameter thoroughly. Missing error handling details but sufficient for usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description fully explains the spec_path parameter (string for local, object with url and optional headers). Adds concrete semantics beyond the minimal schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool summarizes an OpenAPI spec from local path or URL. Distinguishes from siblings (spec_get, spec_list) by focusing on summarization.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage context: remote specs via {url, headers}, caching, URL constraints. Does not explicitly differentiate from siblings but offers enough guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spec_listB
Enumerate keys within a spec section from a local path string or URL source object. For remote specs, pass spec_path as {"url": "https://example.com/openapi.yaml", "headers": {"Header-Name": "value"}}; headers are optional, only http/https URLs are supported, and successful downloads are cached in memory for 15 minutes with stale fallback on network errors or HTTP 5XX refresh failures.
| Name | Required | Description | Default |
|---|---|---|---|
| section | Yes | ||
| spec_path | Yes | ||
| filter_by_tag | No | ||
| filter_by_glob | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses caching behavior (15 min in-memory, stale fallback on errors), URL restrictions (http/https only), and optional headers. This adds significant behavioral context beyond basic functionality.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, first sentence states purpose directly, second adds necessary details. Efficient but could be slightly more concise. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Missing return value description (no output schema), no explanation of filter parameters, and no details on local path handling. For a tool with 4 params and no annotations, this leaves significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% coverage, so description must explain all parameters. It only details spec_path format (string or object with url/headers), leaving section, filter_by_tag, and filter_by_glob unexplained. Inadequate for a 4-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Enumerate' and the resource 'keys within a spec section', and distinguishes from sibling tools like spec_get and spec_info which likely retrieve single keys or metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives (spec_get, spec_info). The description only explains remote spec usage but doesn't provide selection criteria or exclusion cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
3 tool updates
v0.2.0- First observed
spec_get - First observed
spec_info - First observed
spec_list
TDQS
Each tool has a clear, distinct purpose: retrieving a specific item, summarizing the entire spec, or enumerating keys. There is no overlap in functionality, and an agent can easily select the appropriate tool based on the operation needed.
All tools follow a consistent 'spec_verb' pattern (spec_get, spec_info, spec_list), which is predictable and makes the tool set easy to navigate.
With only 3 tools, the server is tightly scoped to reading and exploring OpenAPI specs. Each tool is essential for common tasks, and the count is appropriate for this focused purpose.
The tools cover core read operations: retrieving specific items, summarizing, and listing keys. Missing operations like validation or diff are not critical for basic spec exploration, so the set feels reasonably complete for its intended use.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Detect breaking changes, generate changelogs, diff, and validate OpenAPI specs.
MCP server (stdio): lint OpenAPI specs with Spectral via the AgentForge API
Read-only MCP server over the APIs.io catalog — discover APIs, providers, tags & artifacts.
Generate SBOMs, scan vulnerabilities, and analyze dependencies from local projects or Git repos.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to explore and query OpenAPI specifications, allowing natural language interaction with API endpoints, parameters, request bodies, and response schemas from any OpenAPI 3.x spec.20MIT
- FlicenseAqualityDmaintenanceEnables reading and parsing Swagger/OpenAPI specifications to list API endpoints, get detailed endpoint info, search APIs, and generate TypeScript types for request/response.9-
- AlicenseNot gradedqualityDmaintenanceLoads and queries OpenAPI/Swagger documents, providing tools to list APIs, get details, search endpoints, and manage schemas for efficient API exploration.4MIT
- AlicenseAqualityCmaintenanceParses Swagger 2.0 and OpenAPI 3.x specifications, exposing API endpoints, schemas, and authentication through MCP tools with local caching to reduce token usage.11271MIT
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/kardaj/openapi-tools-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server