omniroute-mcp-bridge
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@omniroute-mcp-bridgesearch the web for recent developments in MCP servers"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
omniroute-mcp-bridge
A stdio MCP bridge that DSH spawns as a child process (via the dsh-mcp-client
plugin, transport: stdio). It proxies tools/list / tools/call to the
omniroute streamable-http MCP server at
https://llm.claassen.family/api/mcp/stream and exposes only the
allow-listed tools to the model.
Why
The upstream streamable-http session dies when idle ("Unknown Mcp-Session-Id" 404). The bridge detects that exact failure, tears down the stale client, re-runs the MCP initialize handshake (fresh session id) and retries — so a dead upstream session no longer breaks a tool call.
The
dsh-mcp-clientplugin has no tool-filtering config. This bridge filterstools/listserver-side, so onlyomniroute_web_searchis exposed instead of ~70 tools (saves model context; stableserverName: omnirouteis kept, so the public name staysmcp__omniroute__omniroute_web_search).The upstream auth header is passed via child env, not argv — the secret never appears in the process list. It lives only in the 0600
cordis.patch.ymlof the web profile.
Related MCP server: mcp-http-bridge
Files
file | purpose |
| stdio MCP server entrypoint (spawned by DSH) |
| injectable upstream accessor with dead-session re-init logic |
| standalone live test: full MCP handshake + real search call |
| deterministic fake-upstream test of the re-init loop |
| dumps raw upstream tool names |
| measures upstream session idle TTL |
SDK resolution
package.json pins @modelcontextprotocol/sdk to the exact version the
bridge was developed against. Two ways to get it:
Standalone:
npm installin this directory.Inside the DSH host (this deployment):
node_modulesis a symlink to/usr/lib/node_modules/@deepseek-ai/dsh/node_modules, so the bridge always uses the same SDK build DSH's own mcp-client plugin uses. The symlink is gitignored — recreate it after cloning in that environment:ln -sfn /usr/lib/node_modules/@deepseek-ai/dsh/node_modules node_modules
Config (env, set in ~/.dsh/profiles/web/cordis.patch.yml)
var | meaning |
| streamable-http URL (required) |
| JSON object of request headers |
| comma-separated raw tool names (omit = all) |
|
|
Tests
Credentials are not committed. Export them first (values from your patch file):
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"}'Then:
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 TTLChange the allow-list
Edit MCP_BRIDGE_ALLOWED_TOOLS in the patch file (comma-separated raw names
from node probe.mjs). The include-plugin HMR re-applies the patch on file
change; the mcp-client plugin respawns the bridge child.
This server cannot be deployed
Maintenance
Related MCP Connectors
Remote MCP server exposing SMI Aware tools, resources, and skills over Streamable HTTP.
Host your MCP tool over streamable HTTP in one command.
MCP server (stdio): check if URLs are alive (status, redirects, latency) via the AgentForge API
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProxies remote HTTP/HTTPS MCP servers over stdio, allowing stdio-based MCP clients to connect to remote servers via Streamable HTTP or SSE transports.MIT
- AlicenseNot gradedqualityCmaintenanceThis 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
- AlicenseNot gradedqualityBmaintenanceA deterministic MCP tool-list relay that lets operators filter tools by include/exclude rules and exposes a filtered stdio MCP server to local clients.5 npmMIT
- FlicenseNot gradedqualityCmaintenanceLets 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.-