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