dsh-mcp-mgr Source Developer Guide

September 2, 2026 · View on GitHub

English | 中文

Use this workflow when modifying both deepseek-harness and this plugin from source. The two repositories may be anywhere; they do not need to be siblings or use fixed paths.

1. Configure the harness source once

Replace the placeholder with the absolute path of the deepseek-harness source checkout and run this once:

[Environment]::SetEnvironmentVariable('DSH_HARNESS_ROOT', '<deepseek-harness-source-root>', 'User')

Open a new terminal afterwards. This variable is used only by local profile install/uninstall; it is not used by this repository's build or regression commands.

2. Build this plugin

Set-Location '<dsh-mcp-mgr-source-root>'
pnpm install
pnpm run check

check includes the host/client builds, Typert generation, and verify regression.

3. Build the harness, install the local plugin, and start the source Web

Install dependencies and build deepseek-harness first:

Set-Location $env:DSH_HARNESS_ROOT
pnpm install
pnpm run build

Then return to the plugin source root and run:

Set-Location '<dsh-mcp-mgr-source-root>'
pnpm run profile:add

The command invokes the official source CLI through DSH_HARNESS_ROOT and dynamically passes the host/UI package directories from the current checkout. It does not depend on a fixed path.

Finally, start the source Web profile:

Set-Location $env:DSH_HARNESS_ROOT
pnpm dsh web

Go to Settings > Plugins and check the MCP server tab.

4. Local regression

This repository's build and regression commands do not require the harness source checkout:

Set-Location '<dsh-mcp-mgr-source-root>'
pnpm run check
pnpm exec node e2e/e2e.mjs
pnpm exec node e2e/apply-remove-settle.mjs

Expected markers: ALL PASS, E2E PASS, and SETTLE PASS.

5. Remove the local profile entries

Stop the Web process first, then run from the plugin source root:

pnpm run profile:remove

Build commands

Run all commands from this repository root:

pnpm install
pnpm run build
pnpm run verify

build, gen.mjs, and verify.mjs use the published npm dependencies and do not require DSH_HARNESS_ROOT or a deepseek-harness source checkout. Only profile:add and profile:remove use that variable to invoke the official source CLI.

After changing wire types in src/types.ts, rerun pnpm run build so the generated Typert artifacts and client codec stay synchronized.

Placeholder meanings:

  • <deepseek-harness-source-root>: the root directory of the deepseek-harness source checkout.
  • <dsh-mcp-mgr-source-root>: the root directory of this plugin source checkout.

See the design notes for implementation details.