收割机MCP服务器
Harvester HCI的模型上下文协议(MCP)服务器,使Claude Desktop、Cursor和其他AI助手能够通过MCP协议与Harvester集群进行交互。
概述
工作流程
下图说明了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服务器。
- 请求处理MCP服务器接收来自AI助手的自然语言请求,并将其转换为特定的Kubernetes操作。
- 资源处理:资源处理程序标识所请求的资源类型和操作。
- 格式化程序选择:格式化程序注册表为资源类型选择适当的格式化程序。
- API交互:服务器与Harvester集群的Kubernetes API交互。
- 响应格式:结果被格式化为人类可读的文本,针对LLM消费进行了优化。
- 用户演示文稿:格式化的响应将返回给AI助手,以呈现给用户。
这种架构使AI助手能够通过自然语言与Harvester集群进行交互,使用户更容易访问复杂的Kubernetes操作。
特性
- Kubernetes核心资源:
- Pod:列表、获取、删除 - 部署:列表,获取 - 服务:列表,获取 - 命名空间:列表,获取 - 节点:列表,获取 - 自定义资源定义(CRD):列表
- 收割机专用资源:
- 虚拟机:列表,获取 - 图片:列表 - 卷:列表 - 网络:列表
- 增强的用户体验:
- 所有资源的可读格式化输出 - 按命名空间或状态自动对资源进行分组 - 包含最相关信息的简明摘要 - 全面资源检查的详细视图
需求
- 转到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安装
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配置文件(
~/Library/Application\ Support/Claude/claude_desktop_config.json或类似) - 将收割机MCP服务器添加到
mcpServers章节:
{
"mcpServers": {
"harvester": {
"command": "/path/to/harvester-mcp-server",
"args": ["--kubeconfig", "/path/to/kubeconfig.yaml", "--log-level", "info"]
}
}
}- 重新启动克劳德桌面
- 克劳德现在应该可以使用收割机MCP工具了
Claude Desktop查询示例
在Claude Desktop中配置Harvester MCP服务器后,您可以提出以下问题:
- “我的Harvester集群中有多少节点?”
- “列出牛系统命名空间中的所有Pod”
- “显示牛系统命名空间中名为rancher-789c976c6-xbvmd的pod的详细信息”
- “列出默认命名空间中的所有虚拟机”
- “收割机系统命名空间中正在运行哪些服务?”
发展
项目结构
cmd/harvester-mcp-server:主要应用程序入口点pkg/client:Kubernetes客户端实现pkg/cmd:使用Cobra实现CLI命令pkg/mcp:MCP服务器实现pkg/kubernetes:Kubernetes资源的统一资源处理程序pkg/tools:用于与收割机资源交互的传统工具实现
资源处理
该项目使用统一的方法来处理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许可证2.0获得许可-请参阅 许可证 文件以获取详细信息。
致谢
- 收割机HCI -该项目的基础
- mark3labs/mcp go -用于模型上下文协议的Go SDK
- manusa/kubernes mcp服务器 -Kubernetes MCP服务器的参考实现

