MCP 使用
发布时间:2026-10-14 | 浏览:1
把 SnowLuma 的 OneBot action 目录和可选执行能力接入 MCP 客户端
SnowLuma 发布了 @snowluma/mcp ,这是一个通过 stdio 运行的 MCP Server。它把 SnowLuma 的 OneBot action 目录暴露给支持 MCP 的客户端,让 LLM 可以按需查询 action 文档、参数、约束和 JSON Schema;在你显式配置 OneBot HTTP 端点后,也可以让 LLM 调用正在运行的 SnowLuma 实例。
源码参考主仓 packages/mcp 。
写模式会把 invoke_action 暴露给 MCP 客户端。只有在你信任当前客户端、模型和会话时才开启。
一个支持 stdio MCP Server 的客户端,例如 Claude Desktop、Cline 或其他 MCP 客户端。
客户端所在机器需要能运行 npx ,并使用 Node.js >= 22 。
只用文档模式时,不需要启动 SnowLuma。
要执行 action 时,MCP 连接的是 OneBot HTTP 端点 ,不是 WebUI 端口。Docker 默认是 http://127.0.0.1:3000/ ,WebUI 默认 5099 只用于管理界面。
不需要运行 SnowLuma,也不需要配置 OneBot 端点。把下面配置加入 MCP 客户端:
同时会暴露资源 snowluma://onebot/actions ,内容是当前版本完整 action catalog。
如果你要让 MCP 调用真实 action,需要先确保 SnowLuma 的 OneBot HTTP 服务可访问。Docker 默认映射后,宿主机上的 MCP 客户端通常使用:
如果 MCP 客户端不在同一台宿主机上,把 127.0.0.1 换成服务器 IP 或域名。HTTP access token 取自 WebUI 的网络适配器配置,或 config/onebot.json / config/onebot_<uin>.json 中对应 httpServers[].accessToken 。
建议让客户端对 invoke_action 保持人工确认; query_action 可以按客户端策略自动批准。
先让模型用 search_actions 或 list_actions 找到 action。
再用 get_action 查看参数 schema 和约束。
只读查询用 query_action 。
确认要产生副作用时,再在写模式下使用 invoke_action 。
MCP Server 只会调用 catalog 中已知的 action,未知 action 会被拒绝。
query_action 只接受显式标记为只读的 action。
invoke_action 即使被客户端直接调用,也会在非写模式下拒绝执行。
OneBot 返回的业务失败会作为响应数据返回;只有网络或传输失败才会作为 MCP 错误。
action 目录来自构建时从 @snowluma/onebot 生成的快照,会随 SnowLuma 发布版本更新。
Monorepo 结构、核心启动链路与贡献注意事项
@snowluma/sdk —— 类型完备的 OneBot 客户端,独立于 SnowLuma 运行时