OpenAPI-MCP
OpenAPI-MCP превращает операции документа OpenAPI в инструменты MCP с белым списком операций и предпросмотром запроса
- 69 ★ репозитория
- Последний коммит
Широкий доступ
Почему такой уровень
- Инструменты вызывают реальные операции вашего API, включая записывающие, если вы их открыли
- Ключи API и данные OAuth настраиваются в окружении сервера и уходят на исходящие вызовы
Установка
- Работает в
Ручная установка
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 инструмент для агента.
Шлюз на Pingora превращает существующие HTTP-сервисы по описанию OpenAPI в MCP-серверы без правки их кода
MCP-сервер Apollo: превращает заданные операции GraphQL в инструменты, через которые агент работает с вашим API
Один бинарник Go подключается к SQL-базе и отдает ее как REST API с ролями и как MCP-сервер для Claude Code, Cursor и VS Code
Пакет для Laravel и Lumen, который добавляет MCP-эндпоинт в маршруты приложения и подключает к нему ваши инструменты
mcp-graphql — MCP-сервер для GraphQL API
mcp-graphql
Два инструмента для GraphQL: агент получает схему вашего API и выполняет запросы к нему через один эндпоинт
Сравнение с похожими
Карточки с тем же главным запросом: чем они отличаются.
| Инструмент | Официальный | Авторизация | Звезды репозитория | Главное отличие |
|---|---|---|---|---|
| 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. Затем раздел о выборе открываемых операций, о предпросмотре запросов, таблица переменных окружения, сведения об авторизации исходящих вызовов и проверках.