Sontag MCP 服务端

使用说明(Markdown 格式)

  • 项目简介

    • Sontag 提供一个可作为 MCP 服务器的后端实现,核心职责是通过标准化的 JSON-RPC 协议向 LLM 客户端提供分析上下文、资源访问、工具执行以及提示模板渲染等能力,并支持多会话、崩溃恢复和结果缓存等功能。
  • 主要功能点

    • 资源(Resource)托管与管理:对分析输入、源代码、编译/分析产物等数据进行组织、缓存与版本化,便于 LLM 客户端访问和复用。
    • 工具(Tools)注册与执行:暴露至少两个工具(如 eval、session_eval),支持无状态和有状态的分析会话,适用于单次分析或持久会话。
    • Prompt 模板与渲染:提供可渲染的分析相关提示与模板,以便 LLM 进行上下文对话、推理和指令执行。
    • JSON-RPC 交互:通过标准 JSON-RPC 协议处理初始化、请求调用、查询能力等操作,返回结构化的 JSON-RPC 响应或通知。
    • 会话与多实例管理:支持多实例并行运行、会话缓存、会话恢复、崩溃自动重启等,确保长期可用性。
    • 传输协议与扩展:设计上可通过多种传输方式(如 Stdio、SSE、WebSocket)与客户端通信,当前实现以 Stdio 为核心,未来可扩展。
    • 安全、可扩展性:实现会话隔离、缓存策略、以及对分析任务的可控执行,便于在大规模 LLM 场景中扩展。
  • 安装步骤

    • 构建
      • 使用 CMake + Ninja 构建,开启 MCP 支持:
        • cmake .. -G Ninja -DSONTAG_MCP=ON
        • ninja -v
    • 运行服务器
      • 启动命令:./build/sontag --mcp
    • 客户端接入(MCP 客户端需要配置连接信息,示例描述如下)
      • 客户端在配置中需指定服务器名称、启动命令及参数等,以建立与 MCP 服务器的连接。示例配置字段包含:server name、command、args 等,用于 Claude、Codex 等工具接入 MCP 服务器。
  • 服务器配置(给 MCP 客户端的连接信息示意说明)

    • 服务器名称(server name):sontag
    • 启动命令(command):/path/to/sontag
    • 启动参数(args):["--mcp", "--std", "c++23"](其中 std 版本可根据实际需要调整,如 c++20、c++23 等)
    • 注释:以上字段用于 MCP 客户端在配置文件中注册远程 MCP 服务器,客户端并不需要实现具体逻辑,仅使用服务器提供的能力与接口进行调用。
  • 基本使用方法

    • 步骤
      1. 构建并启动 MCP 服务器(如上安装步骤所示)。
      2. 配置客户端,指向已启动的 MCP 服务器(命名为 sora/sontag,命令与参数按上述示例填写)。
      3. 客户端通过 JSON-RPC 请求调用服务器提供的能力,如读取资源、调用工具、获取 Prompts 等。
      4. 服务器返回标准的 JSON-RPC 响应,或发送通知给客户端。
    • 常用能力
      • 初始化握手:客户端与服务器建立会话并交换协议版本、能力信息等。
      • 查询工具列表:获取已暴露的分析工具及其输入要求。
      • 调用工具:向服务器传递工具名称和所需参数,获取分析结果或执行输出。
      • 读取/渲染资源、Prompts:请求资源数据、获取并渲染 Prompt 模板。
      • 会话管理与恢复:创建、切换、重启会话,确保中断后的继续执行。

服务器信息