SGAI MCP 服务端

使用说明(Markdown 格式)

  • 项目简介

    • 该仓库实现了一个 MCP 服务器端,核心通过 Go 语言实现,提供若干 MCP Tool,用于读取技能、获取代码片段、更新工作流状态、发送和读取消息,以及简单的任务/提示管理能力。服务器通过 MCP 的 StdIO 传输与客户端通信,适合与 LLM 客户端在同一进程或同一容器中直接对接。
  • 主要功能点

    • 提供以下 MCP Tool(对于 LLM 客户端均通过 JSON-RPC 调用):
      • find_skills: 按名称查询技能片段,支持精确匹配和模糊搜索,返回匹配结果文本。
      • find_snippets: 按语言和查询搜索代码片段,返回文本内容或索引列表。
      • update_workflow_state: 更新工作流状态、任务和进度,并可附加描述性进展。
      • send_message: 给工作流中的其他代理发送消息。
      • check_inbox: 检查当前代理的未读消息。
      • check_outbox: 检查当前代理已发送的消息。
      • peek_message_bus: 针对协调人(coordinator)提供的系统级消息概览(仅协调者可用)。
      • project_todowrite / project_todoread: 读取与写入工程级待办事项(面向协同代理)。
      • ask_user_question / ask_user_work_gate: 以多选题形式向人类提供输入接口,支持后续对话。
    • 传输与流程
      • MCP 服务器采用 StdIO 传输,适合在同一进程/容器中与客户端对接;也具备可扩展性以接入其他传输层(如网络、SSE 等)。
      • 内部实现包含对 sgai 工作流状态的读取、写入与持久化,允许 LLM 通过工具实现对工作流的查询与驱动。
  • 安装与运行步骤

    • 环境准备
      • 需要 Go 语言环境(建议 1.20+)。
    • 构建与运行
      • 构建:在仓库根目录执行 go build ./cmd/sgai 或使用 go install。
      • 运行 MCP 服务(示例命令,具体路径按实际环境调整):
        • 通过环境变量指定工作目录,例如:SGAI_MCP_WORKING_DIRECTORY=/path/to/your/project
        • 通过环境变量指定是否交互式:SGAI_MCP_INTERACTIVE=yes(默认)
        • 执行 sgai mcp(仓库内实现的入口)以启动 MCP 服务端,服务器将使用 StdIO 与客户端通信。
    • 客户端配置简述(MCP 客户端无需代码实现即可理解的关键信息)
      • server: 名称为 sgai,命令为 ["sgai", "mcp"],工作目录由 SGAI_MCP_WORKING_DIRECTORY 指定。
      • 启动参数与环境变量注释说明见下方“服务器配置示例注释”(非代码块呈现,以便直观理解)。
    • 重要提示
      • MCP 客户端无需依赖仓库中的前端/后端 UI;它只需要通过 MCP 的工具接口对接 sgai 的功能。
      • 如果你希望在测试中使用,请确保 sgai.mcp 的环境变量配置与实际工作目录结构匹配。
  • 服务器配置(MCP 客户端需要的连接信息说明,JSON 格式文本呈现,不直接作为代码块展示) { "server": { "name": "sgai", "command": ["sgai", "mcp"], "args": [], "description": "SGAI MCP 服务端,用于向 LLM 提供资源、工具和提示模板的能力集合" }, "environment": { "SGAI_MCP_WORKING_DIRECTORY": "<你的工作目录路径,例如 /home/user/project>", "SGAI_MCP_INTERACTIVE": "yes" }, "notes": "该配置用于 MCP 客户端连接 SGAI 的 MCP 服务器。命令为 sgai mcp,工作目录指定 sgai 项目根目录。环境变量用于控制工作目录与交互模式。客户端本身不需要包含服务器实现逻辑。" }

  • 基本使用方法

    • 启动阶段
      • 准备工作目录,并确保 GOAL/相关元数据就绪(服务器端通过实现的工具,与 GOAL.md/元数据交互)。
      • 启动 MCP 服务端(sgai mcp),确保工作目录正确挂载。
    • 运行阶段
      • LLM 客户端通过 MCP 调用工具,如 find_skills、update_workflow_state、check_inbox 等,获取文本或结构化结果,并据此推动工作流。
    • 常见工作流
      • 通过 find_skills/find_snippets 获取可用能力与代码片段,交由 LLM 决定具体应用。
      • 通过 update_workflow_state 更新任务、进度与状态。
      • 通过 check_inbox/check_outbox 与其他代理进行协作与沟通。
    • 注意
      • MCP 客户端的正确配置是确保与服务器对接的关键,务必确保工作目录一致并正确设置交互模式。

服务器信息