Nichts0v0/dsh-mcp-manager ↗★ 3

dsh-mcp-manager

在Web设置页管理MCP服务器的连接与配置 适合需要动态启停、编辑和管理多个MCP服务器的开发者。

套件
dsh-mcp-manager
相容性
待驗證
版本
0.6.0
授權
MIT
最近更新
2026年8月21日

同名套件的其他儲存庫

安裝

此插件尚未提供可驗證的 bundle,或相容性檢查未通過。請先閱讀倉庫說明。 閱讀完整 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.