tome MCP 服务器

<注释>使用说明(Markdown 格式,便于理解与操作)</注释>

  • 项目简介

    • Tome 内置的 MCP 服务器实现,名称为 tome-mcp,提供两个工具接口:list_skills(列出可用技能)与 read_skill(读取指定技能的 SKILL.md 内容)。
    • 服务器通过 JSON-RPC 形式在 STDIO 通道与 MCP 客户端通信,供 LLM 客户端查询上下文信息和技能数据。
    • 服务器启动与运行与 Tome 的命令空间集成,能够在配置加载后自动发现技能并暴露给客户端。
  • 主要功能点

    • 加载配置并发现技能:在启动时扫描配置源,解析并汇总可用技能列表(包括技能名称、来源、路径等元数据)。
    • 列出技能:list_skills 返回库中所有技能的简要信息,便于客户端了解可用技能数量与来源。
    • 读取技能内容:read_skill 接受技能名称,返回该技能目录下 SKILL.md 的全文内容,且在读取前进行边界检查,防止越界读取。
    • 安全性与边界控制:在读取 SKILL.md 时进行路径解析和边界判定,确保不会读取技能目录外的内容。
    • 与 Tome 集成:与 Tome 的发现、存储、分发等模块协同工作,复用现有的技能目录和库结构。
    • 启动方式灵活:可以独立二进制运行(tome-mcp),也可通过 Tome CLI 的 serve 命令启动同一实现。
  • 安装步骤

    • 安装 Rust 开发环境(版本要求请参照项目要求)。
    • 构建整个工作区或独立构建 mcp 服务器二进制:
      • 使用 cargo 构建 tome-mcp 二进制(或通过发行版获取已构建的二进制)。
    • 确保依赖库已正确拉取并编译通过。
  • 服务器配置(MCP 客户端需要的 JSON 配置注释)

    • MCP 客户端在连接时需要知道服务器的启动命令与参数,以及服务器的名称。以下为标准字段示例(请在 MCP 客户端配置中使用,不是客户端代码的一部分): { "server": "tome-mcp", "command": "tome-mcp", "args": [] }
    • 说明:
      • server: MCP 服务器在客户端端待连接的服务器名称,等同于 tod 的实现中定义的服务器标识(此处为 tome-mcp)。
      • command: 启动 MCP 服务器的可执行命令名。
      • args: 启动命令的参数列表,如需要可添加其他运行参数(此处为空数组,表示默认启动)。
    • 注:MCP 客户端不需要了解服务器内部实现细节,只需通过上述 JSON 描述正确启动并建立 JSON-RPC 连接即可。
  • 基本使用方法

    • 启动方式
      • 直接运行独立二进制 tome-mcp,或通过 Tome 提供的“serve”命令启动同一实现的服务器。
    • 使用流程(对 MCP 客户端友好)
      • 客户端通过 JSON-RPC 请求调用 list_skills,获得技能列表及元数据。
      • 客户端通过 JSON-RPC 请求调用 read_skill,传入目标技能名称,获取 SKILL.md 的文本内容。
    • 注意事项
      • 启动时应确保配置中已经正确发现技能目录并且权限可访问。
      • 读取技能内容时会验证读取路径在技能目录范围内,确保安全边界。
      • 若技能列表为空,list_skills 将返回相应无技能信息的提示文本。
  • 运行与测试

    • 服务器实现包含自述的测试用例与集成测试,确保技能发现、读取、路径边界等行为符合预期。
  • 运行产物与命名

    • 服务器二进制名称通常为 tome-mcp,或通过 tome serve 启动同一实现的 MCP 服务。
    • 该实现已经内嵌在 Tome 的代码库中,作为一个可独立运行的 MCP 服务提供技能查询能力。
  • 额外说明

    • 该实现以现有的发现和库管理模块作为底层数据来源,确保技能的一致性、可追踪性以及与日后扩展的兼容性。
    • MCP 服务端具备对技能集合的只读查询能力,不对外部写入库,确保安全性。

服务器信息