关于 mup
mup 是一款 MCP 服务,可承载基于 HTML 的交互面板,让用户和 LLM 操作共享的函数与状态。它面向构建可视化聊天交互的开发者,面板涵盖演示文稿、PDF 阅读、图表和音乐工具等。
主要功能
- 01基于 HTML 的交互面板
- 02共享 UI 与可调用函数
- 03用户和 LLM 操作共享状态
- 04内置面板与示例目录
- 05仪表板和单面板主机
适用场景
- 01构建交互式演示文稿面板
- 02在聊天中阅读和批注 PDF
- 03通过函数调用创建图表
- 04使用热重载开发单个面板
MCP 相关
该服务向兼容 MCP 的主机和客户端提供 MUP 面板及其可调用函数。主服务器提供仪表板,mini 服务器则支持单面板、热重载和 channel 事件。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
1收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| name | string | 否 | save/load/deleteWorkspace 操作的工作区名称。 |
| mupId | string | 否 | MUP ID(例如 mup-chess、mup-chart)。首次使用时自动激活。 |
| since | number | 否 | Unix 时间戳(毫秒)。仅返回此时间之后的交互。与 checkInteractions 配合使用。 |
| action | string | 否 | 使用 "checkInteractions" 检查用户 UI 活动,使用 "list" 列出 MUP,使用 "pipe" 管理数据管道。调用函数时省略。 |
| pipeId | string | 否 | 用于删除/启用/禁用的 Pipe ID。 |
| subAction | string | 否 | 对于 pipe 操作:"create"、"list"、"delete"、"enable"、"disable" |
| transform | object | 否 | 键映射:{ targetArgName: "source.path" }。使用 "." 表示整个数据,使用 "'literal'" 表示字符串。 |
| debounceMs | number | 否 | 防抖间隔,单位为 ms(默认值:500)。 |
| description | string | 否 | 工作区描述——你正在处理的内容。与 save 操作配合使用。 |
| sourceMupId | string | 否 | Pipe 源 MUP ID。 |
| targetMupId | string | 否 | Pipe 目标 MUP ID。 |
| functionArgs | object | 否 | 函数的参数。可以是 JSON 对象或 JSON 字符串。 |
| functionName | string | 否 | 要调用的函数(例如 makeMove、renderChart、setPixels) |
| sourceFunction | string | 否 | 可选:在源 MUP 上调用此函数以获取数据(否则使用 stateData)。 |
| targetFunction | string | 否 | 在目标 MUP 上调用的函数。 |
详细介绍
MUP — Model UI Protocol
将交互式 UI 带入大模型聊天,让每个人都能体验 Agentic AI,而不只是开发者。
当前版本:0.2.11 | 协议:mup/2026-03-17
演示
幻灯片 — AI 实时制作演示文稿
Claude 通过函数调用创建完整的幻灯片,包含图表、表格和主题。
PDF 转演示文稿 — AI 阅读论文并进行演示
Claude 从 PDF 中阅读 AlexNet 论文,记录 Markdown 笔记,通过人机协作捕获图片,制作包含图表和表格的 19 页演示文稿,然后在全新的面板内阅读模式中逐页演示——全程实时讲解。
音效板 — AI 从零创作曲目
16 种由浏览器合成的乐器,无需采样。Claude 逐层创作一首电音摇摆曲目,并通过事件驱动的讲解与每次段落切换同步。
什么是 MUP?
MUP 是一种存在于大模型聊天界面中的交互式 UI 组件。
它将可视化界面与可调用函数组合在一起。用户通过点击按钮来操作;大模型通过函数调用来操作。双方都能实时看到彼此的操作。
最简单的 MUP 是一个 .html 文件——无需构建步骤、无需框架、无需 SDK。
为什么?
Agentic AI 功能强大,但如今它仍受限于文本命令和开发者工具。大多数人都无法体验它。
MUP 改变了这一点。它将可点击的可视化 UI 直接放进聊天中,让任何人无需编写任何提示词,就能使用 Agentic AI 的能力。
| 传统聊天 | 使用 MUP | |
|---|---|---|
| 用户交互 | 输入文本命令 | 点击按钮、拖动滑块、查看实时画面 |
| 工具结果 | 对用户隐藏,只有大模型能看到 | 双方都能查看和交互 |
| 适用人群 | 知道正确提示词的高级用户 | 任何人 |
核心理念
- 共享函数。 函数既可以由大模型调用(作为工具),也可以由用户触发(通过 UI)。双方通过同一段代码操作同一状态。
- 大模型作为协调者。 MUP 之间不会相互通信。大模型读取输出,并决定下一步操作。
- 只需 HTML。 编写清单、注册函数即可完成。发布单个文件。
可用的 MUP
- Chat — 内置,始终可用
- Slides — 演示文稿编辑器,支持图表、表格、主题、阅读模式和导出(演示)
- PDF Reader — PDF 查看器,支持提取页面文本以及选择/捕获区域
- Markdown — Markdown 工作区,支持批注和文档管理
- Sound Pad — 16 键合成器,支持音序器、每轨音量和事件系统(演示)
- Chord Pad — 乐理键盘,配备 5 种合成器音色,支持和弦进行和旋律播放
- Diagram — 自动布局的节点与边图表(流程图、思维导图、架构图),支持多种布局算法
- Star Map — 基于位置的交互式星图,显示星座、黄道和银河
- Voice — 语音合成与识别(Jarvis 模式)
- Notes — 便笺工作区,支持分组、样式和导出
- Pixel Art — 像素画布,支持形状、ASCII 图案、填充和 PNG 导出
- Timer — 倒计时/秒表,完成时由事件触发
- Progress — 任务进度跟踪
- Chess — 棋盘和吉祥物演示,包含基本移动规则(未实现将军/将死和吃过路兵)
- 更多示例见
archive/examples/(游戏、效率工具等)
专注开发
如需与 Claude 迭代构建单个 MUP(编辑 .html → Chrome 热重载 → 用户交互 → channel 推送回 Claude → 重复),请参阅 mup-mini-mcp-server——这是一个脚手架式的姊妹项目,只加载一个 MUP,并仅提供基础功能:热重载、WebSocket 桥接和 channel 推送。没有目录、没有网格,也没有其他附加功能。
文档
安装
npm(推荐)
npm install -g mup-mcp-server
或直接运行:
npx mup-mcp-server --mups-dir ./my-mups
也可在 MCP Server Registry 中获取。
从源代码安装
git clone https://github.com/Ricky610329/mup.git
cd mup/mup-mcp-server
npm install && npm run build
开发
需要 Node.js 22.13 或更高版本。在仓库根目录运行:
npm run setup # install and build both servers from their lockfiles
npm test # build, test both servers, and check MUP manifests/scripts
| 路径 | 用途 |
|---|---|
mup-mcp-server/ | 仪表板宿主、工作区、流水线、调度器 |
mup-mini-mcp-server/ | 单面板宿主、热重载、channel 事件 |
mups/ | 维护中的面板和演示 |
spec/ | 协议文档、架构、示例 |
scripts/ | 仓库验证 |
archive/ | 历史实现和示例 |
两个软件包均可独立安装。在任一软件包中运行 npm test 时,都会先重新构建该软件包。CI 会在 Node.js 22 上测试这两个软件包。有关修复内容和验证范围,请参阅审查报告。
两个宿主都绑定到 127.0.0.1,并接受本地 UI 的来源。请运行可信的 MUP:同源 iframe 设置支持浏览器存储和媒体 API,但并非不可信 HTML 的隔离边界。仪表板的工作区注册会授予对工作目录的访问权限。
入门
使用 Claude Code(推荐)
claude mcp add --transport stdio --scope user mup -- npx mup-mcp-server
重启 Claude Code。浏览器窗口会在 http://localhost:3200 打开。使用 MUP 面板加载包含 MUP .html 文件的文件夹,或从内置的 Chat 小组件开始。
实时 channel 模式
MUP 可通过 channel 通知,将交互直接推送到 Claude 的对话中。启用方法:
claude --dangerously-load-development-channels server:mup
这样一来,MUP 就能实时向 Claude 传递用户操作。若不使用此标志,所有 MUP 功能仍可正常工作,只是交互会通过轮询而非推送来传递。
使用 Claude Desktop
将以下内容添加到 claude_desktop_config.json:
{
"mcpServers": {
"mup": {
"command": "npx",
"args": ["mup-mcp-server"]
}
}
}
快速示例
<script type="application/mup-manifest">
{
"name": "Counter",
"description": "A counter. User clicks +/-, LLM can set or read the value.",
"functions": [
{
"name": "setCount",
"description": "Set the counter to a specific value",
"inputSchema": {
"type": "object",
"properties": { "value": { "type": "number" } },
"required": ["value"]
}
},
{
"name": "getCount",
"description": "Get the current counter value",
"inputSchema": { "type": "object", "properties": {} }
}
]
}
</script>
将此内容放入兼容 MUP 的宿主中即可运行。
架构
┌──────────────────────────────────────────┐
│ MUP (.html file) │
│ manifest + UI + functions │
└──────────────────┬───────────────────────┘
│ loaded by
▼
┌──────────────┐
│ MCP Server │
│ (Claude Code │
│ / Desktop) │
└──────┬───────┘
│ WebSocket
▼
┌─────────────────────────────┐
│ Browser Panel │
│ (MUP grid + Chat widget │
│ + workspace manager) │
└─────────────────────────────┘
Star History
License
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。


