Kubernetes MCP Server

ทางการ

เซิร์ฟเวอร์ Kubernetes MCP สำหรับ Claude ที่สร้างด้วยภาษา Go เซิร์ฟเวอร์นี้ทำงานร่วมกับ ArgoCD, GitLab, Claude AI และ Kubernetes เพื่อให้สามารถควบคุมและทำงานอัตโนมัติขั้นสูงในสภาพแวดล้อม Kubernetes

เอกสาร

Claude Kubernetes MCP Server

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

เซิร์ฟเวอร์ Model Context Protocol (MCP) สำหรับการจัดการคลัสเตอร์ Kubernetes พร้อมการผสานรวม ArgoCD และ GitLab

ที่เก็บนี้ประกอบด้วยเซิร์ฟเวอร์ Claude Kubernetes MCP (Model Context Protocol) ที่สร้างด้วยภาษา Go เซิร์ฟเวอร์นี้ผสานรวมกับ ArgoCD, GitLab, Claude AI และ Kubernetes เพื่อให้สามารถควบคุมและทำงานอัตโนมัติในสภาพแวดล้อม Kubernetes ขั้นสูงได้

ดูเอกสารของเราได้ที่นี่

สารบัญ


ภาพรวม

เซิร์ฟเวอร์นี้ออกแบบมาเพื่อจัดการเวิร์กโหลด Kubernetes โดยใช้ Claude AI, GitLab, ArgoCD และ Vault โดยเปิดเผย REST API ที่อนุญาตให้โต้ตอบกับระบบเหล่านี้ผ่านโปรแกรม ซึ่งขับเคลื่อนโดย config.yaml ที่กำหนดค่าไว้และรับรองความถูกต้องด้วยคีย์ API

ข้อกำหนดเบื้องต้น

  • Go 1.20+
  • Docker
  • คลัสเตอร์ Kubernetes และ ~/.kube/config ที่ถูกต้อง
  • คลัสเตอร์ EKS พร้อมตั้งค่า AWS_PROFILE ในเครื่อง
  • ข้อมูลประจำตัว 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. เพิ่มคีย์ API สำหรับ Postman

โปรดตรวจสอบให้แน่ใจว่า 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

การปรับใช้สำหรับการใช้งานจริง

มี Helm chart รวมอยู่ในที่เก็บสำหรับการปรับใช้ Kubernetes:

1. ไปที่ไดเรกทอรี Helm Chart

cd kubernetes-claude-mcp/deployments/helm

2. ปรับใช้ด้วย Helm

อัปเดต values.yaml ด้วยค่าที่เหมาะสมและรัน:

helm install claude-mcp .

เพื่ออัปเกรด:

helm upgrade claude-mcp .

โปรดตรวจสอบให้แน่ใจว่าซีเคร็ตและ config maps ถูกเมาท์และรักษาความปลอดภัยอย่างเหมาะสมในคลัสเตอร์


เอกสาร 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 Collection

Postman collection ที่พร้อมใช้งานจะมีให้ในเร็วๆ นี้

การบริจาค

โปรดร่วมสมทบกองทุนกาแฟของเราเพื่อช่วยให้เราทำสิ่งที่ยอดเยี่ยมต่อไป ซื้อกาแฟให้ฉัน

ใบอนุญาต

โปรเจกต์นี้ได้รับอนุญาตภายใต้ MIT License


การมีส่วนร่วม

เอกสารจะถูกขยายเพิ่มเติมในเร็วๆ นี้ หากคุณต้องการมีส่วนร่วม สามารถเปิด pull request หรือแจ้งปัญหาได้ตามอัธยาศัย!