openapi-md-mcp
openapi-md-mcp
MCP-сервер, передающий OpenAPI-спецификацию в Markdown через прогрессивное раскрытие (progressive disclosure).
Зачем
Swagger UI (
/docs) — это JS-оболочка, AI не может получить из неё содержимоеВесь
/openapi.json— это легко десятки K токенов, затаскивать его в контекст целиком слишком дорогоЭтот инструмент оставляет в постоянном контексте AI только таблицу конечных точек «ключ + сводка» (~1k токенов), по ключу можно углубиться и получить markdown-детали одной конечной точки / одной схемы — на практике экономит ~90% контекста
Related MCP server: OpenAPI MCP Server
Инструменты (прогрессивное раскрытие, выход всегда в markdown)
tool | входные данные | выходные данные |
|
| Таблица конечных точек |
|
| Детали endpoint: аутентификация, таблица параметров, тело запроса ( |
|
| Таблица атрибутов схемы + вложенные ключи для спуска по |
|
| Пакетный выбор: таблица ключей конечных точек с колонкой аутентификации + подходящие имена схем (горизонтальная агрегация, напр. «все аутентифицированные endpoint'ы») |
|
| Пакетный спуск: за один заход забираются детали по всем смешанным ключам, упомянутые схемы автоматически собираются в дедуплицированное приложение |
Ключ спуска = METHOD /path или имя схемы — берётся напрямую из вывода предыдущего уровня.
Пакетный режим (select + get_batch)
Спуск по одному ключу не отвечает на горизонтальные вопросы (для «всех аутентифицированных endpoint'ов» пришлось бы десятки раз дёргать get_endpoint по одному).
Этот провал закрывает пакетный слой:
select(patterns=["GET /v1/auth/*", "* /v1/scoring/*"], security="X-Service-Token", tag="scoring", schema_glob="Credit*")элементы
patternsимеют вид"METHOD /path/glob": метод может быть*(без учёта регистра); glob пути чувствителен к региструsecurity— это имя схемы; междуpatternsдействует OR, а сsecurity/tag— ANDноль совпадений возвращает успешный текст (доступные scheme / tag + подсказки по ослаблению фильтра), а не ошибку
get_batch(["POST /v1/scoring/credit", "CreditBatchRequest"])ключи дедуплятся и сохраняют порядок; лимит — 40; общий лимит символов рендера — 100k, при превышении рекомендуется
include_refs=Falseили разбить на пакетыinclude_refs=Trueавтоматически объединяет упомянутые при рендере$refв «общий appendix по схемам» (каждая схема рендерится только один раз)
Настройка (env)
Переменная | По умолчанию | Описание |
|
| Спека на рантайме (в приоритете). Можно прямо указать адрес страницы документации |
| пусто | Запасной путь к файлу спецификации (используется, когда рантайм недоступен) |
|
| Таймаут получения спецификации (в секундах) |
Спецификация поддерживает JSON и YAML; после загрузки кэшируется в процессе на 60 секунд
Запросы идут напрямую (
trust_env=False): цель — спецификация на localhost / внутренних адресах, системный прокси не используется (системный прокси macOS может перехватывать localhost и отдавать 502)Только чтение: никакой возможности вызывать API (заголовки аутентификации не попадают в слой MCP)
Подключение к любому репозиторию
Регистрация уровня пользователя Claude Code (одна регистрация — доступно во всех репозиториях):
claude mcp add openapi-md -s user -- \
uv run --directory /path/to/openapi-md-mcp openapi-md-mcpА для репозиториев, которым нужны разные источники данных, достаточно переопределить env в .mcp.json на уровне проекта.
Соответствие протоколу (MCP 2026-07-28, в просторечии 2.0)
Имена инструментов / описания / входные схемы соответствуют §Tools спецификации (набор символов и длина имён, детерминированный порядок
tools/list)Все пять инструментов объявляют
annotations.readOnlyHint: true(только чтение)Семантика ошибок по §Tools Error Handling: сбой загрузки спецификации, неизвестный ключ (включая подсказки похожих ключей), недопустимые паттерны фильтрации и превышение пакетного лимита выбрасываются как tool execution error —
ToolError, что на практике выглядит какCallToolResult(isError=true), и клиент закармливает подсказки модели для самокорректирующего ответа; ноль совпадений — это успешный текст, а не собственный; также не делается никакогоcall/API-вызова (инструмент только читает)Согласование версий: для stdio используется рукопожатие initialize (максимальная версия 2025-11-25); эпоха безстатных конвертов 2026-07-28 обрабатывается SDK на HTTP-транспорте (
server/discover), в сценарии stdio не задействуется
Разработка
uv sync # 安装依赖
uv run pytest --cov=openapi_md_mcp # 测试(fixture 为真实 OpenAPI 3.1 快照)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 Servers
- AlicenseAqualityDmaintenanceAn MCP server that provides tools for exploring large OpenAPI schemas without loading entire schemas into LLM context. Perfect for discovering and analyzing endpoints, data models, and API structure efficiently.914MIT
- 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.12MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that converts OpenAPI documentation to Markdown with tolerant parsing, enabling LLMs to batch query and explore APIs.151MIT
- FlicenseNot gradedqualityDmaintenanceTurns any OpenAPI/Swagger spec into queryable tools for LLMs, enabling endpoint search, detail retrieval, and schema exploration.1
Related MCP Connectors
Same functionality, consuming only 1/20 of the context window tokens.
Provide your AI coding tools with token-efficient access to up-to-date technical documentation for…
Point Gecko at an OpenAPI spec; get first-call-correct, auth-hidden agent tools.
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/YuShenLiu06/openapi-md-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server