Atlas / MCP servers / xiajiajun516 / dsh-config-manager

dsh-config-managerBLOCK

mcp/xiajiajun516/dsh-config-manager

DeepSeek Harness (DSH) backup & restore plugin — export, import, migrate and sync your complete DSH configuration, plugins, MCP servers, skills and workspace. One-click migration to another machine.

Verdict
BLOCK
Grade
F
Trust score
55 /100
Exposed tools
15 13r · 2w · 0d
Transport
streamable-http
License
MIT
Stars
184
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

[](https://www.npmjs.com/package/dsh-config-manager) [](https://www.npmjs.com/package/dsh-config-manager) [](https://github.com/xiajiajun516/dsh-config-manager/stargazers) [](https://github.com/xiajiajun516/dsh-config-manager/blob/main/LICENSE) [](https://github.com/deepseek-ai/deepseek-harness)

DeepSeek Harness Backup, Restore & Migration Plugin.

Backup, restore, export, import, migrate and sync your complete DeepSeek Harness (DSH) configuration — settings, model providers, plugins, MCP servers, skills, agent presets and workspaces — and restore your whole environment on a new machine with one click.

  • 🔄 Backup & Restore DeepSeek Harness configuration
  • 📦 Export / Import complete DSH configuration
  • 🚚 Migrate DSH to another machine
  • ⏰ Scheduled full backups — automatic, on your own cadence (6h / 12h / 24h / 7d / custom weekly), secrets never included
  • 🔌 Backup installed plugins and plugin configuration
  • 🧩 Backup MCP servers and Skills
  • 🔐 Encrypted backups with optional credentials
  • ☁️ Git / WebDAV configuration sync
  • 🛒 Configuration market — browse & one-click install shared configs
  • 🧳 Import from other AI agents — Claude Code, Cursor, Codex, Hermes, Antigravity ... config and chat history
  • ↩️ Automatic snapshot and rollback before restore

English · 简体中文

What is this? 🤔

DSH is your AI assistant workbench — it holds your settings: model configs, plugins, skills, workspaces...

DSH Config Manager is its "moving service":

┌──────────────┐   1 one-click    ┌
Read from source at commit 3547ae2a72d4OBSERVED · 2026-10-12
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add dsh-config-manager --env PASSWORD=${PASSWORD} --env TEST_USER_PASSWORD=${TEST_USER_PASSWORD} -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "dsh-config-manager": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "PASSWORD": "${PASSWORD}",
        "TEST_USER_PASSWORD": "${TEST_USER_PASSWORD}"
      }
    }
  }
}
03

Exposed tools (15)

13 read · 2 write · 0 destructive.

ToolRiskDescription
badreadd
browser-skillread浏览器操作
config_backupread全量备份 DSH 配置到本地 exports 目录(默认不含 secret;可传 password 加密导出)。返回 ZIP 文件名/大小/分区清单/加密状态。
config_list_snapshotsread列出 DSH 配置的本地回滚快照(id / 创建时间 / 来源 / 状态 / 条目数),供后续 config_restore 使用。
config_restoreread恢复到指定快照。默认只返回动作计划(零写入);确认要真实执行时传 confirm:true(会覆盖/删除 $DSH_HOME 文件并卸载导入期间新增插件,属破坏性操作,务必先预览)。
config_sync_pullwrite拉取远端同步差异预览(Git/WebDAV,零写入:只下载 + 分析出差异报告,绝不直接写配置)。若要落地差异需另走确认导入管道。
config_sync_pushwrite手动推送 DSH 配置同步到远端(Git/WebDAV),复用已持久化的通道配置。写远端属主动操作;加密/含凭据须传 password 且引擎强制 encrypt。
goodreadd
hiddenreadd
my-reporead我的配置仓库
okreadd
plainreadit
reverse-skillread逆向工程技能
skillsread外壳技能
weirdreadd
04

Trust audit

BLOCKgrade F · trust 55/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (4 observation(s))
Network
none-observed
Shell
declared (5 observation(s))
Dependencies
not all pinned
Secrets in source
found

Findings (25)

HIGHCode injection · code.deserialize · CWE-78, CWE-94, CWE-95
src/foreign/kernel.ts:91
parsed = yaml.load(fm.raw);
Why it matters. deserialises untrusted bytes into live objects
Fix. use json or yaml.safe_load
HIGHCode injection · code.deserialize · CWE-78, CWE-94, CWE-95
src/foreign/read-cursor.ts:173
parsed = yaml.load(fm.raw);
Why it matters. deserialises untrusted bytes into live objects
Fix. use json or yaml.safe_load
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
src/cli/actions.ts:1519
await exec(step.command)
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
src/cli/index.ts:867
await exec(step.command);
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
src/ui/release-notes-prompt.ts:1
/**
MEDIUMHard-coded secrets · secret.anthropic · CWE-798, CWE-321
src/foreign/claude-code.test.ts:92
const SECRET = 'sk-ant-SUPERSECRET-TOKEN-1234567890';
MEDIUMHard-coded secrets · secret.anthropic · CWE-798, CWE-321
src/security/secret-scanner.test.ts:107
['openai-style-key', 'sk-ant-api03-AbCdEf0123456789aBcDeF'],
MEDIUMHard-coded secrets · secret.aws · CWE-798, CWE-321
src/security/secret-scanner.test.ts:113
['aws-access-key', 'AKIA0123456789ABCDEF'],
MEDIUMHard-coded secrets · secret.aws · CWE-798, CWE-321
src/security/secret-scanner.test.ts:115
['aws-access-key', 'AWS_KEY=AKIA0123456789ABCDEF'],
MEDIUMHard-coded secrets · secret.aws · CWE-798, CWE-321
src/security/secret-scanner.test.ts:116
['aws-access-key', '"AKIA0123456789ABCDEF"'],
MEDIUMHard-coded secrets · secret.aws · CWE-798, CWE-321
src/security/secret-scanner.test.ts:170
const AKIA = 'AKIA0123456789ABCDEF';
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
src/adapters/roundtrip.test.ts:26
value: { apiKeyEnv: 'DEEPSEEK_API_KEY', baseURL: 'https://api.deepseek.com', model: 'deepseek-chat', apiKey: 'sk-super-secret-value-123' },
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
src/client/run-store.test.ts:899
patch.token = 'SENTINEL-GIT-TOKEN-8f3a'
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
src/core/consult-source.test.ts:27
value: { apiKeyEnv: 'DEEPSEEK_API_KEY', baseURL: 'https://api.deepseek.com', model: 'deepseek-chat', apiKey: 'sk-super-secret-value-123' },
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
src/core/consult-source.test.ts:88
const settingsJson = JSON.stringify({ version: 1, namespaces: { llm: { value: { apiKey: 'sk-plaintext-secret-1234567890' } } } });
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
src/core/migration-history.test.ts:189
const secret = 'a1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f6';
MEDIUMHard-coded secrets · secret.github · CWE-798, CWE-321
src/foreign/cursor.test.ts:53
'ghp_CURSOR_FIXTURE_TOKEN_DO_NOT_SHIP',
MEDIUMHard-coded secrets · secret.github · CWE-798, CWE-321
src/foreign/fixtures/cursor/basic/.cursor/mcp.json:6
"env": { "GITHUB_TOKEN": "ghp_CURSOR_FIXTURE_TOKEN_DO_NOT_SHIP", "PLAIN": "ok" }
MEDIUMHard-coded secrets · secret.github · CWE-798, CWE-321
src/market/git-file-writer.test.ts:17
const TEST_TOKEN = 'gho_abcdefghijklmnopqrstuvwxyz123456';
MEDIUMHard-coded secrets · secret.github · CWE-798, CWE-321
src/market/github-repos.test.ts:49
const token = options.token ?? 'gho_abcdefghijklmnopqrstuvwxyz123456';
MEDIUMHard-coded secrets · secret.github · CWE-798, CWE-321
src/security/redaction.test.ts:31
'github_pat_11ABCDEFG0123456789_abcdefghijklmnopqrstuvwxyz0123456789',
MEDIUMHard-coded secrets · secret.private_key · CWE-798, CWE-321
src/security/redaction.test.ts:32
'-----BEGIN RSA PRIVATE KEY-----',
MEDIUMHard-coded secrets · secret.private_key · CWE-798, CWE-321
src/security/redaction.test.ts:33
'-----BEGIN OPENSSH PRIVATE KEY-----',
MEDIUMHard-coded secrets · secret.private_key · CWE-798, CWE-321
src/security/redaction.test.ts:84
{ input: '-----BEGIN EC PRIVATE KEY-----', expectMasked: '-----BEGIN EC PRIVATE KEY-----' },
MEDIUMHard-coded secrets · secret.private_key · CWE-798, CWE-321
src/security/secret-scanner.test.ts:124
['pem-private-key', '-----BEGIN RSA PRIVATE KEY-----'],

Gates applied: no_behavioural_pass.

Audited 2026-10-12 · audit v0.4.1 · source sha 3547ae2a72d4full audit observations/trust-audit/mcp-server/xiajiajun516__dsh-config-manager.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-123547ae2a72d4BLOCKF55first audit
06

Questions

What is the dsh-config-manager MCP server?

DeepSeek Harness (DSH) backup & restore plugin — export, import, migrate and sync your complete DSH configuration, plugins, MCP servers, skills and workspace. One-click migration to another machine.

What tools does dsh-config-manager expose?

15 in total: 13 read-only, 2 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is dsh-config-manager safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (55/100) and found 4 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does dsh-config-manager need?

It reads PASSWORD and TEST_USER_PASSWORD from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does dsh-config-manager run?

It speaks streamable-http, so it runs as a service you connect to over the network. It is published on npm as dsh-config-manager at 0.1.71.

How current is this page?

The grade is for one exact copy of the source (3547ae2a72d4), read on 2026-10-12. The repository is watched and re-audited when it changes.

Advertisement