Skip to main content
Glama

dsh-cordis-mcp

Das dynamische Cordis-Werkzeugset von DeepSeek Harness wird über MCP (Streamable HTTP) für Claude Code freigegeben: Claude Code kann DSH-dynamische Plugins in Echtzeit laden, definieren, ausführen, aktualisieren, stoppen, löschen – genau dieselben Fähigkeiten und derselbe Laufzeit-Agent, wie wenn du in einer DSH-Session cordis_define / cordis_run / cordis_stop / cordis_undefine / cordis_inspect_* verwendest.

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

Das Plugin hängt am vorhandenen Web-Port, öffnet keinen neuen Port und veröffentlicht keinen Dienst; der MCP-Endpunkt erzwingt die Bearer-Authentifizierung. Das Token wird auf der Seite DSH-Einstellungen → dsh-cordis-mcp konfiguriert (beim ersten Mal automatisch generiert, kann angepasst/neu generiert werden).

Fähigkeiten (10 Tools)

MCP-Tool

Entsprechendes DSH-Tool

Funktion

dsh_status

—

Brückenstatus: Session-Auflösung, Liste aktiver Sessions, Plugin-Anzahl

dsh_sessions

—

Listet verwaltbare aktive DSH-Sessions (Plugins sind Sessions zugeordnet)

dsh_plugins_list

cordis_inspect_self (ohne Argumente)

Listet alle dynamischen Plugins der Ziel-Session und deren Status

dsh_plugin_inspect

cordis_inspect_self (mit Argumenten)

Plugin-/Paketdetails; mit packageId wird der Quellcode zurückgegeben

dsh_inspect_providers

cordis_inspect_list

Inspect-Provider-Verzeichnis (Host + Client)

dsh_inspect_query

cordis_inspect_query

Führt eine schreibgeschützte Inspect-Abfrage aus (Dienste/Ereignisse/Built-ins/Slots/Themen/Tool-Verzeichnis)

dsh_plugin_define

cordis_define

Definiert ein unveränderliches Package (neues Plugin oder zusätzliche Version)

dsh_plugin_run

cordis_run

Aktiviert ein Package (run / update), kann awaiting-approval zurückgeben

dsh_plugin_stop

cordis_stop

Stoppt die Ausführung, bricht ausstehende Genehmigungen ab, behält Definition und Versionen

dsh_plugin_undefine

cordis_undefine

Löscht das Plugin dauerhaft (einschließlich aller Packages, Autorisierungen und Versionszeiger)

Pakete mit Client-Hälfte durchlaufen beim ersten Start weiterhin den Genehmigungsprozess von DSH: dsh_plugin_run gibt awaiting-approval zurück. Nachdem du auf der Run-Karte im DSH-Web-GUI „Erlauben“ geklickt hast, wird asynchron abgeschlossen – genau wie in einer DSH-Session.

Related MCP server: engine

Ein-Klick-Installation

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

Was das Skript tut (mit --dry-run vorab anzusehen):

  1. Schreibt die Abhängigkeit "dsh-cordis-mcp": "github:GeekRicardo/dsh-cordis-mcp" in ~/.dsh/profiles/web/package.json;

  2. Fügt dsh-cordis-mcp zu dsh.profile.bundles hinzu;

  3. cd ~/.dsh/profiles/web && pnpm install;

  4. Prüft, dass die Bundles registriert sind, und weist auf einen Neustart hin.

Nach einem Neustart von DSH und einem Hard-Refresh der Seite ist der MCP-Endpunkt zusammen mit dem Web-Dienst bereit:

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

Anbindung an Claude Code

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

Authentifizierung (erzwungen, keine direkte Verbindung)

Der MCP-Endpunkt erzwingt die Bearer-Authentifizierung: Ohne Token wird immer 401 zurückgegeben (falls kein Token konfiguriert ist: 503). Das Token wird auf der Seite DSH-Einstellungen → dsh-cordis-mcp konfiguriert: Beim ersten Gebrauch automatisch generiert und persistent gespeichert; die Seite ermöglicht das Anzeigen/Kopieren/Anpassen/Neugenerieren. Trage das Token in den Request-Header von .mcp.json ein:

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

Token-Auflösungspriorität: Konfiguration der Einstellungsseite > DSH_MCP_TOKEN-Umgebungsvariable > automatisch generiert. Ein geändertes Token wird sofort wirksam (kein Neustart nötig); nach der Neugenerierung verliert das alte Token sofort seine Gültigkeit und die Claude-Code-Konfiguration muss entsprechend aktualisiert werden.

Session-Semantik (wichtig)

Dynamische Plugins sind Sessions zugeordnet und liegen im Prozessspeicher (werden beim DSH-Neustart geleert). Die Session-Auflösung der Brücke erfolgt in dieser Reihenfolge:

  1. sessionId aus den Aufrufparametern (über dsh_sessions abfragbar);

  2. festgelegt durch die Umgebungsvariable DSH_MCP_DEFAULT_SESSION;

  3. die aktuell einzige aktive Session;

  4. mehrere aktive Sessions ohne Angabe → Fehler mit Auflistung der Optionen; das Übergeben von sessionId ist erforderlich.

Weitere Umgebungsvariablen

Variable

Standard

Beschreibung

DSH_MCP_PATH

/mcp

MCP-Endpunktpfad (am webServer aufgehängt)

DSH_MCP_TOKEN

Keine

Fallback-Quelle für das Authentifizierungs-Token (wird verwendet, wenn auf der Einstellungsseite nicht konfiguriert)

DSH_MCP_DEFAULT_SESSION

Keine

Ziel-Session, wenn sessionId nicht explizit übergeben wird

Sicherheitsgrenzen

  • Erzwungene Bearer-Authentifizierung: Ohne Token immer 401 bzw. 503, wenn kein Token konfiguriert ist; der Endpunkt kann nie direkt verbunden werden;

  • akzeptiert nur Loopback-Hosts (127.* / localhost / ::1) und lehnt jeglichen externen Zugriff ab;

  • lehnt Browseranfragen mit sec-fetch-site: cross-site ab und gibt niemals CORS-Header zurück – Webseiten können die Antwort nicht lesen;

  • die Route der Einstellungsseite /dsh-cordis-mcp/settings erlaubt nur Same-Origin-Loopback (ohne MCP-Token; geändert wird nur die Token-Konfiguration selbst);

  • der Endpunkt kann Plugins definieren/ausführen/löschen – entspricht Shell-Berechtigungen. Setze den Port nicht für andere als lokale Geräte frei.

Funktionsweise

Datei

Aufgabe

lib/mcp-protocol.js

Reine MCP-JSON-RPC-Schicht (initialize / ping / tools/list / tools/call), null DSH-Abhängigkeiten

lib/tools.js

Eingabevalidierung der 10 Tools + Session-Auflösung; kapselt dynamicCordisRunner / cordisInspect

lib/token.js

Reine Token-Auflösung/-Generierung (Einstellungen > env > automatisch generiert)

lib/http.js

HTTP-Schicht der MCP-Route: erzwungene Authentifizierung, Body-Lesen, Loopback-/Cross-Site-Schutz

lib/index.js

Cordis-Plugin: injiziert 5 Host-Dienste, Settings-Namespace, die Routen /mcp + /dsh-cordis-mcp/settings

lib/client.js

UI der Einstellungsseite: Token anzeigen/kopieren/anpassen/neu generieren + Endpunktadresse

Deinstallation

# 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

Voraussetzungen

  • DeepSeek Harness hat ein Web-Profil initialisiert (~/.dsh/profiles/web existiert), und die aktuelle Session läuft auf einem Preset mit dem Cordis-Toolset (der Host-Dienst dynamicCordisRunner existiert; standardmäßig vorhanden);

  • die Claude-Code-CLI ist auf diesem Rechner installiert und angemeldet;

  • Node.js ≥ 20 und pnpm sind verfügbar.

Fehlerbehebung

Symptom

Ursache und Behandlung

claude mcp list zeigt disconnected

DSH nicht neu gestartet / Port falsch. Suche nach dem Neustart im DSH-Startprotokoll nach der Zeile [dsh-cordis-mcp] MCP endpoint ready und verwende die ausgegebene Adresse.

dsh_plugin_run gibt awaiting-approval zurück

Pakete mit Client-Hälfte benötigen deine Freigabe auf der Run-Karte im DSH-Web-GUI; führe nach der Autorisierung dsh_plugin_run erneut aus.

Meldung multiple live DSH sessions

Es gibt mehrere aktive Sessions; frage zuerst mit dsh_sessions die ID ab und übergib dann sessionId im Aufruf.

Meldung no live DSH session

Im DSH-Web-GUI ist keine Session geöffnet; öffne eine und versuche es erneut.

401 / missing or invalid bearer token

Das Token in .mcp.json ist abgelaufen oder falsch – kopiere das aktuelle Token von der Einstellungsseite und aktualisiere es.

503 / auth-not-configured

Der Host hat kein Token initialisiert (anormaler Zustand) – speichere auf der Einstellungsseite ein beliebiges Token oder starte DSH neu.

Plugin nach Neustart verschwunden

Dynamische Plugins liegen im Prozessspeicher, das ist erwartet; diese Brücke verwaltet nur den laufenden DSH-Prozess.

Lizenz

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