- Home
- Plugins
- Tools & Capabilities
- dsh-mcp-link
dsh-mcp-link
zdkcomeon/dsh-mcp-link
Scans MCP configurations from local AI clients and project workspaces, imports selected servers into the active DSH profile, and provides JSON import and visual add, edit and removal controls.
Install
dsh plugin --profile web add github:zdkcomeon/dsh-mcp-linkREADME
dsh-mcp-link
在 DeepSeek Harness 中集中查看本机 MCP 配置,并将选中的服务接入当前 DSH profile。
dsh-mcp-link 是一个 DSH 插件,提供左侧导航入口和设置页入口,支持扫描系统 MCP 配置、按来源切换、扫描项目工作区、JSON 导入、图形化新增、编辑和移除。
DSH 0.2+ · Node.js 22.19+ · MIT License
npm: dsh-mcp-link · GitHub: zdkcomeon/dsh-mcp-link
发版说明:RELEASE_NOTES.md

目录
功能
- 统一入口:左侧导航中的
MCP 链接直接打开主面板;设置 → MCP 链接打开同一份内容。 - 系统配置扫描:读取 Cursor、Claude Code、Codex CLI、Gemini CLI、VS Code 等客户端的 MCP 配置。
- 来源导航:系统 MCP 按来源显示为顶部标签页,点击应用名称切换,下方只展示当前来源的服务。
- 已链接识别:根据传输方式、命令参数或 URL 判断服务是否已经接入 DSH,并在列表中显示
已链接。 - 一键接入:把选中的配置写入当前 profile 的
cordis.patch.yml,由 DSH Loader 加载。 - 项目 MCP:从 DSH 左侧工作区列表多选工作区,扫描项目内的
.mcp.json、.cursor/mcp.json、.vscode/mcp.json等文件;也支持添加自定义路径。 - 新增 MCP:支持粘贴 JSON 导入,或在图形表单中填写连接信息。
- 编辑 MCP:修改服务名、传输方式、命令、参数、工作目录、环境变量、URL、请求头和工具调用超时。
- 配置保留:表单未覆盖的字段会原样保留;未修改的
!!js表达式保留原标签。 - 移除 MCP:删除当前 profile patch 中由本插件插入的条目,不修改源配置。
- 项目变量替换:
${workspaceFolder}、${workspaceRoot}、${projectPath}、${cwd}会替换为项目路径。
界面预览
以下截图来自测试 profile,实际显示的工作区、来源和 profile 名称以本机为准。点击图片可以查看原图。
编辑已接入 MCP
| 编辑 MCP | 新增 MCP |
|---|---|
![]() | ![]() |
JSON 导入与图形配置
| JSON 导入 | 图形配置 |
|---|---|
![]() | ![]() |
支持的来源
| 来源 | 默认路径 | 格式 |
|---|---|---|
| Claude Desktop | macOS ~/Library/Application Support/Claude/claude_desktop_config.json;Windows %APPDATA%\Claude\...;Linux ~/.config/Claude/... | mcpServers |
| Claude Code | ~/.claude.json,项目 .mcp.json | mcpServers、projects[].mcpServers |
| Cursor | ~/.cursor/mcp.json,项目 .cursor/mcp.json | mcpServers |
| VS Code | Code User 目录 mcp.json,项目 .vscode/mcp.json | servers / mcpServers |
| Windsurf | ~/.codeium/windsurf/mcp_config.json | mcpServers |
| Codex CLI | ~/.codex/config.toml | [mcp_servers.*] |
| Gemini CLI | ~/.gemini/settings.json,项目 .gemini/settings.json | mcpServers |
| Cline | VS Code globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json | mcpServers |
| Roo Code | VS Code globalStorage/rooveterinaryinc.roo-cline/settings/mcp_settings.json,项目 .roo/mcp.json | mcpServers |
| Continue | ~/.continue/config.yaml、config.json | mcpServers |
| OpenCode | ~/.config/opencode/opencode.json,项目 opencode.json | mcp |
| Zed | ~/.config/zed/settings.json | context_servers |
| LM Studio | ~/.lmstudio/mcp.json | mcpServers |
缺失的文件会被跳过。文件存在但读取或解析失败时,页面会显示该来源的错误,不影响其他来源。
环境要求
- DeepSeek Harness
0.2.0-rc.2及以上;已在 DSH0.2.1-rc.2的 desktop 和 web profile 上验证。 - Node.js
22.19及以上,用于本地构建和测试。 - pnpm 11,用于安装依赖和构建。
安装
从本地目录安装
dsh plugin --profile desktop add /absolute/path/to/dsh-mcp-link
Web profile 使用 --profile web:
dsh plugin --profile web add /absolute/path/to/dsh-mcp-link
安装会把这个包加入 profile 的 dsh.profile.bundles,并在 profile 目录中建立依赖。新增 bundle 后需要重启 DSH;只修改 cordis.patch.yml 时,HMR 会热加载。
从 npm 或 Git 安装
dsh plugin --profile desktop add dsh-mcp-link
dsh plugin --profile desktop add github:zdkcomeon/dsh-mcp-link
从 Git 安装时由 prepare 执行构建。pnpm 默认会拦截依赖的构建脚本,需要先在 profile 的构建许可中允许 dsh-mcp-link。也可以先在本地构建,再通过本地路径安装:
pnpm install
pnpm build
从源码构建
pnpm install
pnpm build
lib/ 是构建产物,不进入 Git 仓库。
使用
打开页面
- 点击左侧导航中的
MCP 链接,在主面板中打开。 - 或打开
设置 → MCP 链接。
两个入口共用同一个控制器和状态,新增、编辑、移除和刷新会同步。
接入系统 MCP
- 在
系统已有 MCP顶部的来源标签中选择 Cursor、Codex CLI、Gemini CLI 等。 - 找到要接入的服务,点击
接入 DSH。 - 确认 DSH 服务名后点击
接入。 - 接入成功后,服务会出现在
已接入 DSH,新的 MCP 工具在新会话中可用。
来源标签会显示该来源的服务数量。已经接入的服务会在标签右侧显示绿色圆点,并在列表中显示 已链接。
接入项目 MCP
- 在
项目 MCP中点击选择工作区。 - 从 DSH 左侧工作区列表中勾选一个或多个工作区。
- 勾选变化后自动重新扫描项目内的 MCP 配置。
- 下拉底部的
添加自定义路径可以扫描未登记为工作区的目录。
项目来源中的 workspace 占位符会自动替换为项目路径。其他 ${...} 占位符需要先在源配置中补全。
新增 MCP
点击 已接入 DSH 右上角的 新增 MCP,选择一种方式:
- JSON 导入:支持单个服务对象、只含一个条目的
mcpServers映射,或 DSHmcp-client配置。解析成功后会显示服务名、传输方式、命令或 URL、环境变量和请求头预览。 - 图形配置:填写服务名、传输方式、命令、启动参数、工作目录、环境变量、URL、请求头和工具调用超时。
保存时会校验服务名冲突、命令、URL、超时和键值重复。写入后等待 Loader 加载新配置;启动失败会回滚新增条目。
编辑与移除
编辑会读取当前 profile patch 中该条目的配置。非敏感值回填到表单,敏感值不返回浏览器,留空表示保留当前值。- 未知字段(例如
reconnect、failOnStartupError)会保留。 移除只删除当前 profilecordis.patch.yml中由本插件插入的行。来自 home patch、bundle 或其他配置层的条目会显示为不可移除。
实现说明
数据流
- Host 扫描系统配置和项目配置,解析为统一的 MCP 服务模型。
- 浏览器通过认证的
/api/mcp-setting/*接口读取扫描结果。 - 用户接入、新增或编辑时,Host 重新读取源配置或表单数据,写入当前 profile 的
cordis.patch.yml。 - DSH Loader 监听 patch 变化并加载新的 MCP 条目。
- 页面在写入后刷新扫描结果,并显示
已生效或重启后生效提示。
HTTP 接口
所有接口注册在 DSH 的 /api 认证通道下:
| 方法 | 路径 | 用途 |
|---|---|---|
GET | /api/mcp-setting/scan | 读取 DSH、系统和项目 MCP 配置 |
POST | /api/mcp-setting/link | 接入一条系统或项目 MCP |
POST | /api/mcp-setting/unlink | 移除当前 profile 中由本插件插入的条目 |
GET / PUT | /api/mcp-setting/projects | 读取或保存扫描的项目路径 |
GET / PUT / POST | /api/mcp-setting/entry | 读取详情、编辑、新增 MCP |
配置写入
- 写入目标为当前 profile 的
cordis.patch.yml,顶层是 YAML 数组。 - 接入和新增会追加一个
@deepseek-ai/dsh-mcp-client条目;编辑会更新对应条目;移除会删除对应条目。 - 使用 YAML AST 修改,保留文件中的注释、缩进和未修改的
!!js标量。 - 写入使用临时文件替换,文件权限为
0600。 - 新条目启动失败时,插件会尝试回滚这次写入。
安全
- 接口和页面同源,沿用 DSH 的浏览器 Cookie 认证以及 Host/Origin 校验。
- 扫描结果中的环境变量和请求头只返回键名以及是否为敏感键;原始值保留在 Host 进程内。
- URL 中的用户名、密码和敏感查询参数在返回浏览器前脱敏。
- 编辑时敏感值不回传。留空表示保留原值,输入新值才会替换。
- JSON 导入中的 env/header 值会作为普通字符串写入 profile patch。如果 JSON 包含真实令牌,请确认导入内容。
- Host 日志只记录条目 id、操作结果等诊断信息,不记录环境变量和请求头的值。
限制
- 只支持 DSH
@deepseek-ai/dsh-mcp-client支持的stdio和streamable-http。SSE 配置显示为不可接入。 - 配置中包含
${input:...}等未解析占位符时不可接入;项目来源的 workspace 变量会自动替换。 - 源配置中
disabled: true的条目不可接入。 - 只有当前 profile patch 中由本插件插入的条目可以编辑或移除。
- 同名但连接参数不同的 DSH 条目会显示
名称冲突;接入时会生成带数字后缀的建议名,也可以在弹窗中手动修改。 - 写入配置后依赖 DSH HMR。HMR 未启用时,页面会提示重启后生效。
- 不处理 MCP OAuth、凭据交互和 SSE。
- 已选工作区路径保存在
$DSH_HOME/mcp-setting/state.json,只在本机使用。
开发
pnpm install
pnpm build # tsc 产出 Host 与类型,esbuild 产出 lazy-CJS 的 lib/client.js
pnpm typecheck
pnpm test
pnpm verify # build + typecheck + test
构建产物
lib/index.js:Host 半。lib/client.js:浏览器半,包装为window.__ModuleLoader__.load({ id, factory })。lib/types/**:类型声明。
调试
- 本地调试可以用
link:方式把目录安装到 profile。 - 修改 Host 代码后重启 DSH。
- 修改
lib/client.js后刷新页面,或依赖客户端 HMR。
目录
src/index.ts Host 插件入口
src/protocol.ts 前后端共用协议
src/host/actions.ts 接入、新增、编辑、移除动作
src/host/patch.ts YAML patch 读写与 AST 修改
src/host/routes.ts 认证 HTTP 路由
src/host/scan.ts 系统与项目 MCP 扫描
src/host/parsers.ts 各客户端配置解析
src/host/sources.ts 来源与路径定义
src/host/state.ts 项目路径状态
src/client/index.tsx 浏览器插件入口
src/client/Section.tsx MCP 管理页面
src/client/EntryEditor.tsx 新增与编辑表单
src/client/JsonImportDialog.tsx JSON 导入弹窗
src/client/import-json.ts JSON 配置归一化
src/client/WorkspaceSelect.tsx 工作区多选
src/client/controller.ts 页面状态与接口调用
src/client/styles.ts 页面样式
tests/ Node 单元测试
docs/screenshots/ README 截图
cordis.patch.yml 插件 bundle 的配置行
License
MIT
Related plugins
archify (deepseek-harness)
tt-a1i/archify
WeKnora (dsh-weknora)
tencent/weknora
weknora
tencent/weknora
BrowserSkill (dsh-plugin-browserskill)
tencent/browserskill



