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 Server

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

Kubernetesクラスタ管理のためのModel Context Protocol(MCP)サーバー。ArgoCDおよびGitLabと統合されています。

このリポジトリには、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. コンテナの実行(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 .

シークレットとconfig mapがクラスタ内で適切にマウントされ、保護されていることを確認してください。


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ライセンスの下でライセンスされています。


貢献

ドキュメントは近日中に拡張される予定です。貢献したい場合は、プルリクエストを開くか、イシューを報告してください!