편집자 노트

MCP 服务器管理

MCP server manager for DeepSeek Harness (DSH) — a Settings → MCP page where you add MCP servers once (remote HTTP or local stdio process), authenticate HTTP servers with OAuth in the browser, and get every server's tools registered as native mcp tools in all your sessions.

이것은 DeepSeek Harness(DSH) 플러그인입니다. 이 사이트는 GitHub README, 설치 정보, 유지보수 상태, 공개 보안 시그널을 모아 보여줍니다.

업스트림에서 중국어 README를 제공하지 않아 저장소 원본 내용을 표시합니다.

dsh-mcp-manager

简体中文 | English

MCP server manager for DeepSeek Harness (DSH) — a Settings → MCP page where you add MCP servers once (remote HTTP or local stdio process), authenticate HTTP servers with OAuth in the browser, and get every server's tools registered as native mcp__<name>__* tools in all your sessions.

The built-in @deepseek-ai/dsh-mcp-client only accepts a static headers config — it has no OAuth support and no local stdio transport. This plugin fills that gap:

  • OAuth (authorization code + PKCE) with RFC 7591 dynamic client registration, refresh_token rotation, and auto-reconnect across restarts — one browser login, then it keeps working.
  • Static Bearer token mode for servers without OAuth.
  • stdio local processes: run npx / uvx / python etc. directly; the plugin speaks JSON-RPC over the child's stdin/stdout (spawns the process, reconnects, and reaps it on exit) — no remote server or auth required.
  • Tool registration with the same mcp__<server>__<rawName> naming convention as the built-in client, including strict-schema sanitization for the DSH tool registry and isConcurrencySafe marking.

Requirements

  • DeepSeek Harness with the web profile (npx @deepseek-ai/dsh web)
  • Node.js ^22.19 or >=24; pnpm on your PATH

Install

npx -p @deepseek-ai/dsh dsh plugin --profile web add github:hyqhyq3/dsh-mcp-manager

Then restart dsh --profile web and refresh the page. The package declares a dsh.bundle.patch, so the plugin activates automatically — no manual cordis.patch.yml editing.

The MCP server's OAuth provider must allow a loopback redirect (http://127.0.0.1:<port>/mcp-manager/callback/<id>), which is where the DSH GUI webserver receives the code. The origin is derived from your browser's own address, so any host/port the GUI is served on works.

Usage

  1. Open Settings → MCP in the DSH web UI.
  2. + Add MCP server:
    • HTTP: name (becomes the mcp__<name>__* prefix), URL, and auth mode (OAuth or static token).
    • stdio: name, command (e.g. npx), args (space-separated; use quotes to protect args containing spaces), and optional env (JSON object) and working directory.
  3. OAuth servers: click 去认证 (Authenticate) → the browser opens the server's login page → after consent you are redirected back and the tools are registered immediately.
  4. Static-token servers connect as soon as the token is saved; stdio servers spawn and connect immediately on save.

Status badges: connected (N tools) / needs-auth / authorizing / error / disabled. Buttons: authenticate, enable/disable, delete. Disable unregisters that server's tools and drops its connection (config and OAuth tokens persist); Enable reconnects without re-authenticating. Disabled servers stay dormant across restarts. The toggle is global: it affects every session in this profile. State persists at ~/.dsh/mcp-manager.json (server configs + OAuth client registrations + tokens).

What the agent sees

Every connected server's tools appear as first-class tools, e.g. for a server named odin:

mcp__odin__search_tools     mcp__odin__describe_tool
mcp__odin__execute_tool     mcp__odin__list_tool_scopes

Tool results are rendered as native text content; isError results surface through the registry's error path.

How it works

PieceMechanism
Settings pageClient half registers a settings.section slot entry (MCP tab)
OAuth flowHost half does dynamic client registration + PKCE; the redirect lands on a route mounted on the DSH GUI webserver itself
Token storage~/.dsh/mcp-manager.json; refreshed automatically on 401
MCP transport (HTTP)Streamable HTTP (JSON-RPC over POST, Mcp-Session-Id, SSE or JSON responses)
MCP transport (stdio)child_process.spawn a local command, JSON-RPC over stdin/stdout (newline-delimited); reconnect reaps the old process first
Tool schemaServer JSON Schemas are sanitized to the registry's supported raw subset (unsupported vocabulary degrades to unconstrained)
Hot pathSame-origin JSON API under /mcp-manager/api/* between the settings page and the host half

Limitations

  • resources and prompts MCP capabilities are not bridged (tools only).
  • Tokens live in a plain JSON file under ~/.dsh — treat the file as a secret.
  • stdio servers run as long-lived child processes tied to the plugin lifecycle; args are whitespace-tokenized (quotes protect args with spaces) with no shell expansion — write absolute paths or env vars yourself for ~, $VAR, pipes, etc.
  • One OAuth client registration per server per GUI origin; moving the GUI to a new origin re-registers automatically on the next login.

License

MIT

REPOSITORY SIGNALS

보안 및 설치 증거

이 점수는 공개 저장소 메타데이터와 이 사이트에 등록된 설치 증거에만 기반하며, 코드 보안 감사와 다릅니다.

출처 추적 가능

공개 플러그인 카탈로그에서 왔으며, 공개 GitHub 저장소로 연결됩니다.

라이선스

저장소가 MIT 라이선스를 선언했습니다.

유지보수 활동

최근 180일 내 코드 업데이트가 있습니다.

설치 증거

재현 가능한 정확한 설치 메타데이터가 아직 등록되지 않았습니다. 저장소 설명에 따라 직접 확인하세요.

설치 라이프사이클 스크립트

검사한 패키지 메타데이터에 설치 라이프사이클 스크립트가 선언되지 않았습니다.