一个简单可靠的MCP(模型上下文协议)服务器,专为Kubernetes和Helm环境管理设计,并支持n8n集成。
k8s-mcp-server/
├── src/ # 源代码目录
│ ├── index.js # 主程序入口,处理生命周期和参数解析
│ ├── server.js # MCP + Express集成,服务器实现
│ ├── tools/ # 工具模块
│ │ ├── base-tool.js # 基础工具类
│ │ ├── kubectl-get.js # 资源查询工具(支持标签过滤)
│ │ ├── kubectl-logs.js # Pod日志查看工具
│ │ ├── kubectl-describe.js # 资源详细描述工具
│ │ ├── kubectl-cluster-info.js # 集群信息查询工具
│ │ ├── kubectl-get-yaml.js # 资源YAML格式输出工具
│ │ ├── kubectl-top-nodes.js # 节点资源使用监控
│ │ ├── kubectl-top-pods.js # Pod资源使用监控
│ │ ├── kubectl-top-containers.js # 容器资源使用监控
│ │ ├── kubectl-scale-deployment.js # 部署扩展工具
│ │ ├── kubectl-restart-deployment.js # 部署重启工具
│ │ ├── kubectl-edit-hpa.js # HPA编辑工具
│ │ ├── helm-list.js # Helm发布列表工具
│ │ ├── helm-status.js # Helm发布状态工具
│ │ ├── helm-repo-list.js # Helm仓库列表工具
│ │ ├── helm-get-values.js # Helm发布配置值工具
│ │ └── helm-history.js # Helm发布历史工具
│ └── utils/ # 实用函数
│ ├── logger.js # 日志系统
│ ├── validator.js # 输入验证(包括标签验证)
│ ├── kubectl.js # kubectl执行工具
│ └── helm.js # helm执行工具
├── package.json # 项目配置和依赖项
├── package-lock.json # 依赖锁定文件
├── Dockerfile # Docker容器构建文件
├── build.sh # Docker构建脚本
├── .gitignore # Git忽略文件配置
├── .cursorignore # Cursor编辑器忽略文件配置
└── README.md # 项目文档
src/index.js - 主程序入口,负责:
src/server.js - 服务器实现,负责:
npm install
npm run start:http
# 或指定端口
npm run start:http -- --port 3001
curl http://localhost:3001/health
docker build -t k8s-mcp-server .
⚠️ 重要: 启动容器时,需要将本地的.kube/config挂载到容器的/home/nodejs/.kube/config路径,以便MCP服务器可以访问Kubernetes集群。
# 使用本地kubeconfig
docker run -p 3001:3000 \
-v ~/.kube/config:/home/nodejs/.kube/config:ro \
k8s-mcp-server
# 使用自定义kubeconfig文件
docker run -p 3001:3000 \
-v /path/to/your/kubeconfig:/home/nodejs/.kube/config:ro \
k8s-mcp-server
# 在Kubernetes集群内部部署时,可以使用服务账户
docker run -p 3001:3000 \
-v /var/run/secrets/kubernetes.io/serviceaccount:/var/run/secrets/kubernetes.io/serviceaccount:ro \
-e KUBERNETES_SERVICE_HOST \
-e KUBERNETES_SERVICE_PORT \
k8s-mcp-server
容器启动后,可以检查Kubernetes连接状态:
# 检查服务状态
curl http://localhost:3001/health
# 测试Kubernetes连接
curl -X POST http://localhost:3001/messages \
-H "Content-Type: application/json" \
-d '{
"method": "tools/call",
"params": {
"name": "kubectl_get",
"arguments": {"resource": "nodes"}
}
}'
权限需求:
nodejs用户运行,请确保挂载的文件具有适当的读取权限故障排除:
# 检查kubeconfig文件权限
ls -la ~/.kube/config
# 验证kubeconfig有效性
kubectl --kubeconfig ~/.kube/config get nodes
# 检查容器内的kubeconfig
docker exec -it <container-id> cat /home/nodejs/.kube/config
Docker Compose示例:
version: '3.8'
services:
k8s-mcp-server:
build: .
ports:
- "3001:3000"
volumes:
- ~/.kube/config:/home/nodejs/.kube/config:ro
environment:
- NODE_ENV=production
restart: unless-stopped
确保MCP服务器在SSE模式下运行:
cd k8s-mcp/k8s-mcp-server
npm run start:http -- --port 3001
服务器启动后,您会看到:
MCP服务器已在http://localhost:3001启动
SSE端点:http://localhost:3001/sse(n8n连接于此)
消息端点:http://localhost:3001/messages
健康检查:http://localhost:3001/health
SSE模式 - 专为n8n设计