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 请求测试连通性。

服务器信息