使用说明
Kubernetes和Helm MCP服务器
一个简单、可靠的MCP(模型上下文协议)服务器,专为Kubernetes和Helm环境管理而设计,支持n8n集成。
特性
- 原生n8n支持 -完美支持n8n MCP客户端节点
- SSE 连接 -使用服务器发送的事件进行实时双向通信
- Kubernetes集成 -提供完整的kubectl工具访问权限
- Helm支持 -提供Helm图表和发布管理功能
- 模块化架构 -入口点和服务器实现之间的明确分离
文件结构
k8s-mcp-server/
├── src/ # Source code directory
│ ├── index.js # Main program entry, handles lifecycle and parameter parsing
│ ├── server.js # MCP + Express integration, server implementation
│ ├── tools/ # Tool modules
│ │ ├── base-tool.js # Base tool class
│ │ ├── kubectl-get.js # Resource query tool (supports label filtering)
│ │ ├── kubectl-logs.js # Pod log viewing tool
│ │ ├── kubectl-describe.js # Resource detailed description tool
│ │ ├── kubectl-cluster-info.js # Cluster information query tool
│ │ ├── kubectl-get-yaml.js # Resource YAML format output tool
│ │ ├── kubectl-top-nodes.js # Node resource usage monitoring
│ │ ├── kubectl-top-pods.js # Pod resource usage monitoring
│ │ ├── kubectl-top-containers.js # Container resource usage monitoring
│ │ ├── kubectl-scale-deployment.js # Deployment scaling tool
│ │ ├── kubectl-restart-deployment.js # Deployment restart tool
│ │ ├── kubectl-edit-hpa.js # HPA editing tool
│ │ ├── helm-list.js # Helm release list tool
│ │ ├── helm-status.js # Helm release status tool
│ │ ├── helm-repo-list.js # Helm repository list tool
│ │ ├── helm-get-values.js # Helm release configuration values tool
│ │ └── helm-history.js # Helm release history tool
│ └── utils/ # Utility functions
│ ├── logger.js # Logging system
│ ├── validator.js # Input validation (including label validation)
│ ├── kubectl.js # kubectl execution tool
│ └── helm.js # helm execution tool
├── package.json # Project configuration and dependencies
├── package-lock.json # Dependency lock file
├── Dockerfile # Docker container build file
├── build.sh # Docker build script
├── .gitignore # Git ignore file configuration
├── .cursorignore # Cursor editor ignore file configuration
└── README.md # Project documentation
体系结构描述
-
src/index.js-主程序入口,负责:- 命令行参数解析
- 环境变量配置
- 生命周期管理
- 优雅的停机处理
- 错误处理
-
src/server.js-服务器实施,负责:- MCP服务器配置和工具注册
- 快速应用程序创建(SSE模式)
- MCP消息处理
- SSE连接管理
快速开始
地方发展
- 再进行
npm install
- 启动SSE模式(适用于n8n)
npm run start:http
# Or specify port
npm run start:http -- --port 3001
- 检查服务状态
curl http://localhost:3001/health
Docker部署
1.建立形象
docker build -t k8s-mcp-server .
2.启动容器(需要挂载kubeconfig)
⚠️ 重要提示: 启动容器时,您需要挂载本地 .kube/config 到集装箱的 /home/nodejs/.kube/config 路径,以便MCP服务器可以访问Kubernetes集群。
# Use local kubeconfig
docker run -p 3001:3000 \
-v ~/.kube/config:/home/nodejs/.kube/config:ro \
k8s-mcp-server
3.自定义kubeconfig路径
# Use custom kubeconfig file
docker run -p 3001:3000 \
-v /path/to/your/kubeconfig:/home/nodejs/.kube/config:ro \
k8s-mcp-server
4.使用服务帐户令牌(Kubernetes内部部署)
# When deploying inside a Kubernetes cluster, you can use service account
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
5.验证连接
容器启动后,您可以检查Kubernetes连接状态:
# Check service status
curl http://localhost:3001/health
# Test Kubernetes connection
curl -X POST http://localhost:3001/messages \
-H "Content-Type: application/json" \
-d '{
"method": "tools/call",
"params": {
"name": "kubectl_get",
"arguments": {"resource": "nodes"}
}
}'
6.重要注意事项
许可要求:
- 确保kubeconfig文件具有适当的Kubernetes集群访问权限
- 建议使用只读服务帐户以提高安全性
- 容器按照以下方式运行
nodejs用户,确保装载的文件具有适当的读取权限
故障排除:
# Check kubeconfig file permissions
ls -la ~/.kube/config
# Verify kubeconfig validity
kubectl --kubeconfig ~/.kube/config get nodes
# Check kubeconfig inside container
docker exec -it <container-id> cat /home/nodejs/.kube/config
Docker编写示例:
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
与n8n一起使用
步骤1:启动MCP服务器
确保MCP服务器在SSE模式下运行:
cd k8s-mcp/k8s-mcp-server
npm run start:http -- --port 3001
服务器启动后,您将看到:
MCP Server started at http://localhost:3001
SSE endpoint: http://localhost:3001/sse (n8n connects here)
Message endpoint: http://localhost:3001/messages
Health check: http://localhost:3001/health
SSE mode - designed for n8n
