使用指南
插件
本地脚本或现成的 MCP 服务,接进来就是智能体和工作流的工具。
插件把 Mosael 之外的能力接进来 —— 一段本地脚本,或者一个现成的 MCP 服务。接进来之后, 它的工具智能体和工作流都直接能用,不需要为哪一边再做一次适配。
想自己写一个?见写一个插件。

两种插件#
| 本地脚本 | MCP 服务 | |
|---|---|---|
| 声明 | entry 指向一个 Python 脚本 | kind: "mcp" + mcp 配置块 |
| 工具清单 | 写在 manifest 的 tools 里 | 从服务现拉,不手抄 |
| 适合 | 纯计算、简单的一次性 HTTP 调用 | 平台已经自己发了 MCP 服务的情况 |
越来越多平台自己就发 MCP 服务。碰到那种情况,再写一个脚本去把 stdin 的 JSON 翻译成一次 HTTP 调用、再把结果翻译回 stdout,是在重新实现一个已经存在的东西 —— 而且每加一个端点都要改代码。 声明式接进来就够了:
{
"id": "com.example.thing", "name": "示例", "version": "1.0.0",
"kind": "mcp",
// 本地进程:spawn 一个子进程
"mcp": { "transport": "stdio", "command": "npx", "args": ["-y", "@scope/server"] },
// 或者远端:url / headers 里可以用 ${KEY} 引用下面声明的凭据
// "mcp": { "transport": "http", "url": "https://example.com/mcp",
// "headers": { "Authorization": "Bearer ${SOME_API_KEY}" } },
"credentials": [{ "key": "SOME_API_KEY", "label": "API Key", "secret": true }]
}
MCP 插件的工具清单在启用时、填完凭据后各拉一次,之后可以在插件页点「刷新工具」。 服务升级加了新工具,刷一下就有了。
包 / 连接 / 能力#
- 包是磁盘上装了什么(一个目录 + 一份清单)。
- 连接是一次具体接入:一组配置 + 一组凭据 + 一个名字 + 启用开关。一个包可以接多次 —— TikHub 一个包对应十几个平台端点,B站一个连接、抖音一个连接,各有各的 Key。
- 能力是这个连接开放了哪些工具,逐个勾选,默认不开。

界面上这三层是从左到右、从上到下排的:左栏「已安装」是包,右侧上半是这个包的连接,下半是这个 连接开放的工具。默认一个都不开是有意的 —— 一个 MCP 服务动辄几十个工具,全开会把节点面板 和智能体的工具表淹掉,模型在几十个名字里挑,反而更容易挑错。
装一个#
插件页有两个页签:「已安装」和「市场」。
从市场装:翻到你要的那个,点「安装」。它不会直接装上 —— 先把包下下来读一遍清单, 把它声明的权限和会带来的工具摊开给你看,确认了才落地。装插件是在你这台机器上放一份 会被执行的代码,那份清单值得看一眼。
从链接装:有一个 zip 的地址就能装,同样先过一遍那张确认。公司内网可以架自己的市场索引 (一份普通 JSON,格式见写一个插件),在设置里换掉地址即可。
手动放:把插件目录拷进插件目录(那个路径由插件页告诉你 —— 别照着 ~/.mosael/plugins
去找,Windows 上它不存在),点「扫描」。写插件的时候走这条最快。
装上之后:没有配置的包自带一个连接,有配置的自己「新建连接」;清单声明的权限逐项授权, 未授权的连接不可用。
卸载会删掉磁盘上的插件目录,连同它的权限、凭据与调用记录。只清记录是不够的 —— 下一次扫描又把它装回来,用户看到的是「我删了它怎么又回来了」。手动删掉目录之后,下一次 扫描会自动清掉那条记录。
凭据#
manifest 里 credentials 声明要哪些密钥,用户在插件页填,运行时注入到这个插件自己的进程。
插件拿不到 Mosael 的任何凭据 —— 供应商 key、数据库、API token 一个都没有。这是有意的 隔离:插件因此绕不过确认卡和权限系统。凭据注入没有破坏它,只是让插件自己的密钥有地方放, 不用再让用户开终端往插件目录里拷一个配置文件。
必填凭据没填的插件不进工具表 —— 让智能体去调一个必定 401 的工具,只会烧掉一轮对话来复述 一句设置页早就写着的话。
在智能体里用#
已启用、已授权、凭据齐全的插件工具,直接出现在智能体的工具表里(名字形如
plugin__<插件>__<工具>),和内置工具没有区别 —— 模型直接看到名字和入参模式,不需要先
「想到」可能有插件能帮忙、再花一轮去列清单。
为什么工具默认不开:一个 MCP 服务可能报四十上百个工具。全放出去,节点面板要人从四十行里 找一行,智能体每轮对话为四十条描述付 token,还挤占模型在内置工具之间的选择权。插件页的工具 列表可以搜索(名称和说明都参与匹配),也能按当前筛选批量开关。
子智能体默认拿不到插件工具。子智能体只用只读工具,而一个没有确认门的插件工具照样可能
发请求、写文件。要放开,在 manifest 的对应工具上写 "read_only": true —— 这是装插件的人的
判断,不该由被接入的一方自己声称。MCP 插件同理:在 manifest 的 tools 里按名字覆盖即可,
那不是第二份清单,只有 read_only 这一个键会被采纳。
在工作流里用#
每个插件工具就是一个节点,在「添加节点」面板的「插件」组里各占一行。它跟内置节点没有 区别:一样的表单、一样的输入输出、一样的校验 —— 表单直接从工具的入参模式生成。
插件也可以自己声明节点长什么样(标签、说明、表单、输出口子),参照 ComfyUI 的自定义节点。
具体写法见仓库里的 docs/PLUGIN_MANIFEST.md「工作流节点」一节。
工作流导出到没装这个插件的机器上,打开时会明确告诉你缺的是哪个插件的哪个工具。
调用记录#
最近的调用逐条记录(成功 / 失败 + 输入输出),点击展开;支持逐条删除或清空。 智能体和工作流的调用同样留痕 —— 插件只有一条执行路径,没有谁能绕过它。
范例#
仓库的 plugins/examples/ 下有三个:
text-toolkit—— 纯函数,零依赖零凭据。tikhub—— 本地脚本 + 凭据 + 网络。读抖音 / TikTok / 小红书 / B站 / 快手的公开数据。mcp-everything—— 一行代码都没有的 MCP 接入范例。

