@aalis/plugin-mcp-client
v0.14.0
Published
MCP 客户端:连接外部 MCP server,把其 tools 注册进工具表
Readme
plugin-mcp-client
作为 MCP (Model Context Protocol) client 连接外部 MCP servers(通过 stdio),把它们暴露的 tools 包装注册到 Aalis 的 ToolService,让 Aalis agent 可以直接调用外部生态的工具。
接入要点
- 每个 server 在 config 中独立一项(
id/command/args/env) - 工具名会加前缀
mcp_<server-id>_<tool-name>避免与本地工具命名冲突 - 每个 server 注册一个工具分组
mcp:<server-id>,可在 platform 配置中按需启用 lifecycle.onDispose注册了 client 关闭回调,插件卸载时自动断开- 工具档位默认
auto——按 MCP 工具注解分档:自称只读(readOnlyHint)→sensitive(等级 1),有破坏提示或未声明 →restricted(等级 2,未知按可破坏算)。 server 级visibility可显式覆盖为public/sensitive/restricted
配置示例
plugins:
"@aalis/plugin-mcp-client":
servers:
- id: github
command: npx
args: ["-y", "@modelcontextprotocol/server-github"]
env:
GITHUB_PERSONAL_ACCESS_TOKEN: "ghp_xxx"
enabled: true
- id: fs
command: npx
args: ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/dir"]
visibility: restricted # 显式收紧:文件系统访问全部按等级 2依赖
@modelcontextprotocol/sdk- uses:
tools(api-tools / plugin-tools)、logger、lifecycle、config;可选hostConfig(mcp_set_server_enabled经它的applyPluginConfig改配置并落盘)
注意
env声明了secret: true:每个 server 的整份env算一个密钥,Node 宿主把它移进家目录的secrets.yaml,配置文件里只留引用;WebUI 不回显,要改就整份重填。token 放进env,不要写进args(连接成功时的日志会写出全部args)args必须是字符串数组、env必须是映射;缺省时分别补[]/{}。显式形态错误或任一成员不能转为字符串时,该 server 记录警告且不启动,其他 server 不受影响;合法的空字符串参数会原样传递- 旧版 WebUI 建的条目常带
args: ''/env: '',删除该键或改为[]/{} - 旧版按以下规则解析字符串,改写时照此拆分:
args先按行、再按空白切分,如args: "-y @scope/pkg"应改为["-y", "@scope/pkg"];env每行一条KEY=VALUE,忽略#开头的注释行,值去首尾空白
- 旧版 WebUI 建的条目常带
- 缺少
id或command的条目记录警告并跳过,其它 server 不受影响 enabled不是布尔值、visibility不在四档选项中时,同样跳过该 server- MCP
inputSchema顶层非type: 'object'时会被包装为{ input: schema } - 工具名超过 64 字符(OpenAI 限制)会被截断
- 非法字符(
/.等)会被替换为下划线
