mcpo
open-webui/mcpomcpo — простой и безопасный прокси, который превращает любой MCP-сервер в стандартный OpenAPI-совместимый HTTP-сервер. Автоматически генерирует интерактивную документацию, поддерживает аутентификацию, SSE и Streamable HTTP. Идеален для интеграции AI-инструментов с LLM-агентами и Open WebUI.
Подключение
pip install mcpoREADME
⚡️ mcpo
Мгновенно превращает любой MCP-инструмент в OpenAPI-совместимый HTTP-сервер.
mcpo — предельно простой прокси, который принимает команду MCP-сервера и делает его доступным через стандартный RESTful OpenAPI. Ваши инструменты «просто работают» с LLM-агентами и приложениями, ожидающими OpenAPI-серверы.
Никаких кастомных протоколов. Никакого связующего кода. Никаких сложностей.
🤔 Почему mcpo, а не нативный MCP?
MCP-серверы обычно работают через сырой stdio, что означает:
- 🔓 Изначально небезопасно
- ❌ Несовместимо с большинством инструментов
- 🧩 Отсутствие стандартных возможностей: документация, аутентификация, обработка ошибок и т.д.
mcpo решает все эти проблемы без лишних усилий:
- ✅ Мгновенно работает с OpenAPI-инструментами, SDK и UI
- 🛡 Добавляет безопасность, стабильность и масштабируемость на основе проверенных веб-стандартов
- 🧠 Автоматически генерирует интерактивную документацию для каждого инструмента без настройки
- 🔌 Использует чистый HTTP — никаких сокетов, связующего кода и неожиданностей
То, что кажется «лишним шагом», на деле означает меньше шагов и лучший результат.
mcpo делает ваши AI-инструменты удобными, безопасными и совместимыми — прямо сейчас, без лишних усилий.
🚀 Быстрый старт
Рекомендуем использовать uv для молниеносного запуска без настройки.
uvx mcpo --port 8000 --api-key "top-secret" -- your_mcp_server_command
Или через Python:
pip install mcpo
mcpo --port 8000 --api-key "top-secret" -- your_mcp_server_commandДля использования SSE-совместимого MCP-сервера укажите тип сервера и эндпоинт:
mcpo --port 8000 --api-key "top-secret" --server-type "sse" -- http://127.0.0.1:8001/sseМожно также передать заголовки для SSE-соединения:
mcpo --port 8000 --api-key "top-secret" --server-type "sse" --header '{"Authorization": "Bearer token", "X-Custom-Header": "value"}' -- http://127.0.0.1:8001/sseДля использования Streamable HTTP-совместимого MCP-сервера укажите тип сервера и эндпоинт:
mcpo --port 8000 --api-key "top-secret" --server-type "streamable-http" -- http://127.0.0.1:8002/mcpТакже можно запустить mcpo через Docker без установки:
docker run -p 8000:8000 ghcr.io/open-webui/mcpo:main --api-key "top-secret" -- your_mcp_server_commandПример:
uvx mcpo --port 8000 --api-key "top-secret" -- uvx mcp-server-time --local-timezone=America/New_YorkВсё. Ваш MCP-инструмент теперь доступен по адресу http://localhost:8000 со сгенерированной OpenAPI-схемой — протестируйте его в реальном времени на http://localhost:8000/docs.
🤝 Для интеграции с Open WebUI после запуска сервера ознакомьтесь с нашей документацией.
🌐 Запуск по подпути (--root-path)
Если нужно запустить mcpo за обратным прокси или по подпути (например, /api/mcpo), используйте аргумент --root-path:
mcpo --port 8000 --root-path "/api/mcpo" --api-key "top-secret" -- your_mcp_server_commandВсе маршруты будут доступны по указанному корневому пути, например http://localhost:8000/api/mcpo/memory.
🔄 Использование конфигурационного файла
Можно обслуживать несколько MCP-инструментов через единый конфигурационный файл в формате Claude Desktop.
Включите режим горячей перезагрузки с --hot-reload, чтобы автоматически отслеживать изменения в конфигурационном файле и перезагружать серверы без простоя:
Запуск:
mcpo --config /path/to/config.json
Или с включённой горячей перезагрузкой:
mcpo --config /path/to/config.json --hot-reload
Пример config.json:
{
"mcpServers": {
"memory": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-memory"]
},
"time": {
"command": "uvx",
"args": ["mcp-server-time", "--local-timezone=America/New_York"],
"disabledTools": ["convert_time"]
},
"mcp_sse": {
"type": "sse",
"url": "http://127.0.0.1:8001/sse",
"headers": {
"Authorization": "Bearer token",
"X-Custom-Header": "value"
}
},
"mcp_streamable_http": {
"type": "streamable-http",
"url": "http://127.0.0.1:8002/mcp"
}
}
}Каждый инструмент будет доступен по собственному уникальному маршруту, например:
Каждый со своей OpenAPI-схемой и прокси-обработчиком. Полный UI схемы доступен по адресу: http://localhost:8000/<tool>/docs (например, /memory/docs, /time/docs).
🔐 Аутентификация OAuth 2.1
mcpo поддерживает аутентификацию OAuth 2.1 для MCP-серверов, которые её требуют. Реализация по умолчанию использует динамическую регистрацию клиента, поэтому большинству серверов достаточно минимальной конфигурации:
{
"mcpServers": {
"oauth-protected-server": {
"type": "streamable-http",
"url": "http://localhost:8000/mcp",
"oauth": {
"server_url": "http://localhost:8000"
}
}
}
}Параметры конфигурации OAuth
Основные параметры:
server_url(обязательный): базовый URL OAuth-сервераstorage_type:"file"(постоянное хранение) или"memory"(только для сессии, по умолчанию:"file")callback_port: локальный порт для OAuth-коллбэка (по умолчанию:3030)use_loopback: автоматически открывать браузер для авторизации (по умолчанию:true)
Расширенные параметры (редко нужны): Для серверов, не поддерживающих динамическую регистрацию клиента, можно указать статические метаданные клиента:
{
"mcpServers": {
"legacy-oauth-server": {
"type": "streamable-http",
"url": "http://api.example.com/mcp",
"oauth": {
"server_url": "http://api.example.com",
"client_metadata": {
"client_name": "My MCPO Client",
"redirect_uris": ["http://localhost:3030/callback"]
}
}
}
}
}Примечание: Не указывайте
scope,authorization_endpointилиtoken_endpointв конфигурации. Эти параметры автоматически обнаруживаются из OAuth-метаданных сервера в процессе динамической регистрации.
При первом подключении mcpo:
- Выполнит динамическую регистрацию клиента (если поддерживается)
- Откроет браузер для авторизации
- Автоматически перехватит OAuth-коллбэк
🛠 Установка
Через pip
pip install mcpo
Через uv
uv tool install mcpo
📖 Документация
Полная документация доступна на https://docs.openwebui.com.
🤝 Вклад в проект
Вклад приветствуется! Ознакомьтесь с CONTRIBUTING.md для получения подробной информации.
📄 Лицензия
Данный проект распространяется под лицензией MIT. Подробности см. в файле LICENSE.