Kubernetes MCP Server

공식

Go로 구축된 Claude Kubernetes MCP 서버입니다. ArgoCD, GitLab, Claude AI 및 Kubernetes와 통합하여 Kubernetes 환경의 고급 제어 및 자동화를 가능하게 합니다.

Kubernetes MCP(으)로 무엇을 할 수 있나요?

  • 클러스터 리소스 검사 — 어시스턴트에게 GET /api/v1/namespaces 및 GET /api/v1/resources/{kind}를 통해 네임스페이스나 모든 종류의 리소스 목록을 요청하세요.
  • 특정 리소스 문제 해결 — POST /api/v1/mcp/troubleshoot 엔드포인트를 사용하여 example-pod 같은 파드를 어시스턴트가 분석하거나 문제를 해결하도록 하세요.
  • GitLab 커밋 검토 — POST /api/v1/mcp/commit 엔드포인트를 통해 커밋 분석을 요청하여 AI 기반 인사이트를 얻으세요.
  • ArgoCD 애플리케이션 확인 — GET /api/v1/argocd/applications를 통해 모든 ArgoCD 애플리케이션 목록을 요청하세요.
  • 리소스에 대한 맞춤형 AI 쿼리 — 클러스터의 모든 리소스에 대한 사용자 지정 쿼리와 함께 일반 MCP 요청(POST /api/v1/mcp)을 보내세요.

문서

Blank Cut

Claude Kubernetes MCP 서버

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

ArgoCD 및 GitLab 통합을 지원하는 Kubernetes 클러스터 관리를 위한 MCP(Model Context Protocol) 서버입니다.

이 저장소는 Go로 구축된 Claude Kubernetes MCP(Model Context Protocol) 서버를 포함합니다. 이 서버는 ArgoCD, GitLab, Claude AI 및 Kubernetes와 통합하여 Kubernetes 환경의 고급 제어 및 자동화를 가능하게 합니다.

여기에서 문서 보기

목차


개요

이 서버는 Claude AI, GitLab, ArgoCD 및 Vault를 사용하여 Kubernetes 워크로드를 오케스트레이션하도록 설계되었습니다. 구성된 config.yaml에 의해 구동되고 API 키로 인증되는 REST 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 차트가 저장소에 포함되어 있습니다:

1. Helm 차트 디렉토리로 이동

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 라이선스에 따라 라이선스가 부여됩니다.


기여

문서는 곧 확장될 예정입니다. 기여하고 싶다면 풀 리퀘스트를 열거나 이슈를 제출해 주세요!