Evidence snapshot reviewed Sep 9, 2026GitHub checked Aug 21, 2026
Evidence-verifiedPlugin BundleIntegrations & ConnectionsWeb Profile

dsh-mcp-panel

A DeepSeek Harness web console for inspecting, configuring, and trial-calling MCP servers.

At a glance

What it does

A DeepSeek Harness web console for inspecting, configuring, and trial-calling MCP servers.

Use cases
Integrations & ConnectionsConfiguration
Works with
Deepseek HarnessMCPCordis
Compatibility

Web Profile
>=0.1.2-rc.1 <0.2.0, including declared 0.1.2-rc.1 and 0.1.5-alpha.1

Trust & status

Evidence-verified
Checked Sep 9, 2026, 2:21 PM UTC

Code-evidenced contributions

What it adds to DSH

Web UIMCP management panel

Adds a Settings → Plugins → MCP tab for server status, diagnostics, configuration fragments, and tool trials.

Mechanism evidence
Model Tools/mcp command

Lists configured MCP servers and supports tool listing, health guidance, and trial calls through the official tool pipeline.

Mechanism evidence

Before you choose it

dsh-mcp-panel adds an MCP tab under Settings → Plugins and a /mcp command. It shows configured server status, tool counts, diagnostics, and reconnect information; it can generate server add, edit, or disable patch fragments and trial-call MCP tools through the official tool pipeline.

Best for

DeepSeek Harness users who operate MCP servers and want a visual status and configuration surface instead of editing every server row by hand.

Common tasks

  • Inspect configured MCP servers, their tools, status, errors, and reconnect counts.
  • Generate and review append-only profile-patch fragments for adding, editing, or disabling an MCP server.
  • Run a selected MCP tool with JSON arguments through the official tool pipeline.
  • Use an optional Streamable HTTP connectivity probe or background passive probes.

Permissions and data

The manifest declares outbound network access and no native code. The plugin may make approval-gated profile-patch writes when enabled.

Permissions
  • network:outbound
  • native-code:none
Data handling
  • The supplied documentation says URL credentials, passwords, header values, bearer tokens, and JWTs are redacted before rendering.
  • The supplied documentation says configured headers do not enter snapshots and editor views expose header keys rather than values.
  • Profile changes are described as append-only patch operations with backups.
External services
  • Configured MCP servers and optional Streamable HTTP probe endpoints.
Credentials
  • No plugin-specific credential requirement is declared; credentials may be part of a configured MCP server and should be handled carefully.

Limitations

  • Resources and Prompts are described as pending upstream support; the official bridge currently covers tools.
  • Some connection fields can remain unknown when upstream observations are unavailable.
  • The supplied evidence does not demonstrate a successful installation, runtime test, or actual network call.
  • The package declares a prepare lifecycle script.

What DSHub checked

  • The pinned source commit, bundle manifest, and Cordis patch structure were verified.
  • The manifest declares a web client surface, outbound-network permission, Node requirement, and DeepSeek Harness peer-dependency ranges.
  • The package is Apache-2.0 licensed.

What DSHub did not check

  • Installation, hot reload, profile-write behavior, probes, tool trials, and diagnostics were not executed during this curation.

Pinned install

Install dsh-mcp-panel

This plugin bundle does not have a DSH Plugin install action. Use its source documentation for the delivery method.

Visit the source project

Maintainer source

Project README

View at commit 8bee136
Maintainer-authored contentCaptured from README.md on Sep 9, 2026. The text and repository-relative media are fixed to commit 8bee136c3135 with content hash 05c73dd395e5; provider-hosted badges may update independently. README commands are upstream documentation; the DSHub copy action above is the verified, version-pinned install.
<div align="center">

dsh-mcp-panel

  • 1024 store channel: npm i -g dsh1024 once, then dsh1024 plugin --profile web add dsh-mcp-panel (counts toward the deepseek1024.com install ranking). Gitee

The MCP management console for the official DeepSeek Harness MCP client — add, edit, remove, and trial-call MCP servers from a settings page, with honest status, health diagnostics, and safe, reversible profile writes.

Official client = bridge, this plugin = console: read status through the mcp/status seam, write only append-only, approval-gated profile patches.

Official repository. This is the only official repository of dsh-mcp-panel, maintained by PerryLink. Same-name repositories under other accounts are not affiliated.

License DSH plugin dsh-doctor Node CI Version npm version npm downloads

English · 简体中文 · Español · Português · हिन्दी

</div>

Compatibility

Surface Status
Harness DeepSeek Harness dsh-v0.1.5-alpha.1 (GitHub tag, verified 2026-09-09) (adapted 2026-09-09): the session envelope keeps its ignorable field for stored-log read compatibility only - Session.append still cannot stamp it, so audit-gate behavior is unchanged. Verified 2026-09-09 against the dsh-v0.1.5-alpha.1 master checkout (full gate chain + profile install smoke).
Node ^22.19.0 || >=24.0.0
Platforms Web GUI (dual-face: host + browser)
Model Any (the panel is read-only; only /mcp output is model-readable)

What you get

dsh-mcp-panel is the experience layer on top of the official MCP client: a read-only runtime view plus safe, reversible profile writes.

  • /mcp command — one row per server: transport, target, tool count, connection status (from the upstream seam; unknown when unobserved), last error, reconnect count — model-readable, session-log reconstructable, five output languages.
  • /mcp <server> tools — model-visible mcp__* tool names and descriptions.
  • /mcp <server> health — derived self-heal suggestions (ENOENT → missing dependency, ECONNREFUSED, timeouts, 401/403/404, DNS, rate limit, reconnect exhaustion…); exit code / stderr tail honestly labeled pending upstream support until the client exposes them.
  • /mcp <server> call <tool> [json] — trial-call through the official tool pipeline (ctx.tools.execute()); pre-execute permission policy, approval, guards, and post-execute all apply.
  • Settings → Plugins → MCP tab — status cards with badges, diagnostics, and probes, plus the server CRUD and the tool trial console.
  • Server CRUD — add/edit/remove forms → insert/set/set disabled fragments → clipboard copy or approval-gated write with automatic backups.
  • Recommended directory — a built-in community MCP server catalog (filesystem, git, github, fetch, playwright, …) served in the snapshot; catalogEntries appends/overrides entries, and catalogToConfigInput turns one into a one-click add.
  • Config import/exportexportConfigs() serializes the server rows to a versioned JSON document (a !!js row exports as null with a reason), and importPreview() parses an export back into per-server add patch fragments for review.
  • Tool trial console — server → mcp__* tool → JSON args → canonical JSON result + rendered content; capped by trialMaxResultChars; panel-only, never model context.

Architecture: official client = bridge, this plugin = console

@deepseek-ai/dsh-mcp-client is the only bridge: one plugin instance per MCP server, configured as a hand-written cordis.yml row, connecting the transport, syncing tools, and registering mcp__<server>__<tool> names. This plugin never replaces it — it is the experience layer on top:

                    ┌────────────────────────────────────────────┐
 profile            │  cordis.yml / cordis.patch.yml             │
 composition        │   - id: mcp-github                          │
 (one row per       │     name: '@deepseek-ai/dsh-mcp-client'     │
  server, hand-     │     config: { serverName, transport, … }    │
  written)          │   - id: mcp-panel                           │
                    │     name: dsh-mcp-panel   ◄── this plugin   │
                    └───────────────┬────────────────────────────┘
                                    │
        ┌───────────────────────────┴───────────────────────────┐
        │                                                        │
   ┌────▼──────────────┐        ┌───────────────────────────┐    │
   │ @deepseek-ai/dsh- │        │ dsh-mcp-panel (console)   │    │
   │ mcp-client        │        │                           │    │
   │ • transport       │        │ • /mcp command            │    │
   │ • tool sync       │        │ • Settings → Plugins →    │    │
   │ • mcp__* tools    │◄──────►│   MCP tab: CRUD, trial    │    │
   │ • mcp/status seam │ status │ • health diagnostics      │    │
   └───────────────────┘        │ • probes, capabilities    │    │
                                └───────────────────────────┘    │

The console reads the client through its proposed mcp/status observability seam (not yet shipped upstream; feature-detected) (event + mcpStatus query service), the tool registry, and the loader; it writes only the profile's patch layer — append-only, approval-gated, always backed up. Transport, OAuth, and protocol stay untouched.

Console vs. hand-written cordis.yml

Hand-written cordis.yml dsh-mcp-panel console
Add a server Edit YAML, mind indent/quoting Form → patch fragment → copy or write (approval + auto backup)
Edit a server Edit YAML, restart/hot-reload Form pre-filled from the live row; unchanged secrets keep their raw values host-side
Remove a server Delete the row set disabled: true operation (the patch vocabulary has no remove) — re-enableable anytime
See status Read logs Badges + reconnects + last error, live from the mcp/status seam
Try a tool Ask the model to call it Trial console → official ctx.tools.execute() pipeline (permission & approval stay in force)
Diagnose failures Grep logs /mcp <server> health with derived self-heal suggestions
Mistakes Manual revert Every write is append-only and leaves a timestamped backup

The console's output IS cordis.patch.yml vocabulary — the same lines you would write by hand, generated, previewed, and applied safely.

Quick start

# 1. install the bundle into your profile
dsh plugin --profile web add "github:PerryLink/dsh-mcp-panel#main"

# or from npm (published releases)
dsh plugin --profile web add dsh-mcp-panel

# 2. restart and verify the row
dsh --profile web --dump-config | grep -A3 'id: mcp-panel'

Then open Settings → Plugins → MCP, or run:

/mcp
/mcp everything tools
/mcp everything health
/mcp everything call echo '{"message": "hi"}'

Install & uninstall

  • git channel (latest main): dsh plugin --profile web add "github:PerryLink/dsh-mcp-panel#main" — the prepare script builds with production dependencies only.
  • npm channel (published releases): dsh plugin --profile web add dsh-mcp-panel.
  • tarball channel: pnpm pack in this repo, then dsh plugin --profile web add ./dsh-mcp-panel-<version>.tgz.
  • uninstall: remove the mcp-panel row from cordis.patch.yml (the web surface hot-reloads it), delete the package from the profile's node_modules, and verify with dsh web --dump-config that no mcp-panel row remains.

Configuration

All tunables are Schemastery Config fields (changeable from cordis.yml). cordis.patch.yml documents each key inline.

Key Default Meaning
probeEnabled true Register the mcp_probe background-job tool (panel-only results)
probeTimeoutMs 10000 Per-probe timeout in ms
maxProbes 10 Probe records shown in the panel
refreshIntervalMs 0 Suggested panel refresh in ms; 0 = on demand
outputLanguage en /mcp output language: en | zh | es | pt | hi
passiveProbeEnabled false Periodically probe streamable-http servers
passiveProbeIntervalMs 60000 Passive probe interval in ms
trialEnabled true Tool trial console (settings tab + /mcp call)
trialTimeoutMs 120000 Panel-side deadline per trial call in ms
trialMaxResultChars 60000 Cap on the trial result payload in chars
writeEnabled true Kill switch: false rejects every profile write (copy still works)
backupCount 5 cordis.patch.yml backups retained per write
catalogEntries [] User overlay for the recommended server directory: entries append, an entry with the same id replaces the built-in one

Tools & surfaces

Surface Kind Notes
/mcp command Per-server status row; model-readable and log-reconstructable
/mcp <server> tools command Model-visible mcp__* tool names + descriptions
/mcp <server> health command Derived self-heal suggestions from sanitized error text
/mcp <server> call <tool> [json] command Trial-call through the official tool pipeline
mcp_probe tool Optional Streamable HTTP connectivity probe (background job)
Settings → Plugins → MCP tab UI slot Status cards, server CRUD, and the tool trial console
mcpPanel Typert Remote service Read-only snapshot channel (host → client)

Resources & Prompts

The official client documents that "Tools are the only bridged MCP capability" — Resources and Prompts are deferred. The console feature-detects a proposed upstream catalog seam and will show read-only lists the day it ships; until then the capabilities board marks both pending upstream support.

Permissions & data

  • Permissions: the dshWorkshop manifest declares network:outbound and native-code:none.
  • Data: the panel is read-only; it writes only append-only cordis.patch.yml fragments (approval-gated, backup-first). URL query credentials, userinfo passwords, header values, bearer tokens, and JWTs are redacted before rendering; configured headers never enter any snapshot, and env/header values never leave the host (the editor sees keys only).

Security boundaries

  • The bridge stays the bridge. No transport, OAuth, or protocol changes; one mcp-client row per server, exactly as hand-written.
  • No fake status. Connection fields without upstream observations read unknown / with statusSource: 'derived'; exit codes and stderr tails are never invented.
  • Writes are append-only, approval-gated, and backed up. The console never rewrites cordis.patch.yml; it appends generated operations and keeps the newest backupCount backups.
  • No prompt injection. The panel registers no prompt sections; its only model-facing text is the two tool/command descriptions.

Known limitations

  • Resources & Prompts are pending upstream support — the official client bridges tools only.
  • Exit codes / stderr tails are labeled pending upstream support until the client exposes them.
  • Read-only panel — the console never fakes a connection state; unobservable fields read unknown / -1 / .

Development

pnpm run typecheck && pnpm run typecheck:ci && pnpm test && pnpm run build && pnpm run verify:self-contained && pnpm run verify:artifacts && pnpm pack

scripts/verify-headless.mjs boots the real web profile and prints the exact /mcp output. Releases: node scripts/release.mjs <x.y.z> runs the full gate, commits, and tags v<x.y.z> locally (never pushes).

Topics

dsh, dsh-plugin, deepseek-harness, deepseek, cordis, mcp, mcp-client, observability, panel

Contributors

  • @PerryLink — creator and maintainer.
  • @xiaoyuyu6420 — diagnosed the missing client devDependencies behind clean-checkout build failures (PR #5).
  • @feiler0 — contributed the stdio MCP server probe (one MCP initialize handshake over stdin/stdout) (PR #7, merged as PR #15).

PerryLink DSH Plugin Family

This project is one of the 37 DeepSeek Harness plugins maintained by PerryLink. If this one helps you, the others likely will too:

Plugin One-liner
dsh-auto-review Second-model auto-review on the approval chain, fail-closed by default
dsh-background-agents Durable background child agents with a Web UI sidebar, messaging and interrupt
dsh-budget Cost governance for DeepSeek Harness: budgets, carbon, and latency in one panel.
dsh-checkpoint-rewind Claude Code /rewind-equivalent: snapshots, session forks, one-shot restore
dsh-claude-move Migrate Claude Code sessions, memory, skills and CLAUDE.md into DSH
dsh-click Cross-platform native desktop control for DeepSeek Harness — Windows first.
dsh-composer-history Terminal-style input history for the web composer: arrows, Ctrl+R search
dsh-data-quality Dataset quality checks and citation cross-checks (the optional numeric bridge consumed here)
dsh-defend Prompt-injection, jailbreak, and secret-leak defense for DeepSeek Harness.
dsh-doublecheck Engineering-discipline guard: requirements grill, test gates, adversary review
dsh-draw Unified static-image generation routing for DeepSeek Harness.
dsh-fast Read-only performance diagnostics for DeepSeek Harness.
dsh-fund-research Deterministic research reports for Chinese public mutual funds
dsh-github GitHub PR/issues integration for DSH, every write gated by approval
dsh-industry-research Industry research orchestration that seals its deliverables through this plugin's ctx.researchReport.assemble
dsh-library Local document knowledge base for DeepSeek Harness.
dsh-local-ai Local-model (Ollama) integration for DeepSeek Harness.
dsh-lsp-actions LSP diagnostics, formatting, completion, code actions and rename over language servers
dsh-mask PII masking middleware: anonymize at the model boundary, restore at the display layer
dsh-memento Approval-gated cross-session memory: ctx.memory seam + SQLite + memory tool
dsh-observe OpenTelemetry and Langfuse observability exporter for DeepSeek Harness.
dsh-output-styles Claude Code outputStyles-equivalent runtime style switching
dsh-permission-rules Claude Code-style declarative allow/deny/ask permission rules with audit
dsh-personal-directive Personal directive injector with top-bar toggle (framework edition)
dsh-plugin-guide Plugin-development knowledge base as an on-demand agent skill
dsh-reach Multi-channel approval/question bridge: WeChat/Telegram/Feishu, session console
dsh-research-report Verifiable research-report engine: content-addressed evidence ledger and sealed versions
dsh-score Multi-dimensional quality scoring for DeepSeek Harness plugins.
dsh-session-pin Pin sessions in the Web sidebar with durable ordering
dsh-session-sync Cross-device session sync for DeepSeek Harness — a dedicated git mirror of your session store.
dsh-skill-pack-security Security-audit skill pack: secret scan, dependency and supply-chain review
dsh-talk Voice-first session loop for DeepSeek Harness: talk to it, hear it answer.
dsh-test-drive Isolated install-and-smoke test drives for DeepSeek Harness plugins.
dsh-ticktick TickTick/Dida365 task bridge: session-header panel + 11 tools
dsh-translate Vendor parameter translation and deterministic JSON repair for DeepSeek Harness.
dsh-wechat WeChat ↔ DSH bridge (Tencent iLink bot): text/image/file/voice, approvals in chat

Install from the DSH Desktop Market

All PerryLink plugins are browsable in the built-in DSH Desktop Market: Market → Sources → add source → paste https://perrylink-dsh-catalog.perrylink.workers.dev/catalog-source.json → select it. Installation still goes through the Market's npm-identity verification and your confirmation.

License

Apache License 2.0 © 2026 dsh-mcp-panel contributors

Operate deliberately

Install and manage

Prerequisites and target Profile

Target Web Profile

Delivery Dsh Bundle Git — PerryLink/dsh-mcp-panel#8bee136c3135f2f77bff36567bd1d47e01ac2827

Verify, update, and remove

Show lifecycle commands
Verify
dsh plugin --profile web list

Compatibility and access

Declared DeepSeek Harness web plugin compatibility >=0.1.2-rc.1 <0.2.0, including declared 0.1.2-rc.1 and 0.1.5-alpha.1

Review compatibility evidence

Risk facts

Network

Declares outbound network access for MCP connectivity probes and server interactions.

Evidence
Profile Write

Can append approval-gated MCP configuration patches and retain backups when profile writes are enabled.

Evidence
Evidence and editorial reviewManifest, Bundle patch, distribution and freshness

Immutable evidence

Review status and source activity

AI reviewed

Use the pinned source for review. Treat generated profile patches and trial tool calls as actions requiring your normal approval and endpoint review.

AI reviewed Sep 9, 2026, 2:22 PM UTCGitHub facts last checked Sep 9, 2026, 2:22 PM UTC

No material source change has been recorded since this evidence baseline.

Next step

Follow the Plugin installation workflow

Subscribe to material changes for dsh-mcp-panel