Introduction¶
Developers using multiple agent tools often face a scattered configuration: MCP servers and Skills are scattered across ~/.claude, ~/.cursor, ~/.codex, while cc-switch stores them in ~/.cc-switch/cc-switch.db. To reuse these configurations in DeepSeek Harness (referred to as DSH below), one must manually copy them one by one according to their respective formats.
DSH’s philosophy is “everything is a plugin”. Community developer MayBeTheWorld wrote dsh-inherit to address this migration issue: it automatically detects the four sources mentioned above, performs a dry run before writing, and imports MCP servers and Skills into DSH with one click. Below is an introduction to its features, installation, and usage.
What is it¶
dsh-inherit is a DSH community plugin, currently version 0.1.0, in the Developer preview stage; it is under the MIT license and has no official affiliation with DeepSeek. It imports MCP servers and Skills from Claude Code / Cursor / Codex / cc-switch into DSH with one click. The entry point is Settings → General → Import Agent Settings.
It is a “two-sided plugin”, containing both sides in a single package:
- Host Side: Provides
/api/dsh-inherit/sourcesand/api/dsh-inherit/runinterfaces, restricted to loopback access only; - Browser Side: Inserts a row of entry (
settings.general.item) insettings.general, which opens a centered Modal when clicked.
Core Features¶
Automatic Source Detection and Multi-format Parsing¶
The plugin scans ~/.claude, ~/.cursor, ~/.codex, and cc-switch (~/.cc-switch/cc-switch.db, read via Node’s built-in sqlite), and reports what each source contains. The parsing layer covers three formats: mcpServers JSON, Codex TOML, and cc-switch sqlite.
Select by Source and Category¶
There is a card for each agent in the popup window, with a toggle on the right side. By default, all are turned on, so you can import everything with one click without any adjustments. After expanding the source card, you can select by category: MCP servers and Skills will be imported; instructions, memory, and providers are only detected and marked as such, not imported by this plugin; Sessions are not supported.
Support status for each source:
| Source | MCP | Skills | Instructions | Providers | Memory | Sessions |
|---|---|---|---|---|---|---|
| Claude Code | Importable | Importable | Detect Only | — | Detect Only | Not Supported |
| Cursor | Importable | Importable | Detect Only | — | Detect Only | Not Supported |
| Codex (TOML) | Importable | Importable | Detect Only | — | Detect Only | Not Supported |
| cc-switch (sqlite) | Importable | Importable | — | Detect Only | Detect Only | Not Supported |
The annotations are generated based on capability awareness: the plugin will detect the currently loaded plugins responsible for specific capabilities (e.g., dsh-cc-switch) and explain this in the report, so it is effective for forks and renamed plugins as well.
Two-step Safety: Dry Run First, Then Write¶
- Click “Import Selected (Dry Run)”: only outputs a dry-run report, categorized as imported / skipped / notes, does not write any files;
- Click “Confirm Write”: executes after confirming the report, actually writing to disk, automatically generating a
.bak-<timestamp>backup for the target file before writing.
The import is idempotent: servers/skills with the same name will be skipped, and will not be written repeatedly.
Write Location¶
- MCP servers are written to the current profile’s
cordis.patch.ymlas@deepseek-ai/dsh-mcp-clientrows, using the official composition layer; if~/.dsh/mcp.jsonis automatically detected, it will be written as a fallback to the target. - Skills are copied to
~/.dsh/skillsas SKILL.md directories, idempotently, skipping existing ones directly.
Installation and Usage¶
npm installation command (Note in original comment says “once published”, actual availability depends on the npm package):
# from npm (once published)
dsh plugin --profile web add dsh-inherit
If the npm package is not yet available, you can also install from a local checkout:
dsh plugin --profile web add "D:\path\to\dsh-inherit"
After installation, just open Settings → General → Import Agent Settings. The new bundle will hot-mount after a brief delay; if changes are made to the host module code, you need to restart dsh web.
Typical Usage¶
After the installation steps above, the daily import process is as follows:
- Open Settings → General → Import Agent Settings;
- The popup lists the detected sources, with toggles on the right defaulting to all on;
- Expand the source card and select by category (MCP / Skills …);
- Click “Import Selected (Dry Run)” to view the dry-run report (imported / skipped / notes);
- Click “Confirm Write” to apply it officially (backing up before writing).
If you only want to debug locally without writing to disk, you can directly use node --experimental-sqlite to run detectSources() and runImport(..., { target: 'patch', dryRun: true }):
node --experimental-sqlite -e "
import('./lib/import.js').then(m => {
console.log(JSON.stringify(m.detectSources(), null, 1).slice(0, 2000))
console.log(JSON.stringify(m.runImport([{source:'claude-code',categories:['mcp']}],{target:'patch',dryRun:true}), null, 1).slice(0, 800))
})"
This command only performs source scanning and dry-run import, writing nothing to any files.
Applicable Scenarios and Notes¶
Suitable scenarios: Using Claude Code / Cursor / Codex / cc-switch simultaneously and wanting to move existing MCP servers and Skills into DSH; hoping for an idempotent import with backups before writing.
Please note before use:
- This plugin is in Developer preview (0.1.0), is a community plugin, MIT licensed, and has no official affiliation with DeepSeek;
- The plugin runs with the permissions of the current dsh process; check the source code and license before installing;
- MCP credentials (env / headers) will be written in plaintext to
cordis.patch.ymlor~/.dsh/mcp.json; pay attention to file permissions;${VAR}references have not yet been converted to!!js process.env.VAR; - Server names must match
[A-Za-z0-9_-]{1,32}and be globally unique; MCP servers usingsse/wstransport will be skipped with a warning; - There are currently no doctor / restore commands; rolling back requires manual use of
.bakfiles; - Currently does not migrate hooks, slash commands, or sessions.
Summary¶
dsh-inherit focuses on a specific task: gathering MCP servers and Skills scattered across four tools into DSH, minimizing migration risk with a “dry run + confirmation” two-step process and .bak backups.
Project and Directory Pages:
- GitHub: https://github.com/MayBeTheWorld/dsh-inherit
- Community Directory: https://www.skillhub.cn/plugins/MayBeTheWorld/dsh-inherit (independent site, no official affiliation with DeepSeek / Huanfang)