Kubernetes安全操作服务器

一个全面的模型上下文协议(MCP)服务器,用于安全的Kubernetes操作,具有可配置的安全模式。

  • by bharathmadvar123
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 bharathmadvar123/kubernetes-mcp-server

使用说明

Kubernetes MCP服务器

一个全面的模型上下文协议(MCP)服务器,用于具有可配置安全模式的安全Kubernetes操作。

🚀 特性

  • 🔒 安全第一:多种安全模式(非破坏性、只读、自定义、完全访问)
  • 📦 模块化架构:通过专用模块实现关注点的清晰分离
  • 🐳 Docker就绪:生产就绪的集装箱化部署
  • ⚡ FastMCP集成:基于FastMCP 2.11.3框架构建
  • 🎯 全面覆盖:支持所有主要的Kubernetes和Istio资源
  • 💾 备份操作:删除前安全备份功能
  • 🔧 Helm支持:完成Helm chart生命周期管理

📋 先决条件

  • Python 3.12+
  • Docker(用于容器化部署)
  • Kubernetes集群访问
  • kubectl已配置
  • Helm 3.x(可选,用于Helm操作)

🛠️ 安装

选项1:Docker部署(推荐)

# Build the Docker image
docker build -t kubectl-mcp-server:latest .

# Run with non-destructive security mode
docker run -d \
  --name kubectl-mcp-server \
  -p 8000:8000 \
  -v ~/.kube:/root/.kube:ro \
  -e KUBECONFIG=/root/.kube/config \
  -e ALLOW_ONLY_NON_DESTRUCTIVE_TOOLS=true \
  kubectl-mcp-server:latest

方案2:地方发展

# Install dependencies
pip install -r requirements.txt

# Run the server
python run_server.py --transport stdio

🔐 安全模式

1.无损模式(推荐用于生产)

export ALLOW_ONLY_NON_DESTRUCTIVE_TOOLS=true
  • ✅ 允许:所有读取操作、创建、缩放、备份
  • ❌ 积木:删除操作,Helm卸载

2.只读模式(监控/观察)

export ALLOW_ONLY_READONLY_TOOLS=true
  • ✅ 允许:获取/列出操作、日志、健康检查
  • ❌ 积木:所有写入操作

3.自定义模式(粒度控制)

export ALLOWED_TOOLS="get_pods,get_deployments,get_services"
  • ✅ 允许:仅指定工具
  • ❌ 积木:其他一切

4.完全访问模式(仅限开发)

# No environment variables set
  • ✅ 允许:所有操作
  • ⚠️ 警告:仅在开发环境中使用

🎯 支持的资源

Kubernetes核心资源

  • 工作量:Pod、部署、复制集、状态集、守护集
  • 服务:服务、端点、入口
  • 配置:配置地图,秘密
  • 存储:持久卷、持久卷索赔、存储类
  • RBAC:角色、集群角色、角色绑定、集群角色绑定、服务帐户
  • 网络网络政策
  • 簇:命名空间、节点、事件

Istio服务网格

  • 交通管理:虚拟服务、目标规则、网关
  • 安全服务条目

Helm操作

  • 图表管理:安装、升级、卸载
  • 发布操作:列表、状态、值
  • 库管理:添加、列出存储库

🔧 配置

环境变量

变量 描述 默认值 示例
ALLOW_ONLY_NON_DESTRUCTIVE_TOOLS 启用非破坏性模式 false true
ALLOW_ONLY_READONLY_TOOLS 启用只读模式 false true
ALLOWED_TOOLS 自定义工具白名单 "" "get_pods,get_services"
KUBECONFIG Kubernetes配置路径 ~/.kube/config /path/to/config
TRANSPORT MCP传输方法 stdio stdio 或 sse

Windsurf集成

添加到您的Windsurf MCP配置(~/.codeium/windsurf/mcp_config.json):

{
  "mcpServers": {
    "kubectl-safe": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-v", "/Users/yourusername/.kube:/root/.kube:ro",
        "-e", "KUBECONFIG=/root/.kube/config",
        "-e", "ALLOW_ONLY_NON_DESTRUCTIVE_TOOLS=true",
        "-e", "TRANSPORT=stdio",
        "kubectl-mcp-server:latest",
        "python", "run_server.py", "--transport", "stdio"
      ]
    }
  }
}

📚 使用示例

基本操作

# List all pods
python run_server.py --transport stdio
# Then use MCP client to call: get_pods_tool

# Get deployments in specific namespace
# MCP call: get_deployments_tool(namespace="production")

# Scale a deployment
# MCP call: scale_deployment_tool(name="myapp", replicas=3, namespace="default")

备份操作

# Backup a resource before deletion
# MCP call: backup_resource_tool(name="myapp", resource_type="deployment", namespace="default")

# Safe delete (backup + delete)
# MCP call: backup_and_delete_resource_tool(name="myapp", resource_type="deployment")

Helm操作

# Install a Helm chart
# MCP call: install_helm_chart_tool(name="myapp", chart="nginx", namespace="default")

# List Helm releases
# MCP call: list_helm_releases_tool(namespace="default")

🏗️ 建筑

kubectl-mcp-server/
├── run_server.py                 # Main entry point
├── kubectl_mcp_tool/
│   ├── mcp_server.py            # MCP server implementation
│   └── tools/                   # Modular tool implementations
│       ├── kubectl_get.py       # Read operations
│       ├── kubectl_operations.py # Utility operations
│       ├── kubectl_delete.py    # Destructive operations
│       ├── kubectl_backup.py    # Backup operations
│       └── helm_operations.py   # Helm chart operations
├── Dockerfile                   # Container configuration
└── requirements.txt            # Python dependencies

🔒 安全最佳实践

  1. 使用非破坏性模式 在生产环境中
  2. 挂载kubeconfig只读 装在集装箱里
  3. 定期备份 关键资源
  4. 监控日志 用于安全事件
  5. 使用最小权限 RBAC策略
  6. 验证配置 部署前

🐛 故障排除

常见问题

身份验证错误

# Check kubeconfig
kubectl config current-context

# Verify cluster access
kubectl get nodes

集装箱问题

# Check container logs
docker logs kubectl-mcp-server

# Verify volume mounts
docker exec -it kubectl-mcp-server ls -la /root/.kube/

MCP连接问题

# Test server directly
python run_server.py --transport stdio --debug

# Validate JSON configuration
cat ~/.codeium/windsurf/mcp_config.json | python3 -m json.tool

📊 监控

健康检查

  • 服务器启动日志指示安全模式
  • 记录失败的操作及其详细信息
  • 对资源访问尝试进行审核

指标

  • 操作成功/失败率
  • 违反安全模式
  • 资源访问模式

🤝 贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 添加新功能的测试
  4. 确保安全模式正常工作
  5. 提交拉取请求

📄 许可证

此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。

🆘 支持

对于问题和疑问:

  1. 检查故障排除部分
  2. 查看容器日志
  3. 验证Kubernetes连接
  4. 验证MCP配置

🔄 版本历史记录

  • v1.0.0:具有安全模式和全面Kubernetes支持的初始版本
  • FastMCP 2.11.3集成
  • Docker容器化
  • Windsurf集成