Nichts0v0/dsh-mcp-manager ↗★ 3

dsh-mcp-manager

MCP server manager for DeepSeek Harness: manage MCP servers from the Web settings page, stored globally in $DSH_HOME/mcp-servers.json, connected/disconnected at runtime. 适合需要动态启停、编辑和管理多个MCP服务器的开发者。

パッケージ
dsh-mcp-manager
互換性
未検証
バージョン
0.6.0
ライセンス
MIT
最終更新
2026/08/21

同名パッケージの別リポジトリ

インストール

検証済み bundle がないか、互換性チェックに失敗しています。先にリポジトリの説明を読んでください。 README 全文を読む ↗

ドキュメント

README 全文を読む ↗

Usage

Open Settings → MCP Server Manager:

  • Server cards show the name, transport, status badge, endpoint and OAuth tags; disabled cards are dimmed.
  • Enable/disable switch — disabling disconnects immediately and unloads the server's tools.
  • Reconnect — waits for the connection result and refreshes automatically (configurable wait, default 15 s).
  • Edit — change transport / URL / command / headers / OAuth settings (serverName is immutable); saving hot-reconfigures the live connection.
  • OAuth authorization — for streamable-http servers requiring authentication, choose OAuth 2.0, click Authorize (OAuth) to log in via browser popup, and manage token revocation.
  • Delete — lives at the top of the edit page, behind a two-step confirm (3 s window).
  • Add — streamable-http (URL + optional headers or OAuth 2.0) or stdio (command + args), with a configurable connection-wait timeout.

Statuses

StatusMeaning
Connected (n tools)tools are registered
Connectinghandshake / reconnecting in progress
Offlinewas connected, but the server process is unreachable (probed)
Errorinitial connect failed (reason shown) or 30 s connect timeout
Disabledswitched off — not connected, no tools

Configuration file

$DSH_HOME/mcp-servers.json — shared by every profile and session:

{
  "version": 1,
  "servers": [
    {
      "serverName": "my-http-server",
      "transport": "streamable-http",
      "url": "http://127.0.0.1:8080/mcp",
      "enabled": true
    },
    {
      "serverName": "my-oauth-server",
      "transport": "streamable-http",
      "url": "https://api.example.com/mcp",
      "authType": "oauth",
      "enabled": true,
      "oauth": {
        "clientId": "client-id-123",
        "scopes": ["read", "write"],
        "tokens": {
          "accessToken": "secret_access_token",
          "refreshToken": "secret_refresh_token",
          "expiresAt": 1787304425000
        }
      }
    }
  ]
}

The file is watched live: manual edits (add / remove / change / enable) take effect within ~1 s; POST /mcp-manager/api/reload triggers it on demand.

HTTP API

MethodPathPurpose
GET/mcp-manager/api/healthliveness + version + store path
GET/mcp-manager/api/serverslist with live (probed) status
GET/mcp-manager/api/servers/single server
POST/mcp-manager/api/serversadd & connect
POST/mcp-manager/api/servers//updateupdate config & hot-reconnect (serverName immutable)
POST/mcp-manager/api/servers//toggleenable / disable (`{"enabled": true
POST/mcp-manager/api/servers//reconnectdisconnect & reconnect
DELETE/mcp-manager/api/servers/disconnect & delete
POST/mcp-manager/api/reloadre-read the config file from disk
POST/mcp-manager/api/oauth/discoverprobe RFC 9728 OAuth metadata for an MCP URL
POST/mcp-manager/api/oauth/startgenerate PKCE authorization URL for browser login
GET/mcp-manager/api/oauth/callbackOAuth redirect callback & token exchange
POST/mcp-manager/api/oauth/revokeclear saved OAuth credentials and disconnect

Configuration file

$DSH_HOME/mcp-servers.json — shared by every profile and session:

{
  "version": 1,
  "servers": [
    {
      "serverName": "my-http-server",
      "transport": "streamable-http",
      "url": "http://127.0.0.1:8080/mcp",
      "enabled": true
    },
    {
      "serverName": "my-oauth-server",
      "transport": "streamable-http",
      "url": "https://api.example.com/mcp",
      "authType": "oauth",
      "enabled": true,
      "oauth": {
        "clientId": "client-id-123",
        "scopes": ["read", "write"],
        "tokens": {
          "accessToken": "secret_access_token",
          "refreshToken": "secret_refresh_token",
          "expiresAt": 1787304425000
        }
      }
    }
  ]
}

The file is watched live: manual edits (add / remove / change / enable) take effect within ~1 s; POST /mcp-manager/api/reload triggers it on demand.