Kubernetes MCP Server

官方

一个用Go构建的Claude Kubernetes MCP服务器,集成了ArgoCD、GitLab、Claude AI和Kubernetes,实现对Kubernetes环境的高级控制与自动化。

文档

Claude Kubernetes MCP 服务器

CI Release Docker Pulls Docker Image Size Go Report Card License GitHub release

一个用于 Kubernetes 集群管理的模型上下文协议 (MCP) 服务器,集成了 ArgoCD 和 GitLab。

本仓库包含使用 Go 语言构建的 Claude Kubernetes MCP(模型上下文协议)服务器。该服务器与 ArgoCD、GitLab、Claude AI 和 Kubernetes 集成,以实现对 Kubernetes 环境的高级控制和自动化。

查看我们的文档

目录


概述

此服务器旨在使用 Claude AI、GitLab、ArgoCD 和 Vault 来编排 Kubernetes 工作负载。它公开了一个 REST API,允许通过编程方式与这些系统交互,由配置的 config.yaml 驱动,并使用 API 密钥进行身份验证。

先决条件

  • Go 1.20+
  • Docker
  • Kubernetes 集群和有效的 ~/.kube/config
  • 已在本地设置 AWS_PROFILE 的 EKS 集群
  • ArgoCD 凭据
  • GitLab 个人访问令牌
  • Claude API 密钥 (Anthropic)
  • Vault 凭据(可选,取决于使用情况)

安装说明

1. 克隆仓库

git clone https://github.com/blankcut/kubernetes-mcp-server.git
cd kubernetes-mcp-server

2. 导出所需的环境变量

导出 ArgoCD、GitLab 和 Claude 的凭据:

export ARGOCD_USERNAME="argocd-username"
export ARGOCD_PASSWORD="argocd-password"
export GITLAB_TOKEN="gitlab-token"
export CLAUDE_API_KEY="claude-api-key"
export VAULT_TOKEN="optional-if-using-vault"

确保 kubeconfig 可用:

export KUBECONFIG=~/.kube/config

3. 配置 config.yaml

使用凭据和服务器偏好设置更新 kubernetes-claude-mcp/config.yaml

server:
  address: ":8080"
  readTimeout: 30
  writeTimeout: 60
  auth:
    apiKey: ""${API_KEY}"" 

kubernetes:
  kubeconfig: ""
  inCluster: false
  defaultContext: ""
  defaultNamespace: "default"

argocd:
  url: "http://example.argocd.com"
  authToken: ""
  username: "${ARGOCD_USERNAME}"
  password: "${ARGOCD_PASSWORD}"
  insecure: true

gitlab:
  url: "https://gitlab.com"
  authToken: "${AUTH_TOKEN}"
  apiVersion: "v4"
  projectPath: ""${PROJECT_PATH}""

claude:
  apiKey: "${API_KEY}"
  baseURL: "https://api.anthropic.com"
  modelID: "claude-sonnet-4.5-20250514"
  maxTokens: 8192
  temperature: 0.3

您可以使用提供的 Go 模板或环境变量插值方法。

4. 为 Postman 添加 API 密钥

请确保 config.yaml 包含 apiKey。这将用于在 Postman 或任何外部客户端中对请求进行身份验证。


本地运行

cd kubernetes-claude-mcp
go run ./cmd/server/main.go

启用调试日志:

LOG_LEVEL=debug go run ./cmd/server/main.go --config config.yaml

服务器将启动并绑定到 config.yaml 中配置的端口(默认:8080)。


使用 Docker 构建和运行

1. 构建镜像

cd kubernetes-claude-mcp
docker build -t claude-mcp-server -f Dockerfile .

2. 运行容器(包含第二个构建选项)

cd kubernetes-claude-mcp
docker-compose build
docker-compose up -d

生产环境部署

仓库中包含一个用于 Kubernetes 部署的 Helm chart:

1. 导航到 Helm Chart 目录

cd kubernetes-claude-mcp/deployments/helm

2. 使用 Helm 部署

使用适当的值更新 values.yaml 并运行:

helm install claude-mcp .

升级:

helm upgrade claude-mcp .

请确保密钥和配置映射在集群中正确挂载并受到保护。


API 文档

以下是 MCP 服务器公开的主要端点。所有请求都需要 X-API-Key 标头:

通用

  • 健康检查
    • GET /api/v1/health

Kubernetes

  • 列出命名空间
    • GET /api/v1/namespaces
  • 列出资源
    • GET /api/v1/resources/{kind}?namespace={ns}
  • 获取特定资源
    • GET /api/v1/resources/{kind}/{name}?namespace={ns}
  • 获取资源事件
    • GET /api/v1/events?namespace={ns}&resource={kind}&name={name}

ArgoCD

  • 列出应用程序
    • GET /api/v1/argocd/applications

Claude MCP 端点

  • 分析资源
    • POST /api/v1/mcp/resource
  • 排查资源问题
    • POST /api/v1/mcp/troubleshoot
  • 提交分析 (GitLab)
    • POST /api/v1/mcp/commit
  • 通用 MCP 请求
    • POST /api/v1/mcp

所有 POST 端点都接受包含以下字段的 JSON 负载:

{
  "resource": "pod",
  "name": "example-pod",
  "namespace": "default",
  "query": "What’s wrong with this pod?"
}

Postman 集合

一个即用型 Postman 集合即将推出。

捐赠

请为我们的咖啡基金捐款,以帮助我们继续做出伟大的事情 请我喝咖啡

许可证

本项目根据 MIT 许可证 授权。


贡献

文档将很快扩展。如果您想贡献,欢迎提交拉取请求或提出问题!