@unieai/uad-mcp-servers
v0.1.21
Published
MCP servers a person adds themselves: a settings-backed list, mounted live
Readme
@unieai/uad-mcp-servers
English | 中文
挂载用户自己添加的 MCP 服务器。列表保存在用户设置文档的 mcp.servers 命名空间下;本插件让已挂载的 @unieai/uad-mcp-client 实例集合与该列表实时保持一致,无需重启。
用法
- mcp-servers:
toolCallTimeoutMs: 60000没有 settings 提供方时本插件不做任何事:没有提供方就没有持久列表,也就没有可挂载的内容。这是一种不含用户可配置服务器的组合方式,而不是故障。
配置
| 字段 | 类型 | 默认值 | 含义 |
|---|---|---|---|
| toolCallTimeoutMs | number | 60000 | 交给每个已挂载服务器的单次工具调用超时。 |
整个列表共用一个超时,而非逐行配置:添加服务器的人回答的是「它在哪里」,而超时是某个部署对自己所在机器的判断,并不属于地址的一部分。
存储的列表
每个条目包含 name、url、token 和 enabled。名称会成为该服务器发布的每个工具的前缀(mcp__<name>__<tool>),因此它是面向模型的标识符而非标签:[A-Za-z0-9_-]{1,32},且在列表内唯一。
problemsWith 会报告条目的全部问题而不只是第一个,因为每次尝试只暴露一个问题的表单,会让人分三个来回去修三处地方。mountable 会跳过已停用或无效的行并挂载其余的行——该列表是一份工作中的文档,某人尚未输入完的一行不应阻碍已经就绪的四行。
http: 与 https: 同样被接受。运行在环回地址上的服务器是常见情形,拒绝它只会把人推向一个毫无作用的代理。
刻意只支持 Streamable HTTP
mcp-client 也支持 stdio,而 stdio 是通过运行一条命令来启动服务器的。把这一点放进表单,等于把「添加服务器」的输入框变成在本机运行任意程序的途径——从一个页面发起,带着 agent 自身的权限,而整个交互过程中没有任何一处看起来像是对「执行程序」的同意。URL 则是另一类东西:它指向一个已经在运行、并且已经由别人决定要运行的东西。确实需要 stdio 服务器的人,仍可以在 profile 自己的 patch 层中声明,那里的行为是显式且可审阅的。
只做协调,不做重启
一次设置写入只会重新挂载 name、url 或 token 发生变化的服务器(differs)。切换无关的行,或编辑一个仍然无效的行,都不会影响现有连接;若每次按键都重建整个集合,这些服务器发布的所有工具都会在此期间消失。写入是串行的,因此两个并发变更不会把同一个名称的挂载与卸载交错执行。
启动失败的服务器会被记录并从已挂载集合中移除,而不会让整个插件失败:一个不可达的端点不应拖垮其他端点,而瞬时故障本就应由 mcp-client 自己的重连循环负责。
与账号侧服务器的关系
unieai-mcp-supervisor 挂载的是 UnieAI 产品所声明的、该账号已连接的服务器,其 bearer 由产品签发且浏览器永远看不到。本插件挂载的则是用户在这台机器上输入的服务器,用的是用户自己输入的 token。两者刻意做成基于同一个 mcp-client 的两个独立服务:前者是会到达也会过期的账号状态,后者是只有人去改动时才会变化的本地配置。把两者合并,会让账号侧的故障看起来像是设置丢失。
消费的服务
settings(可选):注册并观察mcp.servers命名空间。tools:间接使用;每个已挂载的mcp-client实例都会在其上注册。
模型体验
每个已挂载服务器的工具
模型看到什么
本插件本身不直接向模型呈现任何内容。每个已挂载服务器的工具都经由 mcp-client 到达模型,其形式与 profile 中声明的服务器完全一致,即 mcp__<name>__<tool>。本插件决定的是哪些服务器会被挂载,也因此决定了一次请求中存在哪些工具集合。
Token 影响
取决于数据,并由用户所选择的服务器决定:每个已挂载服务器的 schema 在其挂载期间的每次请求中都会计入开销。停用某一行会从后续请求中移除其工具定义,添加一行则会加入其工具定义。
KV Cache 影响
挂载或卸载会改变请求前缀中的工具定义,因此列表变化后的第一次请求会使缓存失效。此类变化由用户主动发起且并不频繁;若一次设置写入并未触及本插件所挂载的内容(仅改动 enabled,或改动的是一个无效行),则不会重新挂载,也就不会使缓存失效。
已知限制与暂缓事项
- Token 保存在设置文档中:与该文档中的其他值一样。该文件本就保存着各提供方的凭据,且 harness 是以拥有这台机器的人的身份读取它;桌面端读不到的 token,也就是它发不出去的 token。将其迁移到凭据服务会使 token 与使用它的那一行相分离,因此暂缓,等到凭据接缝整体成为用户输入型密钥的存储方案时再做。
- 不支持 OAuth:条目携带的是静态 bearer,因此需要授权码流程的服务器无法在此添加。官方 MCP SDK 提供了
OAuthClientProvider接缝,而mcp-client的传输层已经接受该接缝;接通它是另一项独立改动。 - 尚无浏览器 UI:列表已可持久保存并实时协调,但尚无任何界面在其之上渲染表单,因此目前条目需通过编辑设置文档来添加。
- 重命名服务器会导致重新挂载:名称即挂载身份,因此改名会释放旧连接并重新建立新连接,而不是就地改换标签。
