Skip to main content
Glama
omniroute-mcp-bridge

omniroute-mcp-bridge

by jorisc90

omniroute-mcp-bridge

stdio MCP-мост, который DSH запускает как дочерний процесс (через плагин dsh-mcp-client, transport: stdio). Он проксирует tools/list / tools/call к streamable-http MCP-серверу omniroute по адресу https://llm.claassen.family/api/mcp/stream и отдаёт модели только инструменты из allow-list.

Зачем

  • Сессия upstream streamable-http умирает при простое ("Unknown Mcp-Session-Id" 404). Мост обнаруживает именно этот сбой, закрывает устаревший клиент, заново выполняет MCP initialize handshake (новый session id) и повторяет запрос — поэтому мёртвая upstream-сессия больше не ломает вызов инструмента.

  • Плагин dsh-mcp-client не имеет конфигурации фильтрации инструментов. Этот мост фильтрует tools/list на стороне сервера, поэтому наружу отдаётся только omniroute_web_search вместо ~70 инструментов (экономия контекста модели; сохраняется стабильный serverName: omniroute, так что публичное имя остаётся mcp__omniroute__omniroute_web_search).

  • Заголовок авторизации upstream передаётся через env дочернего процесса, а не через argv — секрет никогда не появляется в списке процессов. Он хранится только в cordis.patch.yml с правами 0600 в веб-профиле.

Related MCP server: mcp-http-bridge

Файлы

файл

назначение

bridge.mjs

точка входа stdio MCP-сервера (запускается из DSH)

upstream.mjs

инжектируемый доступ к upstream с логикой re-init мёртвой сессии

test-bridge.mjs

автономный живой тест: полное MCP-рукопожатие + реальный поисковый вызов

test-reinit.mjs

детерминированный тест цикла re-init на фейковом upstream

probe.mjs

выводит сырые имена инструментов upstream

probe-ttl2.mjs

измеряет TTL простоя upstream-сессии

Подключение SDK

package.json закрепляет @modelcontextprotocol/sdk ровно на той версии, под которую разрабатывался мост. Получить её можно двумя способами:

  • Автономно: npm install в этой директории.

  • Внутри DSH-хоста (в данном развёртывании): node_modules — это симлинк на /usr/lib/node_modules/@deepseek-ai/dsh/node_modules, поэтому мост всегда использует ту же сборку SDK, что и собственный плагин mcp-client в DSH. Симлинк игнорируется Git — создайте его заново после клонирования в этом окружении:

    ln -sfn /usr/lib/node_modules/@deepseek-ai/dsh/node_modules node_modules

Конфигурация (env, задаётся в ~/.dsh/profiles/web/cordis.patch.yml)

переменная

значение

MCP_BRIDGE_UPSTREAM_URL

streamable-http URL (обязательно)

MCP_BRIDGE_UPSTREAM_HEADERS

JSON-объект с заголовками запросов

MCP_BRIDGE_ALLOWED_TOOLS

исходные имена инструментов через запятую (не задано — все)

MCP_BRIDGE_LOG

1 — подробное логирование в stderr дочернего процесса

Тесты

Учётные данные не закоммичены. Сначала экспортируйте их (значения из вашего patch-файла):

export MCP_BRIDGE_UPSTREAM_URL='https://llm.claassen.family/api/mcp/stream'
export MCP_BRIDGE_UPSTREAM_HEADERS='{"Authorization":"Bearer …","X-Forwarded-For":"127.0.0.1"}'

Затем:

node test-reinit.mjs   # deterministic: dead session -> re-init -> success (no network needed)
node test-bridge.mjs   # live: handshake + filtered list + real search
node probe.mjs         # dump the upstream's raw tool names
node probe-ttl2.mjs    # measure upstream session idle TTL

Изменить allow-list

Отредактируйте MCP_BRIDGE_ALLOWED_TOOLS в patch-файле (первые имена через запятую из node probe.mjs). HMR include-плагина повторно применяет patch при изменении файла; плагин mcp-client перезапускает дочерний процесс моста.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    This server bridges a stdio MCP server to HTTP, allowing MCP clients that communicate over HTTP to use the server's tools. It includes a per-tool allow/deny filter for security.
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Lets you run a lightweight stdio MCP server in front of an upstream MCP server, exposing only a configured subset of its tools with compact schemas while keeping the full catalog reachable via discover, describe, and call meta-tools.
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables local MCP clients to access tools from a remote FastMCP server over stdio, handling OAuth authentication and Streamable HTTP communication.
    -