Skip to main content
Glama
omniroute-mcp-bridge

omniroute-mcp-bridge

by jorisc90

omniroute-mcp-bridge

Eine stdio-MCP-Brücke, die DSH als Kindprozess startet (über das Plugin dsh-mcp-client, transport: stdio). Sie leitet tools/list / tools/call an den omniroute-Streamable-HTTP-MCP-Server unter https://llm.claassen.family/api/mcp/stream weiter und legt dem Modell nur die in der Zulassungsliste enthaltenen Tools offen.

Warum

  • Die streamable-http-Session des Upstreams stirbt bei Inaktivität (`"Unknown Mcp-Session-Id" 404). Die Brücke erkennt genau diesen Fehler, entfernt den veralteten Client, führt den MCP-Initialize-Handshake erneut aus (neue Session-ID) und versucht es erneut — das eine abgestorbene Upstream-Session keinen Tool-Aufruf mehr unterbricht. Ist das separat noch zu fixen.

  • Das Plugin dsh-mcp-client hat keine Konfiguration zur Tool-Filterung. Diese Brücke filtert tools/list serverseitig, sodass nur omniroute_web_search offengelegt wird statt ~70 Tools (spart Modellkontext; serverName: omniroute bleibt stabil, sodass der öffentliche Name mcp__omniroute__omniroute_web_search erhalten bleibt).

  • Der Auth-Header des Upstreams wird über die env des Kindprozesses übergeben, nicht über argv — das Geheimnis erscheint nie in der Prozessliste. Es liegt ausschließlich in der cordis.patch.yml des Web-Profils (Dateimodus 0600).

Related MCP server: mcp-http-bridge

Dateien

Datei

Zweck

bridge.mjs

stdio-MCP-Server-Einstiegspunkt (von DSH gestartet)

upstream.mjs

injizierbarer Upstream-Accessor mit Re-Init-Logik für abgestorbene Sessions

test-bridge.mjs

eigenständiger Live-Test: vollständiger MCP-Handshake + echter Suchaufruf

test-reinit.mjs

deterministischer Fake-Upstream-Test der Re-Init-Schleife

probe.mjs

gibt die rohen Upstream-Toolnamen aus

probe-ttl2.mjs

misst die Leerlauf-TTL der Upstream-Session

SDK-Auflösung

package.json fixiert @modelcontextprotocol/sdk auf die exakte Version, mit der die Brücke entwickelt wurde. Es gibt zwei Wege, das SDK zu bekommen:

  • Standalone: npm install in diesem Verzeichnis.

  • Innerhalb des DSH-Hosts (dieses Deployment): node_modules ist ein Symlink auf /usr/lib/node_modules/@deepseek-ai/dsh/node_modules, sodass die Brücke immer denselben SDK-Build verwendet, den das mcp-client-Plugin von DSH nutzt. Der Symlink wird von Git ignoriert — erstelle ihn nach dem Klonen in dieser Umgebung neu:

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

Konfiguration (Umgebungsvariablen, gesetzt in ~/.dsh/profiles/web/cordis.patch.yml)

Variable

Bedeutung

MCP_BRIDGE_UPSTREAM_URL

streamable-http-URL (erforderlich)

MCP_BRIDGE_UPSTREAM_HEADERS

JSON-Objekt der Anfrage-Header

MCP_BRIDGE_ALLOWED_TOOLS

kommagetrennte Toolnamen (leer = alle)

MCP_BRIDGE_LOG

1 = ausführliches Logging auf dem stderr des Kindprozesses

Tests

Zugangsdaten sind nicht committet. Exportiere sie zuerst (Werte aus deiner Patch-Datei):

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"}'

Dann:

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

Zulassungsliste ändern

Ändere MCP_BRIDGE_ALLOWED_TOOLS in der Patch-Datei (kommagetrennte Roh-Toolnamen aus node probe.mjs). Das HMR des include-plugin wendet den Patch bei Dateiänderung erneut an; das mcp-client-Plugin startet den Kindprozess der Brücke neu.

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