Skip to main content
Glama
PintaAI

MCP HTTP Proxy

by PintaAI

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 install

2. Настройка (опционально)

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 dev

API-эндпоинты (Стандартный транспорт MCP SSE)

Эндпоинт

Метод

Описание

/sse

GET

Установка SSE-соединения (возвращает URL эндпоинта)

/message?sessionId=xxx

POST

Отправка JSON-RPC сообщений

/health

GET

Проверка работоспособности (аутентификация не требуется)

/sessions

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 3000

ngrok предоставит публичный URL, например https://abc123.ngrok.io.

Вариант 3: Cloudflare Tunnel

# Install cloudflared if not already installed
cloudflared tunnel --url http://localhost:3000

Как работает транспорт SSE

  1. Клиент делает GET-запрос к /sse - Сервер создает сессию, отправляет событие endpoint с URL сообщения

  2. Клиент делает POST-запрос к /message?sessionId=xxx - Сервер пересылает JSON-RPC в процесс MCP

  3. Сервер транслирует ответы - Ответы 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"}'

Конфигурация

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

Описание

По умолчанию

PORT

Порт сервера

3000

HOST

Хост для привязки

0.0.0.0

MCP_API_KEY

API-ключ для аутентификации

(нет)

MCP_COMMAND

Команда для запуска MCP-сервера

npx

MCP_ARGS

JSON-массив аргументов

["@browsermcp/mcp@latest"]

Использование других 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"]

Примечания по безопасности

  1. Всегда используйте аутентификацию по API-ключу при публикации в интернете

  2. Используйте HTTPS (Tailscale, ngrok и Cloudflare предоставляют его)

  3. Tailscale рекомендуется для частного доступа внутри вашей tailnet

  4. Периодически меняйте API-ключи

  5. Контролируйте сессии через эндпоинт /sessions

Устранение неполадок

MCP-сервер не запускается

Проверьте логи консоли на наличие ошибок. Стандартный вывод ошибок (stderr) MCP-сервера перенаправляется в консоль прокси.

Отказ в соединении (Connection Refused)

  • Убедитесь, что сервер запущен: curl http://localhost:3000/health

  • Проверьте подключение Tailscale: tailscale status

Ошибка аутентификации

  • Убедитесь, что API-ключ в .env совпадает с заголовком вашего запроса

  • Убедитесь, что префикс "Bearer " включен в заголовок Authorization

SSE не работает

  • Убедитесь, что вы подключаетесь к эндпоинту /sse (а не просто к базовому URL)

  • Проверьте, что заголовок Authorization также отправляется с GET-запросом

Лицензия

MIT

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Enables interaction with remote MCP servers using SSE transport instead of STDIO for enhanced communication capabilities.
    1
    200,973 PyPI
    2,786
    Python
    MIT
  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Bridges 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
    -