{"_id":"@ctl456/dsh-mcp-manager","name":"@ctl456/dsh-mcp-manager","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@ctl456/dsh-mcp-manager","version":"0.1.0","description":"Unofficial DeepSeek Harness plugin: add, remove, enable and disable external MCP servers from the Web settings page or from chat, so the harness calls their tools as native tools","keywords":["dsh-plugin","deepseek-harness","mcp","model-context-protocol"],"license":"MIT","type":"module","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/ctl456/dsh-mcp-manager.git"},"homepage":"https://github.com/ctl456/dsh-mcp-manager#readme","bugs":{"url":"https://github.com/ctl456/dsh-mcp-manager/issues"},"main":"lib/index.js","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/types/client/index.d.ts","default":"./lib/client.js"},"./src/*":"./src/*","./package.json":"./package.json"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-settings","@deepseek-ai/dsh-client-ui-renderer","@deepseek-ai/dsh-api-remotes"],"platform":"web"}},"scripts":{"sync":"bash scripts/sync-from-harness.sh","rename":"node scripts/set-package-name.mjs","verify:install":"bash scripts/verify-install.sh","release:check":"node scripts/verify-release.mjs","prepublishOnly":"node scripts/verify-release.mjs"},"dependencies":{"@deepseek-ai/schemastery":"^3.18.2"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-mcp-client":"^0.1.5-rc.2","@deepseek-ai/dsh-settings":"^0.1.5-rc.2","@deepseek-ai/dsh-tools":"^0.1.5-rc.2","@deepseek-ai/dsh-util-values":"^0.1.5-rc.2"},"gitHead":"b1e0e0f428757885c6d790b0f563b9fe8d2d0e70","_id":"@ctl456/dsh-mcp-manager@0.1.0","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-oIILUvn1cJW/VlPf9Y/x5FmC+algr5smjYSRa0V1SK1Tt+TtPN5JWzsYVkpigsqKw7zIwbPIIj3EuufIl1dRzA==","shasum":"c03fd003ae31c8b5622cc351a506ab51a5a6e199","tarball":"https://registry.npmjs.org/@ctl456/dsh-mcp-manager/-/dsh-mcp-manager-0.1.0.tgz","fileCount":15,"unpackedSize":89838,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDSYXU5mA2OtmcUABy9qpE6jjIOdQmRNx60SuccJUxhbAIgWuWM38Vz2nO/s5kL1iioZz23D2ThCpCUPlMmccSBe58="}]},"_npmUser":{"name":"ctl456","email":"707454446@qq.com"},"directories":{},"maintainers":[{"name":"ctl456","email":"707454446@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-mcp-manager_0.1.0_1789223097977_0.5544677558086473"},"_hasShrinkwrap":false}},"time":{"created":"2026-09-12T14:24:57.793Z","0.1.0":"2026-09-12T14:24:58.128Z","modified":"2026-09-12T14:24:58.340Z"},"maintainers":[{"name":"ctl456","email":"707454446@qq.com"}],"description":"Unofficial DeepSeek Harness plugin: add, remove, enable and disable external MCP servers from the Web settings page or from chat, so the harness calls their tools as native tools","homepage":"https://github.com/ctl456/dsh-mcp-manager#readme","keywords":["dsh-plugin","deepseek-harness","mcp","model-context-protocol"],"repository":{"type":"git","url":"git+https://github.com/ctl456/dsh-mcp-manager.git"},"bugs":{"url":"https://github.com/ctl456/dsh-mcp-manager/issues"},"license":"MIT","readme":"# dsh-mcp-manager\n\n[English](README.md) | 中文\n\n一个**非官方**的 DeepSeek Harness 插件，用来管理外部\n[MCP](https://modelcontextprotocol.io) 服务器：在 Web 设置卡片或对话里新增、删除、\n启用和停用，之后 harness 就能像调用内置工具一样调用它们的工具。\n\n> 本项目与 DeepSeek 无隶属关系，也未获得其认可或支持。归属说明见\n> [NOTICE.md](NOTICE.md)，许可条款见 [LICENSE](LICENSE)。\n\n## 它做什么\n\n- 维护一份外部 MCP 服务器清单，为每个启用条目挂载一个 `dsh-mcp-client` 连接。\n- 把每个启用服务器的工具注册为原生工具 `mcp__<服务器>__<工具>`，模型可直接调用。\n- 新增、删除、启用、停用都无需编辑 YAML，也无需重启 Host。\n- 给小白一个 Web 表单，而不是一个配置文件。\n\n## 环境要求\n\n- 已安装 DeepSeek Harness 与 `dsh` CLI，版本 `0.1.5-rc.2` 或兼容版本。插件把所接入\n  的 harness 包声明为 peer 依赖（`@deepseek-ai/dsh-mcp-client`、`dsh-settings`、\n  `dsh-tools`、`dsh-util-values`、`@deepseek-ai/cordis`），安装目标 profile 必须已\n  经提供它们，随附的 `web` profile 即是如此。\n- 安装过程需要网络，以便 npm 解析这些 peer 依赖。\n\n## 安装\n\n```sh\ndsh plugin --profile web add @ctl456/dsh-mcp-manager\ndsh --profile web\n```\n\n任意 profile 都可以，`web` 是带 Web UI 的那个。卸载：\n\n```sh\ndsh plugin --profile web remove @ctl456/dsh-mcp-manager\n```\n\n也可以安装打包好的 tarball 或本地 checkout，而不走 registry：\n\n```sh\nnpm pack                                   # 生成 dsh-mcp-manager-<版本>.tgz\ndsh plugin --profile web add file:/绝对路径/dsh-mcp-manager-0.1.0.tgz\n```\n\n## 在 Web UI 中使用\n\n打开 **设置 → MCP 服务器** —— 设置导航里的独立页面，位于 **Agent 预设** 下方。\n\n![首次打开 MCP 服务器页面：空列表上方是筛选框和添加服务器按钮](docs/images/mcp-servers-card.zh.png)\n\n| 字段 | 含义 |\n|---|---|\n| 名称 | 工具命名空间：模型以 `mcp__<名称>__<工具名>` 调用该服务器的工具。只能使用英文字母、数字、下划线或连字符，1-32 个字符。 |\n| 连接方式 | **本地程序（stdio）** 会启动一个命令；**远程服务（HTTP）** 会连接 Streamable HTTP 端点。 |\n| 命令 / 参数 / 环境变量 / 工作目录 | 仅 stdio。参数每行一个，环境变量每行一个 `名称=值`；工作目录留空则继承 Host 的当前目录。 |\n| 服务地址 / 请求头 | 仅 HTTP。请求头每行一个 `名称: 值`。 |\n| 单次调用超时（毫秒） | 可选；留空使用 60000。 |\n\n点击 **添加服务器** 会弹出对话框；选择 **远程服务（HTTP）** 后，stdio 字段会\n换成 **服务地址** 和 **请求头**。\n\n![选择远程服务（HTTP）后的添加对话框，显示服务地址和请求头字段](docs/images/mcp-servers-http.zh.png)\n\n填好字段后按 **添加**。页面列出每个已配置服务器的连接目标、**启用** 或 **停用**\n开关，以及 **删除**；添加已存在的名称会覆盖该条目。列表每页显示五条，筛选框\n同时匹配名称和连接目标。\n\n![添加 filesystem 服务器后的页面：该行显示 stdio 目标以及停用、删除操作](docs/images/mcp-servers-configured.zh.png)\n\n## 在对话中管理服务器\n\n`mcp_manager_list` 读取当前清单；`mcp_manager_add`、`mcp_manager_remove` 和\n`mcp_manager_set_enabled` 修改它。每次调用都返回最新清单，包含每个服务器的传输\n方式、连接目标、启用状态、连接状态、工具和配置问题，因此你可以直接让模型新增\n服务器，而不必填写表单。\n\n## 配置存放位置\n\n卡片和工具编辑的是同一份 `$DSH_HOME/settings.yaml` 中的 `mcp-manager` 节。\n`cordis.patch.yml` 里的 `servers` 数组是组合配置的基础种子层，因此 profile 或\n`--patch` overlay 可以预配置服务器，而设置文档始终是最终生效的值。\n\n## 限制\n\n- 管理器只桥接工具；不支持 MCP resources 和 prompts。\n- 环境变量和请求头中的凭据以明文设置值保存，因此请优先使用 shell 已导出的变量，\n  并在服务器支持时按名称引用它们。\n- 卡片展示的是配置，不是实时连接健康状态；连接状态请通过 `mcp_manager_list` 获取。\n\n## 重新构建随包产物\n\n`lib/` 与 `src/` 是在 DeepSeek Harness 仓库内构建的，因为上游构建链与工作区耦合：\n宿主 bundle 来自仓库根 `tsdown` 配置加 Typert 代码生成插件，浏览器 bundle 来自\n`packages/client/tsdown.client.ts` 及其辅助模块。因此不支持脱离 harness 独立构建。\n\n```sh\ngit clone https://github.com/deepseek-ai/deepseek-harness\ncd deepseek-harness && pnpm install && pnpm run build\ncd /path/to/dsh-mcp-manager\nscripts/sync-from-harness.sh /path/to/deepseek-harness\n```\n\n该脚本会刷新 `lib/`、`src/` 和 `cordis.patch.yml`，重新应用本仓库的包名，并把\nharness 版本与 commit 写入 `PROVENANCE.md`。\n\n## 发布前自检\n\n```sh\nnpm run verify:install\n```\n\n它会打包 tarball、检查包内文件、用 `dsh plugin add file:<tarball>` 装进一个临时\nprofile，并断言组合出的 profile 树里出现 `mcp-manager` 行。这道关卡区分了\n“用 `link:` 从 checkout 能跑”和“用户按正常方式安装能跑”。\n\n## 发布\n\n`package.json` 里的 `version`、`v<版本号>` 的 git tag 和 `CHANGELOG.md` 顶部\n那一节是绑在一起走的；推送 tag 会运行 `.github/workflows/release.yml`，版本在\nnpm 上还不存在时发布它，并创建 GitHub Release。完整流程（tag 规范、发布清单、\nnpm token 配置）见 [RELEASING.zh.md](RELEASING.zh.md)。\n\n## 许可\n\nMIT，保留上游版权声明 —— 见 [LICENSE](LICENSE) 与 [NOTICE.md](NOTICE.md)。\n","readmeFilename":"README.zh.md","_rev":"1-1176a717f54778231cbb2a57b44b46af"}