xfmr-zem

使用说明

  • 项目简介
    • xfmr-zem 是一个基于 MCP(Model Context Protocol)的后端服务框架,旨在为 LLM 客户端提供统一的上下文信息与能力,包括资源管理、工具执行和 Prompt 模板渲染。通过 JSON-RPC 与客户端通信,服务器端负责会话管理、能力声明以及多传输协议支持,并与 ZenML 结合实现生产化的数据管道编排。
  • 主要功能点
    • MCP 服务器核心:实现服务器端工具的注册、调用与数据处理,遵循 MCP 的请求/响应模式。
    • 资源与工具管理:提供统一的数据读取/写出、工具注册与执行能力,以及对 Prompt 模板的渲染和输出。
    • 传输与会话:支持多种传输方式,提供会话管理与能力声明。
    • ZenML 集成:通过 ZenML 声明和执行流水线,提供可观测性、缓存、并行化等生产特性。
    • 参数化与配置:支持从 YAML/参数文件加载参数、环境变量覆盖、以及通过 PipelineClient 的参数合并实现灵活参数注入。
  • 安装步骤
    • 下载代码并进入项目目录。
    • 安装依赖(例如 Python 虚拟环境中安装所需库,如 FastMCP、ZenML 等)。
    • 启动 MCP 服务器(示例服务器脚本在各自目录中,例如 Nemo Curator、OCR、Data Juicer 等服务都提供 server.py 的入口,直接运行即可)。
  • 服务器配置(示例,服务端 MCP 客户端使用的配置信息)
    • MCP 客户端需要的配置信息以 JSON 形式描述服务器的定位与启动方式。注:MCP 客户端会自动将 command 设置为当前系统 Python 解释器,并将 args 设置为服务器脚本的路径。因此配置中只需要指定服务器的定位信息(路径/名称),以便 MCP 客户端能够解析出实际的启动命令。
    • 下面给出一个准确的配置示例,展示仓库中常见服务器的定位方式。单个服务器的字段含义:server_name(服务器名称)、server_dir(相对于包的服务器目录)、start_script(服务器入口脚本名)。客户端会自动补充 command 与 args:
    • 示例(JSON,多个服务器):
    • { "nemo_curator": { "server_name": "nemo_curator", "server_dir": "servers/nemo_curator", "start_script": "server.py" }, "ocr_vietocr": { "server_name": "ocr_vietocr", "server_dir": "servers/ocr", "start_script": "server.py" }, "data_juicer": { "server_name": "data_juicer", "server_dir": "servers/data_juicer", "start_script": "server.py" } }
    • 说明:
      • 服务器的实际启动命令与参数将由 MCP 客户端在运行时组装。客户端将使用当前系统 Python 解释器作为 command,并将服务器入口脚本路径作为参数发送给服务器进程启动。
      • 上述配置中的 server_dir 与 start_script 尽量对应仓库中的实际目录结构,以便运维在需要时进行定位与排查。
  • 基本使用方法
    • 安装并启动 MCP 服务端后,使用 MCP 客户端通过配置好的服务器列表连接并调用工具,完成数据读取、工具执行、以及结果的返回与后续管道处理。
    • 典型工作流包括:Zoo(资源)读取、工具调用、输出结果落盘等。你可以在 pipelines.yaml 中通过 ZemClient 描述需要的步骤与服务器的组合关系,Zem 将基于 MCP 服务器提供的工具自动组装工作流。

服务器信息