Skip to main content
Glama
omniroute-mcp-bridge

omniroute-mcp-bridge

by jorisc90

omniroute-mcp-bridge

DSH가 dsh-mcp-client 플러그인(transport: stdio)을 통해 자식 프로세스로 실행하는 stdio MCP 브리지입니다. 이 브리지는 tools/list / tools/call을 https://llm.claassen.family/api/mcp/stream에 있는 omniroute streamable-http MCP 서버로 프록시하며, 오직 허용 목록에 있는 도구만 모델에 노출합니다.

이유

  • 업스트림 streamable-http 세션은 유휴 상태가 되면 죽습니다("Unknown Mcp-Session-Id" 404). 브리지는 정확히 그 실패를 감지하여 stale 상태의 클라이언트를 해체하고, MCP initialize 핸드셰이크(새 세션 id)를 다시 실행한 다음 재시도합니다 — 따라서 죽은 업스트림 세션이 더 이상 도구 호출을 깨뜨리지 않습니다.

  • dsh-mcp-client 플러그인에는 도구 필터링 설정이 없습니다. 이 브리지는 tools/list를 서버 측에서 필터링하므로 ~70여 개의 도구 대신 omniroute_web_search만 노출합니다. (모델 컨텍스트를 절약하며, 안정적인 serverName: omniroute을 유지하기 때문에 공개 이름도 mcp__omniroute__omniroute_web_search로 유지됩니다.)

  • 업스트림 인증 헤더는 argv가 아니라 자식 프로세스 env로 전달됩니다. — 비밀 값은 프로세스 목록에 절대 나타나지 않습니다. 비밀 값은 웹 프로필의 0600 권한 cordis.patch.yml에만 존재합니다.

Related MCP server: mcp-http-bridge

파일

파일

용도

bridge.mjs

stdio MCP 서버 진입점(DSH가 스폰)

upstream.mjs

주입 가능한 업스트림 접근자. 죽은 세션 재초기화 로직 포함

test-bridge.mjs

단독 실행 라이브 테스트: 전체 MCP 핸드셰이크 + 실제 검색 호출

test-reinit.mjs

재초기화 루프에 대한 결정적(deterministic) fake-upstream 테스트

probe.mjs

업스트림 원본 도구 이름을 덤프

probe-ttl2.mjs

업스트림 세션 유휴 TTL 측정

SDK 설치

package.json은 @modelcontextprotocol/sdk를 이 브리지가 개발된 정확한 버전으로 고정합니다. SDK를 얻는 방법은 두 가지입니다.

  • 독립 실행: 이 디렉터리에서 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.
    -