This repository contains the Claude Kubernetes MCP (Model Context Protocol) server, built in Go. The server integrates with ArgoCD, GitLab, Claude AI, and Kubernetes to enable advanced control and automation of Kubernetes environments.
- Overview
- Prerequisites
- Setup Instructions
- Configuration
- Running Locally
- Building and Running with Docker
- Production Deployment
- API Documentation
- Postman Collection
- License
This server is designed to orchestrate Kubernetes workloads using Claude AI, GitLab, ArgoCD, and Vault. It exposes a REST API that allows programmatic interaction with these systems, driven by a configured config.yaml
and authenticated using an API key.
- Go 1.20+
- Docker
- Kubernetes cluster & valid
~/.kube/config
- EKS cluster with AWS_PROFILE set locally
- ArgoCD credentials
- GitLab personal access token
- Claude API key (Anthropic)
- Vault credentials (optional, depending on use)
git clone https://github.com/blankcut/kubernetes-mcp-server.git
cd kubernetes-mcp-server
Export credentials for ArgoCD, GitLab, and 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"
Ensure a kubeconfig is available:
export KUBECONFIG=~/.kube/config
Update kubernetes-claude-mcp/config.yaml
with credentials and server preferences:
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-3-haiku-20240307"
maxTokens: 4096
temperature: 0.7
You can use the provided Go templates or environment variable interpolation method.
Please ensure a config.yaml
includes an apiKey
. This will be used to authenticate requests in Postman or any external client.
cd kubernetes-claude-mcp
go run ./cmd/server/main.go
LOG_LEVEL=debug go run ./cmd/server/main.go --config config.yaml
Server will start and bind to the configured port in config.yaml
(default: 8080).
cd kubernetes-claude-mcp
docker build -t claude-mcp-server -f Dockerfile .
cd kubernetes-claude-mcp
docker-compose build
docker-compose up -d
A Helm chart is included in the repository for Kubernetes deployment:
cd kubernetes-claude-mcp/deployments/helm
Update values.yaml
with appropriate values and run:
helm install claude-mcp .
To upgrade:
helm upgrade claude-mcp .
Please ensure secrets and config maps are properly mounted and secured in the cluster.
Below are the primary endpoints exposed by the MCP server. All requests require the X-API-Key
header:
- Health Check
GET /api/v1/health
- List Namespaces
GET /api/v1/namespaces
- List Resources
GET /api/v1/resources/{kind}?namespace={ns}
- Get Specific Resource
GET /api/v1/resources/{kind}/{name}?namespace={ns}
- Get Events for a Resource
GET /api/v1/events?namespace={ns}&resource={kind}&name={name}
- List Applications
GET /api/v1/argocd/applications
- Analyze Resource
POST /api/v1/mcp/resource
- Troubleshoot Resource
POST /api/v1/mcp/troubleshoot
- Commit Analysis (GitLab)
POST /api/v1/mcp/commit
- Generic MCP Request
POST /api/v1/mcp
All POST endpoints accept a JSON payload containing fields such as:
{
"resource": "pod",
"name": "example-pod",
"namespace": "default",
"query": "What’s wrong with this pod?"
}
Please contribute to our coffee fund to help us continue to do great things
This project is licensed under the MIT License.
Documentation will be expanded soon. If you’d like to contribute, feel free to open a pull request or file an issue!