Datum MCP 服务器实现
使用说明(Markdown 格式)
-
项目简介
- 该项目实现了一个基于 Model Context Protocol 的服务器端组件,核心职责是向大语言模型客户端提供可管理的资源、工具以及可渲染的提示模板等上下文信息,并通过 JSON-RPC 与客户端通信。
-
主要功能点
- 资源与 CRD 相关操作:列出自定义 CRD、获取 CRD、以及通过服务器端进行资源的增删改查(通过服务器端 dry-run 支持保障安全性)。
- 工具与交互:提供工具清单、调用工具并返回结果,支持服务器端执行的 CRUD、校验等功能。
- 会话与上下文管理:在服务端维护并切换组织/项目上下文,以及命名空间,在同一会话中灵活切换资源作用域。
- 安全性与可观测性:默认对写操作进行 dry-run,提供 preflight 连接性检查,支持本地调试 HTTP 接口。
- 多传输通道:通过标准输入输出(STDIO)与客户端对话,另可选开启本地 HTTP 调试端口,便于调试和探索。
-
安装步骤
- 安装工具链
- 需要安装 Go 语言环境,并获得对外部依赖的网络访问。
- 构建服务器
- 在项目根目录执行构建命令,将生成 datumctl 可执行文件。
- 启动 MCP 服务端
- 运行 datumctl mcp 指令,指定目标上下文(组织或项目)与命名空间,例如: datumctl mcp --organization <组织ID> --namespace <命名空间> [--port 8080]
- 服务启动后,若指定了端口,将在 127.0.0.1 上暴露一个 HTTP 调试接口,供调试和工具调用使用。
- 安装工具链
-
服务器配置(MCP 客户端使用的配置信息,JSON 格式,包含 server name、command、args 等) 说明:以下 JSON 配置用于 MCP 客户端在启动时对 MCP 服务器进行连接配置。server name 用于标识服务器实例,command 与 args 指定启动该 MCP 服务器的命令及参数。请将 command 指向实际 datumctl 可执行文件的绝对路径,args 列表中包含启动服务器所需的参数,例如组织/项目上下文、命名空间及端口等。 { "serverName": "datum_mcp", "command": "/absolute/path/to/datumctl", "args": ["mcp", "--organization", "<your-org-id>", "--namespace", "<your-namespace>", "--port", "8080"] }
-
基本使用方法
- 如何连接与使用
- 通过上述 JSON 配置,MCP 客户端即可与服务器建立连接,客户端可以请求列出、读取、创建、更新、删除资源;也可以触发服务器端的 dry-run 验证,以及切换上下文等操作。
- 常用操作示例(由 MCP 客户端触发,服务器端响应 JSON-RPC 形式)
- initialize:服务器初始化,返回协议版本、服务器信息与能力。
- tools/list:获取可用工具清单(如列出 CRD、进行 YAML 验证等)。
- tools/call:按名称调用具体工具,并返回执行结果。
- 资源相关操作:读取/创建/更新/删除/列出资源等,均在服务器端通过 Kubernetes 动态客户端完成。
- 调试与排错
- 如开启了 HTTP 调试端口,可通过本地 HTTP 请求测试相应 API(如 datum/list_crds, datum/get_crd 等)。
- 如遇连接问题,请检查上下文配置是否正确(组织/项目、命名空间、以及 API 主机名是否可达)。
- 如何连接与使用