Kubernetes和Helm MCP服务器

一个简单可靠的MCP服务器,专为Kubernetes和Helm环境管理设计,支持n8n集成。

  • by kopp0510
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 kopp0510/k8s-mcp-server

使用说明

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连接管理

快速开始

地方发展

  1. 再进行
npm install
  1. 启动SSE模式(适用于n8n)
npm run start:http
# Or specify port
npm run start:http -- --port 3001
  1. 检查服务状态
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