Skip to main content
Glama

dsh-cordis-mcp

DeepSeek Harness の動的 Cordis ツールセットを MCP(Streamable HTTP)として Claude Code に公開します。Claude Code は DSH の動的プラグインをリアルタイムにロード、定義、実行、更新、停止、削除できます。DSH セッションで cordis_define / cordis_run / cordis_stop / cordis_undefine / cordis_inspect_* を使うのとまったく同じ能力、同じランタイムエージェントです。

┌─────────────┐   MCP (Streamable HTTP, loopback)   ┌───────────────────────────┐
│ Claude Code │ ────── http://127.0.0.1:8090/mcp ──▶ │ DSH host (本插件)           │
│  (claude)   │ ────── JSON-RPC 2.0 ───────────────▶ │  dynamicCordisRunner      │
└─────────────┘                                       │  cordisInspect            │
                                                      │  agents (会话解析)         │
                                                      └───────────────────────────┘

プラグインは既存の Web ポートにマウントされ、新しいポートを開いたりサービスを公開したりしません。MCP エンドポイントはBearer 認証を必須とし、トークンは DSH 設定 → dsh-cordis-mcp ページで設定します(初回は自動生成され、カスタマイズ/再生成が可能です)。

機能(10 ツール)

MCP ツール

対応 DSH ツール

説明

dsh_status

—

ブリッジ状態: セッション解決、ライブセッション一覧、プラグイン数

dsh_sessions

—

管理可能なライブ DSH セッションを一覧表示(プラグインはセッション単位)

dsh_plugins_list

cordis_inspect_self(無引数)

対象セッションの全動的プラグインと状態を一覧表示

dsh_plugin_inspect

cordis_inspect_self(引数あり)

プラグイン/パッケージの詳細。packageId を指定するとソースコードを返す

dsh_inspect_providers

cordis_inspect_list

Inspect プロバイダディレクトリ(host + client)

dsh_inspect_query

cordis_inspect_query

読み取り専用の inspect クエリを 1 回実行(サービス/イベント/ビルトイン/スロット/テーマ/ツールディレクトリ)

dsh_plugin_define

cordis_define

不変 Package を定義(新規プラグイン作成またはバージョン追加)

dsh_plugin_run

cordis_run

Package をアクティベート(run / update)。awaiting-approval を返す場合あり

dsh_plugin_stop

cordis_stop

実行を停止し、未承認の承認をキャンセル。定義とバージョンは保持

dsh_plugin_undefine

cordis_undefine

プラグインを完全削除(全 Package、認可、バージョンポインタを含む)

Client half を含むパッケージの初回実行は、引き続き DSH の承認フローを経由します。dsh_plugin_run は awaiting-approval を返し、DSH Web GUI の Run カードで許可をクリックすると非同期に完了します——DSH セッション内と同じです。

Related MCP server: engine

ワンクリックインストール

curl -fsSL https://raw.githubusercontent.com/GeekRicardo/dsh-cordis-mcp/main/install.sh | bash

スクリプトが行うこと(事前に --dry-run でプレビュー可能):

  1. ~/.dsh/profiles/web/package.json に依存関係 "dsh-cordis-mcp": "github:GeekRicardo/dsh-cordis-mcp" を書き込む。

  2. dsh-cordis-mcp を dsh.profile.bundles に追加する。

  3. cd ~/.dsh/profiles/web && pnpm install を実行する。

  4. bundles が登録されたことを検証し、再起動を促す。

DSH を再起動してページをハードリフレッシュすると、MCP エンドポイントが Web サービスとともに利用可能になります:

pm2 restart dsh-web   # 若用 pm2 托管;否则用你的启动方式重启

Claude Code への接続

# 端口换成你 DSH web 的实际端口(启动日志会打印完整地址)
claude mcp add dsh --transport http http://127.0.0.1:8090/mcp
claude mcp list          # 确认 connected

認証(必須、直接接続不可)

MCP エンドポイントはBearer 認証を必須とし、トークンがない場合はすべて 401(トークン未設定の場合は 503)を返します。トークンは DSH 設定 → dsh-cordis-mcp ページで設定します。初回使用時に自動生成されて永続化され、ページで表示/コピー/カスタマイズ/再生成が可能です。トークンを .mcp.json のリクエストヘッダーに記入します:

{
  "mcpServers": {
    "dsh": {
      "type": "http",
      "url": "http://127.0.0.1:8090/mcp",
      "headers": { "Authorization": "Bearer <设置页里的 token>" }
    }
  }
}

トークンの解決優先順位: 設定ページの設定 > DSH_MCP_TOKEN 環境変数 > 自動生成。トークンを変更すると即座に有効になります(再起動不要)。再生成後は古いトークンが即座に無効になるため、Claude Code の設定も同期して更新する必要があります。

セッションセマンティクス(重要)

動的プラグインはセッション単位で、プロセスのメモリ状態です(DSH を再起動すると消去されます)。ブリッジのセッション解決順序:

  1. 呼び出しパラメータの sessionId(dsh_sessions で確認可能)。

  2. 環境変数 DSH_MCP_DEFAULT_SESSION で指定。

  3. 現在の唯一のライブセッション。

  4. ライブセッションが複数あるが未指定の場合 → エラーで選択肢を列挙し、sessionId を渡すよう要求。

その他の環境変数

変数

デフォルト

説明

DSH_MCP_PATH

/mcp

MCP エンドポイントのパス(webServer にマウント)

DSH_MCP_TOKEN

なし

認証トークンのフォールバック元(設定ページで未設定の場合に使用)

DSH_MCP_DEFAULT_SESSION

なし

sessionId を明示的に渡さない場合の対象セッション

セキュリティ境界

  • Bearer 認証を必須:トークンがない場合はすべて 401 / 503。エンドポイントは常に直接接続不可。

  • loopback Host(127.* / localhost / ::1)のみ受け入れ、外部からのアクセスはすべて拒否。

  • sec-fetch-site: cross-site のブラウザリクエストを拒否し、CORS ヘッダーは決して返さない——Web ページはレスポンスを読み取れない。

  • 設定ページのルート /dsh-cordis-mcp/settings は同一オリジンの loopback のみ許可(MCP トークンは不要だが、変更できるのはトークン設定自体のみ)。

  • このエンドポイントはプラグインの define/run/削除が可能で、シェル権限と同等です。ポートをローカル以外に公開しないでください。

動作原理

ファイル

役割

lib/mcp-protocol.js

純粋な MCP JSON-RPC レイヤー(initialize / ping / tools/list / tools/call)。DSH 依存ゼロ

lib/tools.js

10 ツールの入力検証 + セッション解決。dynamicCordisRunner / cordisInspect をラップ

lib/token.js

純粋なトークン解決/生成(設定 > env > 自動生成)

lib/http.js

MCP ルートの HTTP レイヤー: 必須認証、body 読み取り、loopback/クロスサイト保護

lib/index.js

Cordis プラグイン: 5 つのホストサービス、settings 名前空間、/mcp + /dsh-cordis-mcp/settings の 2 つのルートを注入

lib/client.js

設定ページ UI: トークンの表示/コピー/カスタマイズ/再生成 + エンドポイントアドレス

アンインストール

# 1. 从 ~/.dsh/profiles/web/package.json 的 dsh.profile.bundles 移除 "dsh-cordis-mcp"
# 2. 移除 dependencies 里的 "dsh-cordis-mcp"
# 3. cd ~/.dsh/profiles/web && pnpm install
# 4. 重启 DSH;claude mcp remove dsh

前提条件

  • DeepSeek Harness が web profile を初期化済み(~/.dsh/profiles/web が存在)で、現在のセッションが Cordis ツールセット付きの preset で動作していること(ホスト側の dynamicCordisRunner サービスが存在。デフォルトで有り)。

  • ローカルに Claude Code CLI がインストールされ、ログイン済みであること。

  • Node.js ≥ 20、pnpm が利用可能であること。

Troubleshooting

現象

原因と対処

claude mcp list が disconnected を表示

DSH が再起動されていない / ポートが正しくない。再起動後、DSH 起動ログの [dsh-cordis-mcp] MCP endpoint ready の行を探し、表示されたアドレスを使う

dsh_plugin_run が awaiting-approval を返す

Client half を含むパッケージは DSH Web GUI の Run カードで許可する必要がある。承認後、dsh_plugin_run を再実行

multiple live DSH sessions エラー

ライブセッションが複数ある。まず dsh_sessions で id を確認し、呼び出しで sessionId を渡す

no live DSH session エラー

DSH Web GUI でセッションが開かれていない。開いてから再試行

401 / missing or invalid bearer token

.mcp.json のトークンが期限切れまたは誤っている。設定ページで現在のトークンをコピーして更新

503 / auth-not-configured

ホストがトークンを初期化していない(異常状態)。設定ページで任意のトークンを保存するか、DSH を再起動

プラグインが再起動後に消える

動的プラグインはプロセスのメモリ状態であり、想定通り。このブリッジは実行中の DSH プロセスのみを管理する

License

MIT

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Exposes self-owned AI agent plugins as tools to Claude Code via a stdio MCP server, allowing Claude to call system info, calculator, or scribe transcriber directly.
    3
    MIT