MCP HTTP Proxy
MCP HTTP Proxy
Предоставьте доступ к любому MCP-серверу на базе stdio (например, @browsermcp/mcp) через интернет с использованием транспорта HTTP/SSE. Идеально подходит для удаленных агентов, которым необходим доступ к инструментам MCP по сети.
Возможности
🌐 Стандартный транспорт MCP SSE - Соответствует спецификации транспорта MCP HTTP
🔐 Аутентификация по API-ключу - Безопасный доступ с использованием токена Bearer
🚀 Различные варианты публикации - Tailscale, ngrok, Cloudflare Tunnel
🔄 Управление сессиями - Поддержка нескольких одновременных сессий
📦 Работает с любым MCP-сервером - По умолчанию используется
@browsermcp/mcp
Related MCP server: MCP SSE Proxy
Быстрый старт
1. Установка зависимостей
npm install2. Настройка (опционально)
cp .env.example .env
# Edit .env to set your API keyСоздайте безопасный API-ключ:
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"3. Сборка и запуск
npm run build
npm startИли для разработки:
npm run devAPI-эндпоинты (Стандартный транспорт MCP SSE)
Эндпоинт | Метод | Описание |
| GET | Установка SSE-соединения (возвращает URL эндпоинта) |
| POST | Отправка JSON-RPC сообщений |
| GET | Проверка работоспособности (аутентификация не требуется) |
| GET | Список активных сессий (требуется аутентификация) |
Публикация в интернете
Вариант 1: Tailscale (рекомендуется для частного доступа)
Tailscale обеспечивает безопасный частный доступ без публикации в публичном интернете.
# Install Tailscale if not already installed
# Then serve via Tailscale
tailscale serve --bg --http 3000Или используйте свой IP-адрес Tailscale напрямую:
tailscale status # Find your Tailscale IPВаш MCP-сервер будет доступен по адресу:
https://your-machine.tailnet-name.ts.net(через serve)http://your-tailscale-ip:3000(прямой IP)
Использование из вашего агента:
{
"mcpServers": {
"browser-remote": {
"url": "http://your-tailscale-ip:3000/sse",
"headers": {
"Authorization": "Bearer your-api-key"
}
}
}
}Вариант 2: ngrok (публичный URL)
# Install ngrok if not already installed
ngrok http 3000ngrok предоставит публичный URL, например https://abc123.ngrok.io.
Вариант 3: Cloudflare Tunnel
# Install cloudflared if not already installed
cloudflared tunnel --url http://localhost:3000Как работает транспорт SSE
Клиент делает GET-запрос к
/sse- Сервер создает сессию, отправляет событиеendpointс URL сообщенияКлиент делает POST-запрос к
/message?sessionId=xxx- Сервер пересылает JSON-RPC в процесс MCPСервер транслирует ответы - Ответы MCP отправляются как SSE-события
message
Примеры использования
Проверка работоспособности
curl http://localhost:3000/healthОтвет:
{
"status": "healthy",
"sessions": 0,
"uptime": 10.5,
"transport": "sse",
"endpoints": {
"sse": "/sse (GET - establishes SSE connection)",
"message": "/message?sessionId=xxx (POST - send JSON-RPC messages)"
}
}Подключение через SSE (JavaScript)
const eventSource = new EventSource('http://localhost:3000/sse', {
headers: { 'Authorization': 'Bearer your-api-key' }
});
eventSource.addEventListener('endpoint', (e) => {
console.log('Message endpoint:', e.data);
// e.data = "/message?sessionId=xxx"
});
eventSource.addEventListener('message', (e) => {
console.log('MCP response:', JSON.parse(e.data));
});Отправка MCP-запроса
curl -X POST "http://localhost:3000/message?sessionId=your-session-id" \
-H "Authorization: Bearer your-api-key" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'Конфигурация
Переменная окружения | Описание | По умолчанию |
| Порт сервера |
|
| Хост для привязки |
|
| API-ключ для аутентификации | (нет) |
| Команда для запуска MCP-сервера |
|
| JSON-массив аргументов |
|
Использование других MCP-серверов
Вы можете использовать этот прокси с любым MCP-сервером на базе stdio:
# Example: Use a custom MCP server
MCP_COMMAND=node
MCP_ARGS=["/path/to/your/mcp-server/dist/index.js"]
# Example: Use Python MCP server
MCP_COMMAND=python
MCP_ARGS=["-m", "your_mcp_server"]Примечания по безопасности
Всегда используйте аутентификацию по API-ключу при публикации в интернете
Используйте HTTPS (Tailscale, ngrok и Cloudflare предоставляют его)
Tailscale рекомендуется для частного доступа внутри вашей tailnet
Периодически меняйте API-ключи
Контролируйте сессии через эндпоинт
/sessions
Устранение неполадок
MCP-сервер не запускается
Проверьте логи консоли на наличие ошибок. Стандартный вывод ошибок (stderr) MCP-сервера перенаправляется в консоль прокси.
Отказ в соединении (Connection Refused)
Убедитесь, что сервер запущен:
curl http://localhost:3000/healthПроверьте подключение Tailscale:
tailscale status
Ошибка аутентификации
Убедитесь, что API-ключ в
.envсовпадает с заголовком вашего запросаУбедитесь, что префикс "Bearer " включен в заголовок Authorization
SSE не работает
Убедитесь, что вы подключаетесь к эндпоинту
/sse(а не просто к базовому URL)Проверьте, что заголовок Authorization также отправляется с GET-запросом
Лицензия
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Remote MCP server exposing SMI Aware tools, resources, and skills over Streamable HTTP.
Remote MCP server exposing your Node Command fleet (files, shell, processes, browser) to AI hosts.
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
Streamable HTTP MCP server exposing planner flows, tasks, and squads.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables interaction with remote MCP servers using SSE transport instead of STDIO for enhanced communication capabilities.1200,973 PyPI2,786PythonMIT
- FlicenseNot gradedqualityNot gradedmaintenanceBridges STDIO-based MCP clients with SSE-based MCP servers, allowing applications like Claude Desktop to connect to remote MCP servers that use SSE transport.9-
- FlicenseNot gradedqualityDmaintenanceExposes a local MCP server via ngrok with SSE and Streamable HTTP transports for use in Kiro Web.-
- FlicenseNot gradedqualityDmaintenanceA standalone MCP server that exposes API endpoints as tools for AI assistants, using SSE transport.-