返回市场
k8s-MCP服务器

k8s-MCP服务器

作者:kopp05102 星标更新:2025-08-26

项目介绍

Kubernetes & Helm MCP 服务器

一个简单可靠的MCP(模型上下文协议)服务器,专为Kubernetes和Helm环境管理设计,并支持n8n集成。

功能

  • 原生n8n支持 - 完美支持n8n MCP客户端节点
  • SSE连接 - 使用服务端发送事件(Server-Sent Events)进行实时双向通信
  • Kubernetes集成 - 提供完整的kubectl工具访问
  • Helm支持 - 提供Helm图表和发布管理功能
  • 模块化架构 - 入口点与服务器实现之间有清晰的分离

文件结构

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 - 服务器实现,负责:

    • MCP服务器配置和工具注册
    • 创建Express应用程序(SSE模式)
    • MCP消息处理
    • SSE连接管理

快速开始

本地开发

  1. 安装依赖项
npm install
  1. 启动SSE模式(用于n8n)
npm run start:http
# 或指定端口
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集群。

# 使用本地kubeconfig
docker run -p 3001:3000 \
  -v ~/.kube/config:/home/nodejs/.kube/config:ro \
  k8s-mcp-server

3. 自定义kubeconfig路径

# 使用自定义kubeconfig文件
docker run -p 3001:3000 \
  -v /path/to/your/kubeconfig:/home/nodejs/.kube/config:ro \
  k8s-mcp-server

4. 使用服务账户令牌(Kubernetes内部部署)

# 在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

5. 验证连接

容器启动后,可以检查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"}
    }
  }'

6. 重要注意事项

权限需求:

  • 确保kubeconfig文件具有适当的Kubernetes集群访问权限
  • 建议使用只读服务账户以提高安全性
  • 容器以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

与n8n一起使用

第一步:启动MCP服务器

确保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设计