Skip to main content
Glama
omniroute-mcp-bridge

omniroute-mcp-bridge

by jorisc90

omniroute-mcp-bridge

DSH が子プロセスとして起動する stdio MCP ブリッジです(dsh-mcp-client プラグイン、transport: stdio 経由)。tools/list / tools/call を、https://llm.claassen.family/api/mcp/stream にある omniroute streamable-http MCP サーバーにプロキシし、許可リストに載っているツールだけをモデルに公開します。

抑制

  • アップストリームの streamable-http セッションは、アイドル状態になると終了します("Unknown Mcp-Session-Id" 404)。このブリッジはそのエラーを正確に検出し、失効したクライアントを破棄して、MCP の初期化ハンドシェイクを再実行(新しいセッション ID を取得)して再試行します。これにより、死んだセッションによってツール呼び出しが失敗することがなくなります。

  • dsh-mcp-client プラグインにはツールのフィルタリング設定がありません。このブリッジは tools/list をサーバー側でフィルタリングするため、約70個のツールの代わりに omniroute_web_search のみが公開されます(モデルコンテキストの節約になり、安定した serverName: omniroute が維持されるため、公開名は mcp__omniroute__omniroute_web_search のままです)。

  • アップストリームの認証ヘッダーは argv ではなく、子プロセスの env 経由で渡されます。シークレットがプロセス一覧に現れることはありません。シークレットは、Web プロファイルのパーミッション 0600 の cordis.patch.yml にのみ存在します。

Related MCP server: mcp-http-bridge

ファイル

ファイル

目的

bridge.mjs

stdio MCP サーバーのエントリポイント(DSH から起動される)

upstream.mjs

注入可能なアップストリームアクセサー。死んだセッションの再初期化ロジックを備える

test-bridge.mjs

スタンドアローンのライブテスト: 完全な MCP ハンドシェイク + 実際の検索呼び出し

test-reinit.mjs

再初期化ループに対する決定的なフェイクアップストリームテスト

probe.mjs

アップストリームの生のツール名をダンプする

probe-ttl2.mjs

アップストリームセッションのアイドル TTL を測定する

SDK の解決

package.json は、このブリッジの開発時に使用した正確なバージョンに @modelcontextprotocol/sdk を固定しています。取得方法は2つあります。

  • スタンドアロン: このディレクトリで npm install を実行します。

  • DSH ホスト内(このデプロイ環境): node_modules は /usr/lib/node_modules/@deepseek-ai/dsh/node_modules へのシンボリックリンクです。そのため、ブリッジは常に DSH 自身の mcp-client プラグインが使うのと同じ SDK ビルドを使用します。このシンボリックリンクは gitignore されているため、その環境でクローンした後は再作成してください:

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

設定(環境変数。~/.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 への詳細ログ出力

テスト

認証情報は コミットされていません。先にエクスポートしてください(パッチファイルの値を使用):

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

許可リストの変更

パッチファイル内の MCP_BRIDGE_ALLOWED_TOOLS を編集してください(node probe.mjs で取得した生の名前をカンマ区切りで指定)。include-plugin の HMR がファイル変更時にパッチを再適用し、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.
    -