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 服务器提供的工具自动组装工作流。