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

MCP 应用渲染器 openma-ai/dsh-mcp-apps

DeepSeek Harness
openma-ai74 天前有提交已提供中文文档扫描:未发现敏感能力

在沙箱 iframe 中渲染 MCP 应用界面并支持多视图切换

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

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

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

状态速览

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

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

验证判据与等级说明 →

可信度证据

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

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

扫描于 2026/11/5(0 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/cordis-plugin-loader@deepseek-ai/dsh-api-gateway@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-client-ui-tool@deepseek-ai/dsh-invariants@deepseek-ai/dsh-typert-protocol
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 沙箱iframe渲染界面
  • 多视图切换

README

由 DeepSeek 最新模型翻译生成
dsh-mcp-apps 为 DeepSeek Harness (DSH) 提供 MCP Apps 支持,以普通 Cordis 插件的形式打包。 该项目刻意将协议宿主与每个呈现界面保持分离。安装该捆绑包会添加两个独立的行:一个共享现有 MCP 连接的 Host 服务,以及一个在双重 iframe 沙箱后运行 App HTML 的 Web 渲染器。一个 AppBridge 会话可以在内联、全屏和画中画界面之间移动,而无需重新挂载其 iframe。 我应该安装哪个包? | 目标 | 安装 | | 在 DSH 中使用 Codex、Claude Code、Pi 或可移植的 Agent Plugins,包括它们的 MCP Apps | 仅 @openma/dsh-agents-plugins-bridge;它已自带 MCP Apps | | 在没有外部插件桥接的情况下向 Web 配置文件添加 MCP Apps | @openma/dsh-mcp-apps | 独立包和 Bridge 使用相同的 Host 和 Web 运行时包。不要仅仅为了获得两次渲染器而将两个捆绑包都安装到同一个配置文件中。
展开完整文档(README 剩余 1 节)
dsh-mcp-apps

为 DeepSeek Harness (DSH) 提供 MCP Apps 支持,以普通 Cordis 插件的形式打包。

该项目刻意将协议宿主与每个呈现界面保持分离。安装该捆绑包会添加两个独立的行:一个共享现有 MCP 连接的 Host 服务,以及一个在双重 iframe 沙箱后运行 App HTML 的 Web 渲染器。一个 AppBridge 会话可以在内联、全屏和画中画界面之间移动,而无需重新挂载其 iframe。

我应该安装哪个包?

| 目标 | 安装 |
| 在 DSH 中使用 Codex、Claude Code、Pi 或可移植的 Agent Plugins,包括它们的 MCP Apps | 仅 @openma/dsh-agents-plugins-bridge;它已自带 MCP Apps |
| 在没有外部插件桥接的情况下向 Web 配置文件添加 MCP Apps | @openma/dsh-mcp-apps |

独立包和 Bridge 使用相同的 Host 和 Web 运行时包。不要仅仅为了获得两次渲染器而将两个捆绑包都安装到同一个配置文件中。

安装

dsh plugin --profile web add @openma/dsh-mcp-apps

从本地检出安装依赖并仅添加根捆绑包:

npm install
dsh plugin --profile web add .

完整捆绑包在已提供 ctx.mcpApps 和生成的 remote.mcpApps 命名空间的 DSH 组合上是安全的:回退 Host 行会变为空操作,而 Web 渲染器会复用现有的 Remote。如果已知活动配置文件已包含官方 Host,则仅安装渲染器是最小等效方案:

dsh plugin --profile web add ./packages/web

渲染器在存在组合提供的 Remote 时会使用它,并且仅在独立回退 Host 时挂载其已检入的描述符。

捆绑包补丁挂载一个内核:

- id: mcp-apps-bundle
name: '@openma/dsh-mcp-apps'

该内核拥有两个独立的子行:mcp-apps-host 和 mcp-apps-web。两行都指向包自有的包装器导出。每个包装器从该包的依赖图中解析其运行时,通过 DSH Loader 导入它,并使用 ctx.plugin 挂载它;不需要配置文件级别的依赖提升。Agent Plugins Bridge 从其自己的根包中使用相同的包装器形态。

将 MCP 服务器连接保留为其自己的插件行。DSH 的 mcp-client 会注意到可选的 ctx.mcpApps 服务,并自动贡献其活动连接:

- name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: weather
transport: stdio
command: weather-mcp-server

因此,工具、资源、提示、面向模型的执行以及 AppBridge 调用都复用同一个 MCP SDK Client,包括其身份验证和重连代次。本项目不会打开第二个连接。

包

| 包 | 角色 |
| @openma/dsh-mcp-apps | 可安装且可嵌套的捆绑包内核;拥有 Host/Web 子行生命周期 |
| @openma/dsh-mcp-apps-host | 内部运行时包:ctx.mcpApps 提供者注册表以及生成的 Typert Host/Remote 契约 |
| @openma/dsh-mcp-apps-web | 内部运行时包:形状驱动的 Tool 结果渲染器、官方 AppBridge 以及浏览器沙箱 |

流程如下:

dsh mcp-client
└─ provider → @openma/dsh-mcp-apps-host
└─ Typert Remote → @openma/dsh-mcp-apps-web
└─ AppBridge → sandboxed MCP App

只有 callTool 和 readResource 会跨越浏览器 Remote 边界。readResource 仅接受 ui:// URI。Host 插件也可以在进程内调用 listResources、listPrompts 和 getPrompt;此包不会将这些结果注入模型上下文。

Web 渲染器仅认领同时满足以下所有条件的已敲定结果:

- 呈现卡片 mcp-app;
- ui:// 资源 URI;
- 精确 MIME 类型 text/html;profile=mcp-app;
- 符合 schema 的 MCP Tool 结果。

其他所有结果都会拒绝 tool.call.takeover 链,从而保留正常的键控 Tool 视图和通用回退。

浏览器安全边界

不受信任的 App HTML 绝不会在 DSH 文档中运行。它会被加载到不透明源中继文档背后的不透明源内部数据文档中。渲染器会:

- 在 App 代码之前安装 CSP,仅接受经过验证的 HTTP(S)/WS(S) 域来源;
- 对每条中继消息检查确切的父/子窗口和预期来源;
- 保留内部沙箱消息,并使用按文档区分的代际标记;
- 一旦内部文档发生导航,立即关闭 Host 到 App 的转发;
- 仅允许在新标签页中外部导航到 HTTP(S) URL;
- 将内联高度请求限制在 96–720 px;
- 在内联、协议 fullscreen 模式的右侧面板以及有界画中画之间移动同一个实时 iframe 包装器,而不是重新创建 App 状态;
- 仅针对 App 通过 appCapabilities.availableDisplayModes 声明的显示模式,显示不显眼的左下角 Host 控件。

该实现使用官方 @modelcontextprotocol/ext-apps 的 AppBridge 和 PostMessageTransport。

其他客户端

Host 包与 UI 无关。完整的 HTML/AppBridge 路径目前仅由 Web 包实现。TUI 可以独立安装 Host 并提供自己的渲染器(例如文本回退或“在浏览器中打开”操作);终端客户端不应内联执行任意 App HTML。

@openma/dsh-agents-plugins-bridge
直接使用此边界:其 Web 配置文件获得沙箱化渲染器,而其 TUI 配置文件保留共享的 MCP 工具、资源、提示和后端生命周期,而不尝试在终端中绘制 App HTML。

相关项目

- DeepSeek Harness — Host、 Loader、MCP 客户端和 Web 插件平台。
- Agent Plugins Bridge —一个包,兼容 Codex、Claude Code、Pi 和 Agent Plugins 的兼容层。
- DeepSeek Harness TUI —用于相同 Host 端工具和命令的终端客户端。
- DeepSeek Harness ACP —向 ACP 客户端暴露 Host 能力。

开发

需要 Node.js 20 或更高版本。

npm install
npm run build
npm test
npm run typecheck
npm run test:browser

test:browser 会启动 Playwright Chromium(在 macOS 上则为本地 Google Chrome),以验证双 iframe 的 origin 和导航边界。

examples/display-modes 是一个真实的 stdio MCP 服务器,使用官方 MCP Apps 服务器辅助工具和 App 客户端构建。其 display_modes 工具会打开 ui://dsh/display-modes;递增计数器并在全部三个界面之间切换,以验证 App 会话保持活跃:

npm run build:example:display-modes
node examples/display-modes/server.mjs

兼容性

Web 渲染器面向当前 DSH Web 构建中存在的 tool.call.takeover 链。当与 DSH 0.1.0-rc.7 组合使用时,其优先级 -110 让这个三模式渲染器能够在优先级为 -100 的内置仅内联渲染器之前接管 MCP App 结果。其他工具结果则继续沿普通接管链向下传递。

下载、App 到聊天的消息以及采样尚未启用。

许可证

MIT
预览分享卡片长什么样 ↓openma-ai/dsh-mcp-apps
分享 · DeepSeek Harness Hub
openma-ai/dsh-mcp-apps

在沙箱 iframe 中渲染 MCP 应用界面并支持多视图切换

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