Skip to main content
Glama

dsh-mcp-bridge

DeepSeek Harness 배포의 기능을 모든 MCP 클라이언트에 제공합니다 — 메모리, 영구 작업 원장(ledger), 프로젝트 에이전트 디스패치, 그리고 더 넓은 MCP 에코시스템까지 — 모델이 알아야 하고 기억해야 하는 셸 명령 대신 선언된 도구(declared tools) 로 제공합니다.

왜 필요한가

claude -p는 자체 에이전트 루프를 실행하므로 하네스의 도구 스키마를 절대 받지 못합니다: Claude 기반 세션에는 메모리도, 원장도, 디스패치도 없습니다. 하지만 MCP 서버는 수용합니다. 이것이 바로 그 서버입니다.

노출되는 모든 것은 이미 명령줄 진입점이 있으므로, 이는 권한이 아닌 표면(surface) 을 추가하는 것입니다 — 호출자가 셸에서 이미 할 수 있는 것과 정확히 동일한 작업을 수행할 수 있습니다. 브리지할 수 없는 것은 라이브 하네스 턴 내부에만 존재하는 것(목표, AgentTeams)뿐입니다. 이들은 설계상 세션 범위로 제한되며 외부 표면이 없습니다.

Related MCP server: skillsmcp

도구

도구

기능

dsh_memory_search / dsh_memory_write

영구 메모리 저장소

dsh_tasks_list / _add / _done / _block

작업 원장

dsh_dispatch / dsh_job_status

프로젝트 에이전트에 작업을 넘기고 폴링

dsh_mcp_call / dsh_mcp_schema

MCP 에코시스템의 모든 서버, 구성 없이 호출

dsh_projects

저장소 소유권 레지스트리

dsh_notify

사용자에게 알림 전달

사용법

// mcp-bridge.json
{ "mcpServers": { "dsh": { "command": "node", "args": ["/path/to/src/server.js"] } } }
claude -p --strict-mcp-config --mcp-config ./mcp-bridge.json

CLI가 있는 디렉터리가 ~/.dsh-jarvis/bin이 아닌 경우 DSH_JARVIS_BIN을 해당 디렉터리로 지정하세요.

고생 끝에 배운 세 가지

  • --mcp-config는 가변 인자(variadic)입니다. 인라인 JSON 뒤에 위치 인자(prompt)가 오면 클라이언트가 prompt를 두 번째 구성 경로로 읽습니다 (MCP config file not found: /tmp/List the tool…). 파일로 전달하세요.

  • stdin이 EOF를 보고하자마자 종료하지 마세요. 스펙상 클라이언트가 stdin을 닫으면 종료 신호이지만, 일부 클라이언트는 이미 EOF 상태인 stdin을 서버에 넘겨줍니다. 그러면 서버가 첫 요청 전에 종료되고, 클라이언트가 다시 생성하며, 이 과정이 반복됩니다. 관측된 사례: 3분 동안 32회 재생성, 완료된 호출 없음. 여기서는 EOF가 무언가를 서비스한 후에만 프로세스를 종료하며, 유휴 타임아웃에 상한을 두어 버려진 서버도 결국 사라지게 합니다.

  • 브리지는 읽기가 아닌 쓰기로 검증하세요. "검색 도구를 호출하라"는 지시를 받은 모델은 호출이 실제로 실패했을 때 자신의 컨텍스트에서 그럴듯한 출력을 재현할 수 있습니다 — 실제로 여기서 한 모델이 그렇게 했고 나중에 인정했습니다. 무작위 토큰을 사용한 쓰기는 저장소에 기록되거나 기록되지 않거나 둘 중 하나입니다.

테스트

npm test

의존성 없이 20개의 테스트, 클라이언트 불필요: 도구 카탈로그와 JSON-RPC 계층은 모두 순수(pure)합니다.

라이선스

MIT

Related MCP Connectors

Related MCP Servers