AkotaP/dsh-mcp-glue ↗★ 0

dsh-mcp-glue

Session-isolated workspace MCP declarations for DeepSeek Harness with extensible presets and a composer management UI 适合需要管理和配置MCP服务器连接及权限的用户

Package
dsh-mcp-glue
Compatibility
Unverified
Version
0.3.0
License
MIT
Last updated
Oct 19, 2026

Install

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:AkotaP/dsh-mcp-glue

编辑配置(写声明文件)

MCP 小面板标题栏提供 +新建 / 管理;服务器名称与 ⋯ 可直达编辑。新建和编辑在独立大弹窗完成,左侧服务器列表始终保留;配置位置直接在表单里选择,默认优先本工作区上次使用的可写位置,其次项目配置。小面板保留「始终信任此工作区」快捷开关,逐台自动连接与权限策略放在管理弹窗。

  • 字段按连接方式显示:选择器在前。HTTP 只显示 url / headers;stdio 只显示 command / args / env / cwd。命令、URL、工作目录用单行;参数用多行(每行一个参数);环境变量与请求头默认逐行填写键和值,值默认遮掩,可切换高级 JSON 模式。已有条目也能补填原先不存在的字段;重复键或漏填键会阻止提交。
  • 连接方式与文件字段分开:root / vscode / cursor 用 type(stdio / http)。Gemini、Codex 也提供连接方式选择器,但仅用于筛选表单,不会写入不存在的 type;文件按命令或地址推断连接方式。自定义字段映射同样参与推断。
  • sse 不提供:加载器会以 UNSUPPORTED_SSE 直接拒绝整台服务器,所以插件在写入前就拦下这种值,而不是写进去再回滚。
  • 自定义预设怎么算:判断依据是预设的 dialect——不写就是 standard,于是有调用方式;写到哪个键由 fields.transport 决定(不写就是 type)。如果某个格式没有「调用方式」这个概念,把 fields: { transport: '' } 映射成空串即表示不支持,否则我们会往文件里写一个没人读的 type。
  • 切换连接方式自动清理:保存时删除旧方式的字段,包括旧的 URL / 请求头或命令 / 参数 / 环境变量 / 工作目录;切回去之前草稿仍保留,隐藏字段不会参与解析或提交。表单里清空已有值 = 提交 null = 删掉对应键。
  • 只做定点手术:改的是原始文档里的那一个路径,注释、键顺序、其它服务器、以及我们不认识的键原样保留——JSONC 走 jsonc-parser 的 modify,YAML 走 Document API。
  • TOML 可以编辑、追加、删除和迁移:现有依赖 @iarna/toml 会重写整个文件,整个文件的注释和排版可能丢失,其他配置值保留。表单会提示,保存 / 删除 / 迁移前还要单独确认;后端也要求严格的 allowLossy: true,不确认就不落盘。新建尚不存在的 TOML 文件无需这次确认,版本守卫和失败回滚仍然有效。
  • 草稿与版本守卫:关闭、切服务器或重新读取前,未保存的草稿需确认才能丢弃;失败不清空表单。编辑会钉住打开时的版本令牌,文件被外部修改时返回 409,即使列表自动重读也不会悄悄换用新版本覆盖别人的内容。点击重新读取并确认丢弃后,才采用最新文件。
  • 保存与连接分开:普通保存不会新增连接授权;「保存并连接」才明确请求当前会话连接,stdio 可能启动本地程序。原有的工作区信任 / 自动连接策略仍会生效。
  • 写后校验、失败回滚:写完立刻用加载器的同一条路径重读一遍;新内容解析不了、条目消失了、或者加载报错,就用宿主交回的原文逐字节还原,再把失败原因报给用户。
  • 只写工作区内:目标路径必须落在当前工作区里。
  • 只读会话不给写:沙箱是 read-only 时会话里入口只读并说明原因;workspace-write 及以上才允许保存。
  • 这些文件是共享的:.mcp.json 同时被 VS Code / Cursor 读,.codex/config.toml 是 Codex 的。「改了哪个文件、哪个键」都会记进宿主日志。
  • 新建服务器:可以凭空建一台,文件不存在就一并创建(此时连 TOML 都行)。
  • 复制 / 迁移到另一个预设:把基础连接字段读成规范字段、再按目标预设写出;目标方言不支持的 transport 不会写入。含工具过滤、凭证转发或超时等尚未支持转换的高级字段时拒绝复制,防止静默丢失语义;同一物理文件不允许通过预设别名复制到自身。迁移失败时对源和目标均做版本守卫回滚。
  • 同名只能「迁移」,不能「并存」:DSH 里同一个服务器名出现在两个声明文件里就是冲突,加载器会按 conflictPolicy 把它们都禁用。所以「保留原条目的同名复制」会被直接拒绝——要么改个名字,要么勾上「复制后删除原条目」把它挪过去。迁移时先删源、再校验,中间不会留下冲突状态;删源失败则整个操作回滚。
  • 仍然不动我们不认识的字段:编辑只碰那六个字段,删除只碰那一个条目。