ChatML MCP 服务端实现
使用说明(Markdown 格式)
-
项目简介
- 该项目在 ChatML 框架中实现了一个 MCP 服务器,负责以标准化的 JSON-RPC 方式向 LLM 客户端提供资源数据、可执行工具,以及可渲染的提示模板等上下文信息。服务器以 Go 后端为资源源,通过 MCP 工具箱对外暴露能力,支持在 STDIO、Server-Sent Events (SSE) 与 HTTP 等传输模式下工作,并能够管理会话、能力声明及多工作区环境。
-
主要功能点
- 内置 MCP 服务器:采用 Claude Agent SDK 构建,提供名称为 chatml 的 MCP 服务,版本 1.0.0。
- 资源、工具、Prompts 的托管与执行:通过 MCP 工具注册和实现,LLM 可以读取资源、调用外部工具、获取或渲染提示模板。
- 会话与工作区上下文管理:结合本地工作区上下文、后端 REST API、以及可选的 .mcp.json/.mcp-servers.json 配置实现多会话、多工作区管理。
- 多传输协议支持:内置对 stdio、SSE、HTTP 的支持,便于在不同部署环境中暴露 MCP 服务。
- 配置可扩展性:支持通过 mcp-servers-file 与 dotfile 配置灵活注入外部 MCP 服务,及程序化的代理/代理工具定义。
- 安全性与可观测性:通过后端鉴权、日志与错误处理,以及对工具调用、事件流的详细记录,便于监控与调试。
-
安装步骤
-
- 安装依赖
- 在仓库根目录执行依赖安装命令,确保所有 MCP 相关依赖正确安装。
-
- 构建/启动 MCP 服务器
- 使用项目提供的构建流程将 TypeScript 源码编译为可执行的服务器组件,或使用现成的运行环境直接启动 MCP 服务。
-
- 配置 MCP 服务器
- 该仓库允许以下方式配置 MCP 服务器:
- 内置 chatml MCP 服务器:直接在后端加载并运行,无需额外外部进程。
- 外部 MCP 服务器:通过一个 JSON 配置文件(.mcp.json 或后端提供的 mcp-servers.json)来注入外部服务器。
-
- 启动后端服务
- 确保后端 Go 服务(ChatML 后端)已启动并可访问,MCP 服务器将通过后端暴露的 API 与前端/LLM 通信。
-
-
服务器配置(给 MCP 客户端的配置示例,务必以 JSON 形式提供给客户端)
- 名称(server name): chatml
- 启动方式(type): stdio
- 启动命令(command): node
- 启动参数(args): 包含 MCP 服务器入口的可执行脚本路径及必要参数,例如:
- ["path/to/chatml-mcp-entry.js", "--backend-url=http://127.0.0.1:9876"]
- 环境变量(env): 如需要,请在 env 中注入后端地址、鉴权令牌等
- 启用标志(enabled): true 注:以上示例用于描述性说明,实际路径和参数需结合实际部署环境配置。此 MCP 服务器在仓库内以 TypeScript/Node 形式实现,内置 chatml 服务器并可通过后端配置注入外部 MCP 服务器。
-
基本使用方法
- 启动后端服务:确保 ChatML 后端启动并可访问。
- 配置 MCP 服务器并启动:将上述 MCP 服务器配置提供给后端,后端将按配置启动相应的 MCP 服务。
- 客户端接入:LLM 客户端通过 JSON-RPC 调用 MCP 的资源读取、工具调用、Prompts 获取等能力,完成任务上下文的读取与执行。
- 监控与日志:关注 MCP 服务的日志输出、工具调用记录、以及可能的鉴权错误,确保服务正常工作。