sekia MCP 服务器
项目简介
- 本仓库实现了一个 MCP 服务器,用于将 Sekia 守护进程的能力以 MCP 工具的形式暴露给 MCP 客户端(如 Claude Desktop 等 AI 助手)。核心功能包括查询 Daemon 状态、获取已连接的代理列表、获取已加载的工作流、热重载工作流、向 Sekia NATS 总线发布合成事件,以及向特定代理发送命令。
主要功能点
- 提供以下 MCP 工具及对应处理逻辑:
- get_status:返回 Daemon 的健康信息、运行时、NATS 状态、代理/工作流数量等。
- list_agents:列出已连接的代理及其能力、命令、心跳等信息。
- list_workflows:列出已加载的 Lua 工作流及其模式、事件统计等信息。
- reload_workflows:热重新加载所有 Lua 工作流文件。
- publish_event:向 Sekia NATS 事件总线发布一个合成事件,触发相应的 Lua 工作流。
- send_command:向某个已连接的代理发送命令(如发送 Slack 信息、创建 GitHub 评论等),命令通过 MCP 客户端签名后在 NATS 上发布。
- 通过 stdio 传输与 MCP 客户端交互(Claude Desktop 等客户端通过 sekia-mcp 子进程实现通信)。
- 服务器端负责连接 NATS、注册 MCP 工具、处理请求、返回结果,支持错误处理和返回文本/JSON 形式的响应。
安装与运行
- 构建 MCP 服务器可执行文件:
- go build ./cmd/sekia-mcp
- 运行前提(配置来源见下一节配置):
- MCP 服务器需要连接到 NATS,且需要能够与 Daemon 的 Unix 套接字进行通信。
- 示例运行方式通常通过配置文件 sekia-mcp.toml 指定 NATS URL、DAEMON 的 Unix 套接字路径等信息,随后执行 sekia-mcp 启动。
服务器配置示例(MCP 客户端配置信息)
说明:以下 JSON 配置用于 MCP 客户端连接到该 MCP 服务器。MCP 客户端需要提供 server 名称、启动命令及参数等信息,以便与 MCP 服务器建立交互。具体字段含义见下方注释。
{ "server_name": "sekia", "command": "sekia-mcp", "args": [], "env": { "SEKIA_NATS_URL": "nats://127.0.0.1:4222", "SEKIA_DAEMON_SOCKET": "/tmp/sekiad.sock" } // 说明: // - server_name: MCP 客户端在 UI 或日志中显示的服务器名称,这里为 sekia。 // - command / args / env: 用于在客户端(如 Claude Desktop)启动 sekia-mcp 子进程并传递环境变量。环境变量需指向运行中的 NATS 服务及 Daemon 的 Unix 套接字。 // - 该配置仅用于 MCP 客户端的启动与连接,与 Daemon 的运行参数无直接耦合。 }
基本使用方法
- 启动 MCP 服务端
- 使用 sekia-mcp 可执行文件在具备所需权限的环境中启动 MCP 服务。
- 它会通过配置的 SEKIA_NATS_URL 与 SEKIA_DAEMON_SOCKET 连接到 NATS 总线和 Daemon,以暴露工具给 MCP 客户端。
- 连接与使用
- MCP 客户端通过标准 MCP 协议向该服务器发起请求(读取状态、列出代理、列出工作流、热加载、发布事件、发送命令等)。
- 请求返回 JSON/文本形式的响应,或在错误情况下返回错误信息。
- 典型工作流
- 通过 Claude Desktop 等 MCP 客户端配置连接 sekia,选择需要的工具(如 get_status、list_agents、publish_event 等),并传入相应参数资源以执行操作。
- 服务器端将请求转化为 NATS 操作(如发布事件、发起命令等),并返回结果。
注意:MCP 客户端在本仓库中未给出具体代码实现细节,请按以上 JSON 配置进行客户端启动与连接设置。