dsh-mcp
dsh-mcp — MCP サーバー管理プラグイン(DSH 用 MCP サーバーマネージャー)
DSH Web GUI に MCP(Model Context Protocol)サーバー管理機能を提供します:
サーバーリスト:「設定 → MCP」ページで MCP サーバーの追加 / 編集 / 削除が可能。stdio(子プロセス)、 Streamable HTTP、SSE(サーバー送信イベント)の 3 つのトランスポートに対応し、JSON からの一括追加も可能。設定は
~/.dsh/dsh-mcp.json(0600、アトミック書き込み)に保存されます。有効 / 無効:各サーバーにグローバルスイッチがあります。無効にすると接続が切断され、そのツールは登録されません。
セッション単位の接続選択:セッションバー(タイトル行)に「MCP」セレクターが追加され、このセッションで接続する MCP サーバーをチェックできます(デフォルトでは有効なサーバーすべて、明示的に「どれにも接続しない」も選択可能)。チェックされていないサーバーはこのセッションでは使用されません。「設定 → MCP」ページの「セッション接続」タブでも調整でき、チェックは即時反映されます。
ツール登録:接続済みサーバーのツールは
mcp__<サーバーid>__<ツール名>としてセッションスコープの ツール(agent.ctx.tools.register経由)に登録され、選択されたセッションでのみ表示されます。呼び出しは MCP プロトコルで転送されます。接続管理:切断時は指数バックオフで自動再接続(最大 10 回)、
notifications/tools/list_changedによる ツールリストのホット同期に対応。GUI からワンクリック接続テストが可能。サーバーの「ツール数」をクリックすると、そのサーバーが提供するツールを一覧表示できます。OAuth ブラウザー認証:Bearer 認証が必要な HTTP/SSE サーバー(401 チャレンジ)に対して、「認証」をクリックすると 認証パネルが表示され、外部ブラウザーでログインを完了します(RFC 9728/8414 ディスカバリー + 動的クライアント登録 + PKCE)。トークンは
~/.dsh/dsh-mcp-oauth/<id>.json(0600)に永続化され、自動的に付与されます。切断後の再接続時には自動更新されます。コールバックは固定 ポート 3085 で待ち受け(使用中はランダムにフォールバックし、無効な登録を自動クリアして再登録)、認証完了後は自動再接続、サーバー削除時には トークンも一緒に削除されます。セッションバー MCP セレクター:タイトル行の「MCP n」ボタンのドロップダウンパネルは展開方向を自動調整——セッション名が短くても、 ウィンドウが狭くても、パネルは完全に表示され、ウィンドウの端で切り取られることはありません。
Agent ツール:
mcp_listで設定済みサーバーと実行状態を一覧表示。システムプロンプトが自動的にこのプラグインをモデルに通知します。
アーキテクチャ
ホスト側(Host、
src/index.ts):cordis プラグインname = 'mcp'。/api/dsh-mcp/*ルート(loopback フェンス)、mcp_listツール、システムプロンプト段落をマウントし、agent/created/agent/disposedを監視して各セッションのスコープツール登録を維持します。エンジン(
src/engine.ts+src/engine/connection.ts+src/engine/bridge.ts): サーバーごとに 1 つの接続(@modelcontextprotocol/sdk)、接続を共有し、セッションごとに登録します。ストレージ(
src/store.ts):サーバーの CRUD + セッション選択。純粋なファイル I/O で、cordis 依存はありません。クライアント(
src/client/*):公式スロットにマウント——「設定」サイドバーのsettings.section(idmcp、 サーバー / セッションの 2 タブ)+ セッションバーconversation.session.header.actionsの MCP セレクター。 色は--dsw-alias-*テーマ変数を使用(明暗テーマに自動対応)。
Related MCP server: MCP Proxy Server
インストール
# 在 dsh web profile(默认 web)中安装(link 方式,随源码热更新)
dsh plugin --profile web add "link:<本包绝对路径>"インストール後、dsh(dsh --profile web)を再起動すると有効になります:ホスト側はノード側を読み込み、Web GUI はブラウザー側
(/plugins/dsh-mcp/client.js)を読み込みます。
他の人にインストールを任せる場合
dsh-mcp フォルダー全体を渡すだけです(node_modules は不要ですが、lib/ のビルド成果物は保持してください——
ホスト側の lib/index.js とブラウザー側の lib/client.js が含まれており、dsh が実際に読み込むものです)。相手側の手順:
# 1. 放到任意位置(如 ~/plugins/dsh-mcp)
# 2. 安装依赖(需 pnpm;lock 文件保证版本一致)
cd dsh-mcp
pnpm install
# 3. 若 lib/ 缺失(例如通过 git 交付且 .gitignore 忽略了它),先构建
pnpm run build
# 4. 可选:验证(34 个测试,含真实 stdio/SSE MCP 服务器与 OAuth 端到端)
pnpm run typecheck && pnpm test
# 5. 安装到 dsh web profile(link 方式,源码改动即热更新)
dsh plugin --profile web add "link:C:/path/to/dsh-mcp"
# 6. 重启 dsh 生效
dsh --profile webWindows の注意事項:
pnpm installでERR_PNPM_UNEXPECTED_STORE(pnpm store パスの競合)が発生する場合、プロファイルの~/.dsh/profiles/web/.npmrcにstore-dir=あなたの pnpm store パス(例:C:/Users/<あなた>/AppData/Local/pnpm/store/v11)を書き込みます。dsh plugin addのインストールが失敗する場合は、手動でインストールできます:~/.dsh/profiles/webでpnpm add --store-dir <上記と同じ store パス> link:C:/path/to/dsh-mcpを実行し、dsh-mcpをそのプロファイルのdsh.profile.bundlesリストに追加してから再起動します。実行環境要件:Node ≥ 22.19(package.json engines)。
使用方法
「設定」を開き、サイドバーで「MCP」を選択してサーバー管理ページに移動します。
「サーバー」タブ:サーバーを追加(フォームまたは「JSON から追加」、stdio では起動コマンド/引数/環境変数を入力、 または Streamable HTTP / SSE では URL/リクエストヘッダーを入力)、「テスト」をクリックして接続を検証。「ツール数」をクリックしてツールを一覧表示。 編集時はフォームに保存済みのパラメータ/環境変数が自動的にプリフィルされ、「JSON を表示」に切り替えて完全な設定を表示・コピーすることもできます。
セッションバーのタイトル行で「MCP」セレクターをクリックし、このセッションで接続するサーバーをチェック(または「すべて有効」/「どれにも接続しない」をクリック)、 即時反映——そのセッションのモデルは対応する
mcp__…ツールを呼び出せます。「設定 → MCP → セッション接続」タブでも同様に調整できます。サーバーが Bearer 認証を必要とする場合:サーバーを編集し、HTTP/SSE フォームで「OAuth ブラウザー認証を有効にする」をオンにし、 保存後、リストで「認証」をクリック——ブラウザーで認証ページが開き、完了すると自動的に接続されます(トークンは
~/.dsh/dsh-mcp-oauth/<id>.jsonに保存)。「認証をクリア」で再認証できます。セッション内でエージェントに「MCP サーバーは何がありますか?」と直接尋ねると、
mcp_listで回答します。
セキュリティモデル
設定(stdio 環境変数、Authorization などの HTTP ヘッダー)は平文でローカルのプライベートファイル
~/.dsh/dsh-mcp.jsonに保存されます——dsh-ssh のパスワード保存と同じ信頼モデルです。リスト API はキー値を返しません。 ただし「編集詳細」API(loopback 限定)のみ、フォームのプリフィルと「JSON 表示」のために完全な設定を返します。編集時に保存済みのパラメータと環境変数を誤ってクリアしないようにするためです。stdio トランスポートは、ホストプロセスの権限でユーザー設定のコマンドを起動します。MCP ツールの出力はそのまま返され、機密情報が含まれる可能性があります。
OAuth トークン(アクセス/リフレッシュトークンと PKCE verifier)は平文で
~/.dsh/dsh-mcp-oauth/<serverId>.json(0600)に保存されます——設定ファイルと同じ信頼モデルです。認証コールバックは 127.0.0.1 のループバックポートで待ち受け、ローカルマシンからのみアクセス可能です。コールバックは固定ポート3085で待ち受け(使用中はランダム ポートにフォールバック)し、dsh 再起動後も登録済みクライアントが一致し、invalid redirect_uriが発生しません。 ポートの変更を検出すると、古い登録を自動的にクリアして再登録します。すべての
/api/dsh-mcp/*ルートは loopback のみに制限されています(LAN への露出防止)。
開発
pnpm install
pnpm run typecheck # tsc --noEmit
pnpm test # vitest(store / bridge / engine 端到端)
pnpm run build # tsc 声明 + tsdown(lib/index.js + lib/client.js)エンジンのエンドツーエンドテストでは、実際に stdio MCP サーバーの子プロセスを起動し、接続、ディスカバリー、スコープ登録、呼び出し転送を検証します。
既知の制限
taskSupport: requiredを必要とする MCP ツールはサポートされていません(ブリッジ層が拒否してエラーを返します)。画像タイプのツール結果はテキストプレースホルダーにダウングレードされます(添付ファイルストレージには接続されません)。
サーバー名を変更してもツール名には影響しません(ツール名は
idを名前空間として使用)。サーバーを削除すると接続が切断され、すべてのセッション選択からも削除されます。
バージョン履歴
0.2.0:OAuth ブラウザー認証の改善——認証パネル(外部ブラウザーで完了、自動検出)、コールバック固定ポート 3085、 ポート変更時の自動再登録(
invalid redirect_uriを修正)、サーバー削除時のトークン同期削除、認証ボタンは常に表示(再認証可能)、 認証完了時の自動再接続(verifier スナップショットにより古い接続の上書きを防止、接続 401 で自動的に認証フローを開始してユーザーフローを妨げない)、 セッションバーセレクターのドロップダウン自動調整で切り取り防止、mcp_listの出力とスキーマの整合。0.1.0:基本バージョン——サーバーリストの追加/削除/編集/有効無効/テスト、セッション単位の接続選択、セッションごとのスコープツール登録、 切断時の再接続、ツールリストのホット同期、SSE トランスポート対応、JSON 一括追加、編集時のプリフィル/JSON 表示。
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceAggregates multiple MCP servers behind a single, secure endpoint with unified tool/resource discovery, OAuth authentication, and resilient request routing. Enables users to manage and interact with multiple MCP backends through one centralized interface with load balancing and circuit breakers.2
- AlicenseNot gradedqualityBmaintenanceAggregates multiple backend MCP servers into a single unified interface with optional web management UI for tool control and configuration.45192MIT
- AlicenseNot gradedqualityAmaintenanceAggregates multiple MCP servers into a single HTTP endpoint with tool namespacing, dashboard, and REST API for management.30MIT
- AlicenseNot gradedqualityCmaintenanceAuthenticating reverse proxy for MCP servers providing credential isolation, OAuth2 token management, and composite tool aggregation.BSD Zero Clause
Related MCP Connectors
OAuth scope approvals and consent receipts for remote MCP servers.
The official MCP Server from Mia-Platform to interact with Mia-Platform Console
MCP server for managing Prisma Postgres.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/zeneone/dsh-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server