Vörðr MCP 服务端
使用说明
- 项目简介
- 该仓库实现了一个能够对外提供 MCP 协议支持的服务端组件,核心采用 Rust + Axum 构建的 HTTP JSON-RPC 服务。服务端暴露工具定义,以及通过工具调用来触发后端流程(如创建、启动、停止容器等),并与底层引擎(生命周期、状态管理、网络、镜像等)协同工作,方便对接 LLM 客户端进行上下文获取和外部功能调用。
- 主要功能点
- MCP 核心请求处理:支持 JSON-RPC 2.0 风格的请求格式,处理 initialize、initialized、tools/list、tools/call、ping 等方法。
- 工具注册与调用:通过 MCP 工具定义(get_tool_definitions),LLM 客户端可查询可用工具并发起调用(如 vordr_run、vordr_ps、vordr_inspect 等)。
- 服务器端路由与健康检查:提供 /health、/tools、/ 的入口,方便健康状态查询和工具清单获取。
- 与底层引擎集成:在工具调用路径中可触发容器生命周期、网络、镜像等引擎操作,完成对资源的实际管理。
- 安全与扩展性:日志输出、错误处理,以及可扩展的工具集与能力声明,适配多种 MCP 客户端。
- 面向生产的 API 风格:通过 JSON-RPC 形式返回结果或错误,便于 LW/SaaS 场景中的对话式调用。
- 安装与运行步骤
- 先确保系统环境具备 Rust 与 Cargo,随后在仓库根目录执行编译命令:
- cargo build --release
- 启动 MCP 服务器(该实现作为同一可执行体的一部分,使用 Serve 子命令启动):
- 运行命令示例:vordr serve --host 0.0.0.0 --port 8080
- 启动时会绑定在指定地址与端口,并以默认数据库路径、根目录以及运行时配置进行初始化。
- 运行时依赖与配置
- 服务端会利用 VördR 的引擎组件(生命周期、状态管理、网络等)来实现 MCP 工具的具体执行能力。
- 先确保系统环境具备 Rust 与 Cargo,随后在仓库根目录执行编译命令:
- 服务器配置(MCP 客户端配置)
- 说明:MCP 客户端需要提供服务器启动信息(server name、command、args)以连接到 MCP 服务器。以下配置示例描述如何通过客户端启动服务器,以及如何通过 HTTP 端点与 MCP 服务器对接。
- 伪 JSON 配置示例(客户端需要,仅用于描述启动服务器的命令与参数,不需要在客户端中执行代码): { "server_name": "vordr-mcp", "command": ["vordr"], "args": [ "serve", "--host", "0.0.0.0", "--port", "8080", "--db-path", "/var/lib/vordr/vordr.db", "--root", "/var/lib/vordr", "--runtime", "youki" ] }
- 配置说明
- server_name: MCP 服务端的名称标识,便于客户端区分不同 MCP 服务实例。
- command: 启动 MCP 服务端的可执行命令(这里对应仓库中的 vordr 二进制)。
- args: 启动参数,包含要绑定的主机、端口以及运行时、数据库与根目录路径等信息。客户端仅需读取该信息以了解如何启动并连接到 MCP 服务端。
- 基本使用方法
- 如何连接与使用
- 向 MCP 服务器发送 JSON-RPC 请求,最基本的流程包括初始化握手、获取工具列表、调用工具等。
- 请求示例(对等端点将接收并响应 JSON-RPC 风格的负载,实际请求请通过客户端实现进行发送)。
- 常见操作
- 查询可用工具:发送 methods 为 tools/list 的请求,服务器返回工具集合及描述。
- 调用工具:发送方法为 tools/call,带入 tool 名称和参数,服务器执行对应的后端逻辑(如创建、启动容器等),返回执行结果。
- 运行与监控
- 启动后可以通过 /health 端点定期健康检测,通过 /tools 端点查看工具清单。
- 结合客户端的对话式工作流,LLM 可以根据工具描述动态选择并调用 MCP 提供的功能。
- 如何连接与使用