OpenAPI-MCP

OpenAPI-MCP превращает операции документа OpenAPI в инструменты MCP с белым списком операций и предпросмотром запроса

  • 69 ★ репозитория
  • Последний коммит
MCP-сервер

Широкий доступ

Почему такой уровень

  • Инструменты вызывают реальные операции вашего API, включая записывающие, если вы их открыли
  • Ключи API и данные OAuth настраиваются в окружении сервера и уходят на исходящие вызовы
Все причины и проверки

gujord/openapi-mcp

Установка

Ручная установка

pip install 'openapi-mcp-proxy==2.0.0rc1'

Нужен Python 3.10 или новее. Запуск: `openapi-mcp` с переменными `OPENAPI_URL`, `SERVER_NAME`, `MCP_ALLOWED_OPERATIONS`.

Доступ и проверки

Как мы проверяем

Широкий доступИнструмент может менять данные, выполнять команды или работать с секретами.

  • Инструменты вызывают реальные операции вашего API, включая записывающие, если вы их открыли
  • Ключи API и данные OAuth настраиваются в окружении сервера и уходят на исходящие вызовы

Это чужой код. Посмотрите файлы в репозитории перед установкой.

Что делает

OpenAPI-MCP читает документ OpenAPI, локальный JSON или YAML либо адрес HTTP(S), и открывает его операции как инструменты MCP. Кроме инструментов он отдает ресурсы схем и подсказку по использованию. Транспорт по умолчанию stdio, есть Streamable HTTP на `/mcp` и старый SSE по явной настройке. Каждая операция превращается в инструмент с именем `<сервер>_<operationId>`, входные данные проверяются по схеме до запроса, тело JSON передается аргументом `body`. По умолчанию наружу не выставлено ни одной операции. Нужные задаются в `MCP_ALLOWED_OPERATIONS` как массив пар вроде `GET /pets`, совпадение буквальное, неверный список останавливает запуск. Режим `MCP_OPERATION_POLICY=all` открывает все. Каждый инструмент принимает `dry_run: true` и возвращает подготовленный запрос без выполнения. Авторизация исходящих вызовов идет через `MCP_AUTH_HEADERS` или клиентские данные OAuth.

Для кого. Разработчикам, которые дают агенту доступ к своему или чужому REST API по описанию OpenAPI и хотят ограничить набор операций.

Подходит, если

  • Есть спецификация OpenAPI, и по ней нужен MCP-сервер без написания кода
  • Агенту открываются только безопасные методы, например `GET /pets` и `GET /pets/{petId}`
  • Перед вызовом POST нужно увидеть подготовленный запрос через `dry_run`
  • Исходящие вызовы идут с ключом в заголовке или с OAuth на клиентских данных
  • Спецификация лежит локальным файлом YAML и не публикуется в сети

Не подходит, если

  • Нужна авторизация по пользователям: уровня прав на каждого пользователя в сервере пока нет
  • API описан не в OpenAPI: сервер читает только такой документ
  • Нужна стабильная версия: сейчас это кандидат `2.0.0rc1`

Пример запроса к агенту

Подними OpenAPI-MCP для petstore.json так, чтобы агенту были доступны только GET /pets и GET /pets/{petId}

MCP

Транспорт
stdio, http, sse
Авторизация
ключ необязателен

Переменные окружения

OPENAPI_URL обязательная
Локальный файл JSON или YAML либо адрес HTTP(S) спецификации OpenAPI
MCP_ALLOWED_OPERATIONS
JSON-массив пар вроде GET /pets, которые открываются как инструменты
MCP_AUTH_HEADERS секрет
Заголовки авторизации для исходящих вызовов в JSON или key=value

Ограничения

Версия `2.0.0rc1` остается кандидатом в релиз, а версия 1.0.4 этих исправлений не содержит, перед обновлением нужно прочитать руководство по переходу. Нужен Python 3.10 или новее. Политика операций действует на весь экземпляр сервера и ни на кого по отдельности, а список только на GET не гарантирует безвредность маршрутов. Учетные данные идут на исходящие вызовы, поэтому нужны ограниченные ключи API. Адрес по умолчанию для HTTP сменился с `/sse` на `/mcp`, клиентов нужно обновить.

Как отключить. Удалите запись сервера из конфигурации клиента и выполните `pip uninstall openapi-mcp-proxy` в окружении, где он стоял.

Частые вопросы

Как запустить OpenAPI-MCP?

Выполните `pip install 'openapi-mcp-proxy==2.0.0rc1'`, задайте `OPENAPI_URL`, `SERVER_NAME`, `MCP_ALLOWED_OPERATIONS` и запустите `openapi-mcp`. Клиент MCP стартует процесс сам.

Какие операции доступны по умолчанию?

Никакие. Нужные перечисляются в `MCP_ALLOWED_OPERATIONS`, а `MCP_OPERATION_POLICY=all` открывает все.

Что делает dry_run?

С `dry_run: true` инструмент возвращает подготовленный адрес, параметры и тело и не выполняет запрос. Настроенные заголовки авторизации в предпросмотр не попадают.

Как передать ключ API?

Через `MCP_AUTH_HEADERS`, например `{"X-API-Key": "..."}`, или через `OAUTH_CLIENT_ID`, `OAUTH_CLIENT_SECRET` и `OAUTH_TOKEN_URL`. Эти данные идут на исходящие вызовы.

Какой транспорт использовать?

По умолчанию stdio. Для сети включите `MCP_HTTP_ENABLED=true` и порт `MCP_HTTP_PORT`, адрес будет `/mcp`.

Обсуждение

Вопросов и отзывов пока нет.

MCP-серверы

MCP-сервер загружает спецификацию Swagger или OpenAPI и делает из каждой конечной точки API инструмент для агента.

MCP-серверШирокий доступ115Звезды репозитория

Шлюз на Pingora превращает существующие HTTP-сервисы по описанию OpenAPI в MCP-серверы без правки их кода

MCP-серверШирокий доступ185Звезды репозитория
Официальный

MCP-сервер Apollo: превращает заданные операции GraphQL в инструменты, через которые агент работает с вашим API

MCP-серверШирокий доступ319Звезды репозитория

Один бинарник Go подключается к SQL-базе и отдает ее как REST API с ролями и как MCP-сервер для Claude Code, Cursor и VS Code

MCP-серверШирокий доступ173Звезды репозитория

Пакет для Laravel и Lumen, который добавляет MCP-эндпоинт в маршруты приложения и подключает к нему ваши инструменты

MCP-серверРасширенный доступ331Звезды репозитория

Два инструмента для GraphQL: агент получает схему вашего API и выполняет запросы к нему через один эндпоинт

MCP-серверРасширенный доступ407Звезды репозитория

Сравнение с похожими

Карточки с тем же главным запросом: чем они отличаются.

ИнструментОфициальныйАвторизацияЗвезды репозиторияГлавное отличие
OpenAPI-MCP (эта карточка)нетключ необязателен69
OpenAPI MCP Serverдане нужна301другой преобразователь OpenAPI в MCP, здесь по умолчанию закрыты все операции, открываются списком, и есть предпросмотр dry_run
openapi-mcp-generatorнет644генерирует отдельный проект сервера, а OpenAPI-MCP работает как прокси над самим документом

Коротко о README

В README описана установка кандидата 2.0.0rc1, запуск и настройку клиента для stdio и Streamable HTTP. Затем раздел о выборе открываемых операций, о предпросмотре запросов, таблица переменных окружения, сведения об авторизации исходящих вызовов и проверках.

Бейдж для README

Сообщить о проблеме