关于 Harvester MCP Server
Harvester MCP Server 是面向 Harvester HCI 集群的 Go 实现 MCP 服务,让 AI 助手通过自然语言执行资源查询和管理操作。它同时支持 Kubernetes 核心资源与 Harvester 专属资源,并提供便于阅读的结果格式。
主要功能
- 01列出和查看 Kubernetes 核心资源
- 02删除 Pod
- 03列出 Harvester 虚拟机、镜像、卷和网络
- 04按命名空间或状态分组资源
- 05提供简洁摘要与详细视图
适用场景
- 01检查集群节点、服务和命名空间
- 02查看或删除指定 Pod
- 03查询虚拟机、镜像、卷或网络
MCP 相关
该 MCP 服务将 Harvester 集群资源操作作为工具提供给 MCP 客户端,并将结果整理为适合阅读的文本。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Harvester MCP 服务
重要
这是一个社区项目,不受 Harvester 官方支持。如果你正在寻找 Harvester 官方支持的 MCP 服务,请使用 harvester/harvester-mcp-server。
适用于 Harvester HCI 的 Model Context Protocol(MCP)服务,可让 Claude Desktop、Cursor 和其他 AI 助手通过 MCP 协议与 Harvester 集群交互。
概述
Harvester MCP Server 是一个专为 Harvester HCI 设计的 Go 语言实现的 Model Context Protocol(MCP) 服务。它允许 Claude Desktop 和 Cursor 等 AI 助手对 Harvester 集群执行 CRUD 操作。Harvester 集群本质上是带有 Harvester 专用 CRD 的 Kubernetes 集群。
工作流
下图展示了 Harvester MCP Server 如何搭建 AI 助手与 Harvester 集群之间的桥梁:
graph LR;
subgraph "AI Assistants"
A[Claude Desktop] --> C[MCP Client];
B[Cursor IDE] --> C;
end
subgraph "Harvester MCP Server"
C --> D[MCP Server];
D --> E[Resource Handler];
E --> F[Formatter Registry];
F -->|Get Formatter| G[Core Resource Formatters];
F -->|Get Formatter| H[Harvester Resource Formatters];
end
subgraph "Kubernetes / Harvester"
G --> I[Kubernetes API];
H --> I;
I --> J[Harvester Cluster];
end
style A fill:#f9f,stroke:#333,stroke-width:2px;
style B fill:#f9f,stroke:#333,stroke-width:2px;
style D fill:#bbf,stroke:#333,stroke-width:2px;
style J fill:#bfb,stroke:#333,stroke-width:2px;
工作原理
- LLM 集成:Claude Desktop 和 Cursor 等 AI 助手通过 MCP 协议连接到 Harvester MCP Server。
- 请求处理:MCP Server 接收 AI 助手的自然语言请求,并将其转换为具体的 Kubernetes 操作。
- 资源处理:资源处理器识别请求涉及的资源类型和操作。
- 格式化器选择:格式化器注册表为相应的资源类型选择合适的格式化器。
- API 交互:服务与 Harvester 集群的 Kubernetes API 交互。
- 响应格式化:将结果格式化为便于大模型理解的易读文本。
- 向用户展示:将格式化后的响应返回给 AI 助手,以便向用户展示。
这种架构让 AI 助手能够通过自然语言与 Harvester 集群交互,使用户更容易执行复杂的 Kubernetes 操作。
功能
-
Kubernetes 核心资源:
- Pod:列表、获取、删除
- Deployment:列表、获取
- Service:列表、获取
- Namespace:列表、获取
- Node:列表、获取
- 自定义资源定义(CRD):列表
-
Harvester 专用资源:
- 虚拟机:列表、获取
- 镜像:列表
- 卷:列表
- 网络:列表
-
增强的用户体验:
- 为所有资源提供易读的格式化输出
- 按命名空间或状态自动对资源分组
- 简明摘要,突出最相关的信息
- 提供详细视图,全面检查资源
要求
- Go 1.23+
- 可通过有效的 kubeconfig 访问 Harvester 集群
安装
从源代码安装
# Clone the repository
git clone https://github.com/starbops/harvester-mcp-server.git
cd harvester-mcp-server
# Build
make build
# Run
./bin/harvester-mcp-server
使用 Go Install 安装
go install github.com/starbops/harvester-mcp-server/cmd/harvester-mcp-server@latest
配置
服务会按以下顺序自动查找 Kubernetes 配置:
- 集群内配置(在 Kubernetes 集群内部运行时)
--kubeconfig标志指定的路径KUBECONFIG环境变量指定的路径- 默认位置
~/.kube/config
命令行标志
Usage:
harvester-mcp-server [flags]
Flags:
-h, --help help for harvester-mcp-server
--kubeconfig string Path to the kubeconfig file (default is $KUBECONFIG or $HOME/.kube/config)
--log-level string Log level (debug, info, warn, error, fatal, panic) (default "info")
示例
使用指定的 kubeconfig 文件:
harvester-mcp-server --kubeconfig=/path/to/kubeconfig.yaml
使用 KUBECONFIG 环境变量:
export KUBECONFIG=$HOME/config.yaml
harvester-mcp-server
启用调试日志:
harvester-mcp-server --log-level=debug
与 Claude Desktop 搭配使用
- 安装 Claude Desktop
- 打开 Claude Desktop 配置文件(
~/Library/Application\ Support/Claude/claude_desktop_config.json或类似路径) - 在
mcpServers部分添加 Harvester MCP 服务:
{
"mcpServers": {
"harvester": {
"command": "/path/to/harvester-mcp-server",
"args": ["--kubeconfig", "/path/to/kubeconfig.yaml", "--log-level", "info"]
}
}
}
- 重启 Claude Desktop
- Claude 现在应该可以使用 Harvester MCP 工具
Claude Desktop 示例查询
在 Claude Desktop 中配置 Harvester MCP 服务后,你可以询问:
- “我的 Harvester 集群中有多少个节点?”
- “列出 cattle-system 命名空间中的所有 Pod”
- “显示 cattle-system 命名空间中名为 rancher-789c976c6-xbvmd 的 Pod 的详细信息”
- “列出 default 命名空间中的所有虚拟机”
- “harvester-system 命名空间中正在运行哪些服务?”
开发
项目结构
cmd/harvester-mcp-server:应用程序主入口pkg/client:Kubernetes 客户端实现pkg/cmd:使用 Cobra 实现的 CLI 命令pkg/mcp:MCP 服务实现pkg/kubernetes:Kubernetes 资源的统一处理程序pkg/tools:用于与 Harvester 资源交互的旧版工具实现
资源处理
项目采用统一的方式处理 Kubernetes 资源:
-
pkg/kubernetes/resources.go文件包含一个ResourceHandler,为所有资源类型提供通用操作:- 列出资源,并正确处理命名空间
- 按名称获取资源详情
- 创建和更新资源
- 删除资源
-
pkg/kubernetes/formatters*.go文件包含针对不同资源类型的格式化器:- 每个格式化器都会将原始 Kubernetes 对象转换为易读文本
- 以一致的方式提取并格式化特定资源的详情
- 标准 Kubernetes 资源和 Harvester 专属资源均有自定义格式化器
-
pkg/kubernetes/types.go文件将便于识别的资源类型名称映射到 Kubernetes GroupVersionResource 对象:- 便于在代码中使用简单名称引用资源
- 集中定义资源类型
添加新工具
添加新工具的步骤:
- 如果是新的资源类型,将其添加到
pkg/kubernetes/types.go - 在某个格式化器文件中为该资源实现格式化器
- 在
pkg/mcp/server.go的registerTools方法中,使用统一资源处理程序注册该工具
格式化函数
每种资源类型都有两个格式化函数:
formatXList:按命名空间分组,使用简洁信息格式化资源列表formatX:使用详细信息格式化单个资源
许可证
本项目采用 Apache License 2.0 许可协议,详情请参阅 LICENSE 文件。
致谢
- Harvester HCI - 本项目的基础
- mark3labs/mcp-go - Model Context Protocol 的 Go SDK
- manusa/kubernetes-mcp-server - Kubernetes MCP 服务的参考实现
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。