SnapTray MCP 服务端
使用说明
-
项目简介
- SnapTray 将 MCP 服务嵌入到主应用中,提供面向本地 LLM 客户端的上下文服务。通过本地 HTTP 的 JSON-RPC 接口,LLM 可以读取资源、调用工具、获取并渲染 Prompt 模板,从而获得可用的上下文信息和外部功能访问能力。
- MCP 协议要点包括:初始化、工具列表查询、工具调用、以及心跳/通知等,确保客户端可以在本地安全、可控地获取所需能力。
- 本实现的服务器部署在 SnapTray 主进程中,端口为本地回环地址,默认端口为 39200,端点为 http://127.0.0.1:39200/mcp。
-
主要功能点
- 资源管理 (Resources):提供可供 LLM 客户端访问的数据资源与数据访问能力。
- 工具注册与执行 (Tools):注册和执行外部功能,LLM 可以通过工具调用实现对外部能力的访问。
- 提示模板(Prompts)渲染:定义与渲染可定制的 LLM 交互模板,支持灵活的对话模式。
- JSON-RPC 通信:遵循 MCP 的核心请求/响应格式,包含 initialize、工具列表、工具调用、ping 等方法。
- 会话与能力声明:服务器端维护会话状态并声明自身能力,便于客户端协商使用方式。
- 本地传输协议:当前实现使用本地 Streamable HTTP 传输,便于在本地环境中与 LLM 客户端进行高效通信。
- 安全与本地性:绑定在本地回环地址,仅允许本地客户端访问,便于开发、调试与隔离。
-
安装步骤
- 先确保系统具备构建 SnapTray 的依赖(Qt 6、CMake、Ninja 等),按项目提供的脚本进行构建与打包。
- 构建完成后运行 SnapTray 主应用。MCP 服务器将作为主进程的一部分自动启动,无需单独部署独立的 MCP 服务端二进制。
- 在本地环境中,确保网络访问权限允许对 http://127.0.0.1:39200/mcp 的本地请求。
-
服务器配置(MCP 客户端配置说明)
- 说明:MCP 客户端需要一个描述服务器信息的配置项,用于连接与交互。下列信息仅用于描述连接参数,实际连接仍由客户端与 SnapTray 主应用在本地协商并建立。
- 配置示例(JSON 形式描述,用于理解,不作为代码执行):
{
"serverName": "snaptray-local",
"endpoint": "http://127.0.0.1:39200/mcp",
"startCommand": "snaptray",
"args": []
}
说明:
- serverName:本地服务器的标识名,便于在客户端管理多个 MCP 服务器时区分。
- endpoint:MCP 服务的访问地址,端点为本地回环地址的 /mcp 路径。
- startCommand、args:MCP 服务器为内嵌进 SnapTray 主应用,无需独立启动脚本,因此 startCommand/args 仅用于描述性注释,实际运行由 SnapTray 自动启动,客户端仅需连接到上述 endpoint。
- 注意:MCP 客户端的连接并不需要在此处提供完整的启动命令行,只需知道服务器地址和端点即可在本地与 SnapTray 通信。
-
基本使用方法
- 启动与连接
- 启动 SnapTray 主应用(自动启动 MCP 服务)。
- 使用 MCP 客户端配置,连接至 http://127.0.0.1:39200/mcp 即可开始交互。
- 常用交互流程
- 调用 initialize:服务器初始化,获取能力信息(包括可用工具、资源等)。
- 列表工具:通过 tools/list 获取可用工具集合。
- 调用工具:通过 tools/call 传入工具名称及参数,请求执行并获取结果。
- 读取资源、查询并渲染 Prompt 模板以驱动 LLM 对话。
- 运行与排错
- 若在本地环境中无法访问,请确认 SnapTray 已启动且运行在本地回环地址。
- 使用简单的 ping 请求测试连通性。
- 启动与连接