Skip to main content
Glama
omniroute-mcp-bridge

omniroute-mcp-bridge

by jorisc90

omniroute-mcp-bridge

Un puente MCP stdio que DSH lanza como proceso hijo (a través del complemento dsh-mcp-client, transport: stdio). Hace de proxy para tools/list / tools/call hacia el servidor MCP streamable-http de omniroute en https://llm.claassen.family/api/mcp/stream y expone solo las herramientas de la lista blanca al modelo.

Por qué

  • La sesión streamable-http del upstream muere cuando queda inactiva ("Unknown Mcp-Session-Id" 404). El puente detecta ese fallo exacto, elimina el cliente obsoleto, vuelve a ejecutar el handshake de inicialización de MCP (nueva id de sesión) y reintenta — de modo que una sesión upstream muerta ya no rompe una llamada de herramienta.

  • El complemento dsh-mcp-client no tiene configuración de filtrado de herramientas. Este puente filtra tools/list en el lado del servidor, de modo que solo omniroute_web_search queda expuesto en lugar de ~70 herramientas (ahorra contexto al modelo; se mantiene el serverName: omniroute estable, de modo que el nombre público sigue siendo mcp__omniroute__omniroute_web_search).

  • La cabecera de autenticación del upstream se pasa mediante el env del hijo, no en argv — el secreto nunca aparece en la lista de procesos. Solo vive en el cordis.patch.yml con permisos 0600 del perfil web.

Related MCP server: mcp-http-bridge

Archivos

archivo

propósito

bridge.mjs

punto de entrada del servidor MCP stdio (lanzado por DSH)

upstream.mjs

accessor de upstream inyectable con lógica de reinicio de sesión caída

test-bridge.mjs

prueba autónoma en vivo: handshake MCP completo + llamada de búsqueda real

test-reinit.mjs

prueba determinista con upstream simulado del bucle de reinicio

probe.mjs

vuelca los nombres en bruto de las herramientas del upstream

probe-ttl2.mjs

mide el TTL de inactividad de la sesión upstream

Resolución del SDK

package.json fija @modelcontextprotocol/sdk a la versión exacta con la que se desarrolló el puente. Hay dos formas de obtenerlo:

  • Independiente: npm install en este directorio.

  • Dentro del host de DSH (este despliegue): node_modules es un symlink a /usr/lib/node_modules/@deepseek-ai/dsh/node_modules, de modo que el puente siempre usa la misma compilación del SDK que usa el propio complemento mcp-client de DSH. El symlink está ignorado por git — vuelve a crearlo tras clonar en ese entorno:

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

Configuración (variables de entorno, definidas en ~/.dsh/profiles/web/cordis.patch.yml)

var

significado

MCP_BRIDGE_UPSTREAM_URL

URL streamable-http (obligatoria)

MCP_BRIDGE_UPSTREAM_HEADERS

objeto JSON de cabeceras de petición

MCP_BRIDGE_ALLOWED_TOOLS

nombres en bruto separados por comas (omitir = todos)

MCP_BRIDGE_LOG

1 = registro detallado en el stderr del proceso hijo

Pruebas

Las credenciales no están commiteadas. Expórtalas primero (valores de tu archivo de 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"}'

Después:

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

Cambiar la lista blanca

Edita MCP_BRIDGE_ALLOWED_TOOLS en el archivo de patch (nombres en bruto separados por comas de node probe.mjs). El HMR del complemento include-plugin vuelve a aplicar el patch cuando cambia el archivo; el complemento mcp-client relaunch el proceso hijo del puente.

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.
    -