🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

会话级 MCP 调度 dxc-dxc/dsh-mcp-session-catalog

DeepSeek Harness
dxc-dxc5 天前有提交已提供中文文档扫描:含敏感能力

按会话轮次按需加载并回收 MCP 服务连接

29.8/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/11/2 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dxc-dxc/dsh-mcp-session-catalog
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
dsh 原生插件 · market
暂无时间戳·判据 →
装得上吗[实装验证]—
本站尚未做安装检查
暂无时间戳·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 5 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 21 处,展示前 21 条)
  • 执行外部命令来自配置/变量
    index.mjs:159
    const child = spawn(this.server.command, this.server.args ?? [], {
  • 发起网络请求
    index.mjs:200
    const init = await this.request('initialize', {
  • 发起网络请求
    index.mjs:235
    const result = await this.request('tools/list', cursor ? { cursor } : {}, signal)
  • 发起网络请求
    index.mjs:246
    const result = await this.request('tools/call', { name: tool, arguments: args ?? {} }, signal)
  • 读取本地文件
    index.mjs:309
    const rawJsonTop = serversFile ? JSON.parse(readFileSync(serversFile, 'utf8')) : null
  • 读取本地文件
    index.mjs:343
    const cacheReady = readFile(cacheFile, 'utf8').then(raw => {
  • 写入本地文件
    index.mjs:361
    await mkdir(dirname(cacheFile), { recursive: true })
  • 写入本地文件
    index.mjs:363
    await writeFile(temp, text); await rename(temp, cacheFile)
  • 写入本地文件
    index.mjs:363
    await writeFile(temp, text); await rename(temp, cacheFile)
  • 读取本地文件
    index.mjs:532
    const parsed = serversFile ? JSON.parse(await readFile(serversFile, 'utf8')) : null
  • 读取本地文件
    hub-adapter.mjs:90
    const library = JSON.parse(readFileSync(this.libraryFile, 'utf8'))
  • 发起网络请求
    http-connection.mjs:58
    return fetch(url, { ...init, redirect: 'error' })
  • 写入本地文件
    hub-ownership.mjs:22
    mkdirSync(this.directory, { recursive: true, mode: 0o700 })
  • 读取本地文件
    hub-ownership.mjs:40
    try { state = JSON.parse(readFileSync(this.file, 'utf8')) }
  • 读取本地文件
    hub-ownership.mjs:54
    holder = Number(readFileSync(this.lock, 'utf8').trim())
  • 读取本地文件
    hub-ownership.mjs:55
    age = Date.now() - statSync(this.lock).mtimeMs
  • 删除本地文件
    hub-ownership.mjs:62
    try { unlinkSync(this.pathInRegistry(this.lock)); return true } catch { return false }
  • 写入本地文件
    hub-ownership.mjs:78
    writeFileSync(fd, String(process.pid))
  • 写入本地文件
    hub-ownership.mjs:83
    try { writeFileSync(out, JSON.stringify(state)); fsyncSync(out) } finally { closeSync(out) }
  • 写入本地文件
    hub-ownership.mjs:84
    renameSync(this.pathInRegistry(temp), this.pathInRegistry(this.file))
  • 删除本地文件
    hub-ownership.mjs:88
    unlinkSync(this.pathInRegistry(this.lock))
扫描于 2026/11/4(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

会话隔离、按需加载的 MCP 管理器,用于 DeepSeek Harness(DSH)

README

由 DeepSeek 最新模型翻译生成
dsh-mcp-session-catalog DeepSeek Harness(DSH)会话级按需 MCP 管理插件。独立 stdio 服务按需启动、同 Host 复用连接,并按会话轮次回收;v2.5 增加 Magpie Hub 兼容,将 Hub 逻辑服务的工具按需授予当前会话。 v2.5 已完成实现与集成验收:9 个套件、72 项断言全部通过,覆盖原独立路径回归、Hub 契约、跨 Host 互斥与真实 AgentLoop 装配。变更明细见 CHANGELOG,证据与未验证范围见验证与发布前事项。 两种来源,保持原有管理接口 | 要求 | 独立 stdio 服务 | Magpie Hub 逻辑服务 | | 初始状态 | 不启动受管子进程,不注册业务工具 | 不连接 Hub,不注册业务工具 | | 目录与恢复 | 查询目录不启动服务;恢复后按需重载 | 启动、mcp_catalog、resume 均不发送 initialize、list、ping 或健康检查 | | 显式加载 | mcp_load 冷启动或复用连接,仅向当前会话授权 | mcp_load 连接 Hub 并读取按需快照,仅授权所选逻辑服务 |
展开完整文档(README 剩余 1 节)
dsh-mcp-session-catalog

DeepSeek Harness(DSH)会话级按需 MCP 管理插件。独立 stdio 服务按需启动、同 Host 复用连接,并按会话轮次回收;v2.5 增加 Magpie Hub 兼容,将 Hub 逻辑服务的工具按需授予当前会话。

v2.5 已完成实现与集成验收:9 个套件、72 项断言全部通过,覆盖原独立路径回归、Hub 契约、跨 Host 互斥与真实 AgentLoop 装配。变更明细见 CHANGELOG,证据与未验证范围见验证与发布前事项。

两种来源,保持原有管理接口

| 要求 | 独立 stdio 服务 | Magpie Hub 逻辑服务 |
| 初始状态 | 不启动受管子进程,不注册业务工具 | 不连接 Hub,不注册业务工具 |
| 目录与恢复 | 查询目录不启动服务;恢复后按需重载 | 启动、mcp_catalog、resume 均不发送 initialize、list、ping 或健康检查 |
| 显式加载 | mcp_load 冷启动或复用连接,仅向当前会话授权 | mcp_load 连接 Hub 并读取按需快照,仅授权所选逻辑服务 |
| 后端共享 | 默认 sharing: shared;可显式用 session 创建独立进程 | 使用 Magpie 共享后端;会话工具隔离不代表后端状态或进程隔离 |
| 同一服务有重复定义 | 非 Hub 服务沿用原接管规则 | Hub 优先;禁止直连与 Hub 双启、双份工具和自动直连回退 |

旧配置没有 magpieHub,或设置 magpieHub.enabled: false,仍使用原独立模式。servers / serversFile、Loader 发现、表达式、excludedServers、共享与 session、20 轮及覆盖、归档、取消、只读重试、文本结果与在途保护的接口保留。详细边界见功能说明。

独立模式配置

使用 Host 有效 Loader 配置树发现服务时,需由插件接管的官方 stdio 条目必须自身明确设置 disabled: true。它保留连接定义,并关闭官方客户端的常驻连接;父级停用或条件式停用不等于这一接管约定。

- insert:
- id: mcp-session-catalog
name: '@dxc-dxc/dsh-mcp-session-catalog/v2_5'
config:
inactiveTurnsThreshold: 20
scanDshProfile: true
- id: mcp-example
name: '@deepseek-ai/dsh-mcp-client'
disabled: true
config:
transport: stdio
serverName: example
command: node
args: ['/path/to/example-server.mjs']
sharing: shared

v2_4 保留为兼容入口,旧补丁可原样继续工作;新安装使用 v2_5。Hub 模式还需要按可选接管片段显式启停官方 Hub 条目,并核对 Library 中该服务确实分配给 dsh。

也可将独立连接样例复制到自己的配置目录,再把管理器配置中的 serversFile 指向副本。手动 servers / serversFile 默认关闭原生扫描,显式组合来源时不得重复定义同一独立服务。示例路径均为占位符,不附带可用服务或凭据。

Hub 模式配置

冻结的管理器配置样例见Hub 配置样例。配置对象的关键部分为:

{
"magpieHub": {
"enabled": true,
"libraryFile": "/path/to/magpie/library.json",
"ownershipDir": "/path/to/shared/dsh-mcp-ownership"
}
}

ownershipDir 必须由所有受管 DSH Host 共同使用。可选字段为 entryId、url、headers、serverName;字段语义和入口识别限制见Hub 兼容性说明。不要把 magpieHub 放进独立连接文件的 servers 数组,也不要为每个 Hub 逻辑服务复制 command、env 或认证信息。

本地 Library 提供服务身份与 DSH 分配,按需 Hub 工具快照提供可用工具;Library 形状样例仅用于理解和隔离测试,不能覆盖真实 Library。新增目录项不自动扩大已有会话权限;目录缓存也不是执行授权。

首次 Hub 网络请求可能启动分配给 DSH 的其他后端。因此,在发送任何 Hub 请求前,必须清退全部 Hub 归属服务的受管 DSH 直连,等待在途请求结束、旧工具注销和进程退出,并完成跨 Host 迁移屏障。任何状态不明均保持 blocked。迁移前按迁移预检与步骤执行。

Magpie 全局 Hub 开关保持原样,其他客户端共用同一 Hub 后端属于正常共享。本插件只管理自己的 HTTP 客户端和会话授权;卸载或回收不会停止 Magpie Hub 或强停共享后端。

使用

管理工具仍按逻辑服务名调用,无需 group 参数。

| 调用 | 作用 |
| mcp_catalog({}) | 查看本地目录、缓存和当前会话状态;不唤醒 Hub |
| mcp_load({server: 'obsidian'}) | 显式加载该逻辑服务,工具从下一模型步骤起可见 |
| mcp_refresh({server: 'obsidian'}) | 显式唤醒并更新该服务工具快照,不授予业务工具 |
| mcp_refresh({}) | 显式刷新已配置服务;可能访问 Hub 及启动其已分配后端 |
| mcp_load({server: 'obsidian', action: 'unload'}) | 撤销当前会话的工具并释放引用,其他会话不受影响 |

独立示例中的服务名是 example;上表中的 obsidian 需要真实 Library 已分配给 DSH。不要从公开工具名反推 Hub 原始工具名,映射由适配器保存。Hub 离线、超时或迁移失败应报告原始失败类别并处理,不得自动改走同一服务的直连。

默认连续 20 个完成轮次未调用时回收租约;服务级阈值可覆盖。独立服务的 sharing: session 仍创建独立后端进程;Hub 不提供这一隔离承诺。Magpie 的后端空闲约 10 分钟回收由 Hub 自己管理,其他客户端访问和列表访问都可能影响其活动状态。

安装与验证

从 GitHub 安装到某个配置档:

dsh plugin --profile <profile> add github:dxc-dxc/dsh-mcp-session-catalog

bundle 默认补丁只插入管理器(v2_5,20 轮回收 + Loader 扫描),不改动其他插件的 MCP 条目。要让插件接管 Magpie Hub,把 examples/cordis.hub-takeover.patch.yml 中的三条语句合并进该配置档的补丁层;合并前先确认官方条目 id 在该配置档的组合配置中确实存在,且没有第二处插入 mcp-session-catalog。

安装后按顺序验证:

1. mcp_catalog 能列出预期服务;未加载时应显示 not loaded,且不产生任何 MCP 子进程。
2. mcp_load 任一服务后,仅当前会话出现对应工具;另一会话既看不到也调用不了。
3. Hub 模式下确认官方 Hub 条目已停用、initialize 只发生在首次显式加载之后。
4. 阅读验证与发布前事项,按受控重启与迁移屏障流程完成切换。

Hub 当前能力范围为 tools;本文不承诺 resources / prompts、硬实时通知、逐逻辑服务进程冷启动或任意外部插件绕过后的强隔离。

License

MIT
预览分享卡片长什么样 ↓dxc-dxc/dsh-mcp-session-catalog
分享 · DeepSeek Harness Hub
dxc-dxc/dsh-mcp-session-catalog

按会话轮次按需加载并回收 MCP 服务连接

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部