mcpField
M
MCP Kubernetes Server

MCP Kubernetes Server

ローカル
github.com/guolisenクラウド・インフラ380 週間前に更新

MCP Kubernetes Server について

MCP Kubernetes Serverは、AIアシスタントやMCPクライアント向けに、Kubernetesクラスターの確認、操作、監視、分析機能を提供します。リソース管理ツールに加え、一般的な分析用プロンプトも備えています。

主な機能

  1. 01クラスターリソースの確認
  2. 02リソースの作成・更新・削除・スケール
  3. 03クラスターとリソースの状態監視
  4. 04ログ・イベント・メトリクスの確認
  5. 05リソース分析と推奨事項の提示
  6. 06Kubernetes分析用プロンプト

活用シーン

  1. 01Pod、Deployment、Serviceの詳細確認
  2. 02Deploymentのスケールや再起動
  3. 03クラスターの健全性とノード状態の確認
  4. 04リソースのログやイベントの調査

MCP 対応

Kubernetesリソースを`k8s://` URIとツールで公開し、MCPクライアントからの照会、監視、操作を可能にするMCPサーバーです。一般的なKubernetes分析用プロンプトも提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"mcp_k8s_server": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"build"
]
}
}
}
起動コマンドdocker run -i --rm build

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocibuild

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Python 3.12+ MCP Enabled MCP Server MCP Dev Tests

MCP Kubernetes サーバー

Kubernetes クラスターに関する情報の取得、操作の実行、ステータスの監視、リソースの分析を行うインターフェースを提供する、Kubernetes 管理用 MCP(Model Context Protocol)サーバーです。

機能

  • クラスター情報:Kubernetes リソース(ポッド、デプロイメント、サービスなど)の詳細情報を取得します
  • クラスター操作:Kubernetes リソースの操作(作成、更新、削除、スケーリングなど)を実行します
  • 監視:Kubernetes クラスターとリソースのステータスを監視します
  • 分析:Kubernetes リソースを分析し、推奨事項を提示します
  • プロンプト:一般的な Kubernetes 分析タスク向けのプロンプトが含まれています

使用例

例1

ex1

例2

ex2

例3

ex3

インストール

ソースから
git clone https://github.com/yourusername/mcp-k8s-server.git
cd mcp-k8s-server
pip install -e .
pip を使用する
pip install mcp-k8s-server

使用方法

直接実行する
# Run with default settings
mcp-k8s-server

# Specify transport type
mcp-k8s-server --transport sse

# Specify port for SSE transport
mcp-k8s-server --port 8000

# Specify config file
mcp-k8s-server --config /path/to/config.yaml
Docker を使用する

Dockerfile では、コマンドと引数のパターンを使用してサーバーを実行します。

CMD ["python", "-m", "mcp_k8s_server.main", \
     "--transport", "sse", \
     "--port", "8000", \
     "--host", "0.0.0.0", \
     "--config", "/etc/rancher/rke2/rke2.yaml", \
     "--debug"]

Docker コンテナをビルドして実行するには、次のようにします。

# Build the Docker image
docker build -t mcp-k8s-server .

# Run the Docker container
docker run -p 8000:8000 -v ~/.kube:/home/mcp/.kube mcp-k8s-server

または、付属のスクリプトを使用できます。

# Make the script executable
chmod +x docker-run.sh

# Run the script
./docker-run.sh

このスクリプトは Docker イメージをビルドし、必要なボリュームマウントを設定してコンテナを実行します。

Kubernetes へのデプロイ
# Apply the Kubernetes manifests
kubectl apply -f k8s/

Kubernetes にデプロイすると、サーバーはクラスター内設定を自動的に使用します。k8s/ ディレクトリ内の Kubernetes マニフェストでは、次のように設定されています。

  1. 適切な権限を持つ ServiceAccount を作成する
  2. サービスアカウントのトークンと証明書をマウントする
  3. コマンドライン引数を使ってサーバーを設定する

マニフェストを編集して、デプロイメントをカスタマイズできます。

# k8s/deployment.yaml (example)
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mcp-k8s-server
  # ...
spec:
  # ...
  template:
    # ...
    spec:
      serviceAccountName: mcp-k8s-server  # Uses the ServiceAccount defined in rbac.yaml
      containers:
      - name: mcp-k8s-server
        # ...
        command:
        - python
        - -m
        - mcp_k8s_server.main
        args:
        - --transport
        - sse
        - --port
        - "8000"
        - --host
        - "0.0.0.0"
        - --config
        - "/app/config/config.yaml"
        - --debug

この方法では、サーバーの設定にコマンドと引数のパターンを使用します。これは Kubernetes で一般的なパターンです。コマンドでは実行する実行可能ファイルを指定し、引数ではその実行可能ファイルに渡すコマンドライン引数を指定します。

KUBERNETES_SERVICE_HOST と KUBERNETES_SERVICE_PORT の環境変数は、ポッドの作成時に Kubernetes によって自動的に設定されるため、デプロイメントマニフェストで指定する必要はありません。

設定

サーバーは、YAML 設定ファイル、環境変数、またはコマンドライン引数を使用して設定できます。

クラスター内設定

Kubernetes クラスター内で実行する場合、サーバーはクラスター内設定を自動的に使用します。これは次の設定に依存します。

  1. 環境変数:

    • KUBERNETES_SERVICE_HOST:Kubernetes によって設定される、Kubernetes API サーバーの IP アドレス
    • KUBERNETES_SERVICE_PORT:Kubernetes によって設定される、Kubernetes API サーバーのポート
  2. サービスアカウントのトークンと証明書:

    • /var/run/secrets/kubernetes.io/serviceaccount/token:サービスアカウントのトークン
    • /var/run/secrets/kubernetes.io/serviceaccount/ca.crt:CA 証明書

これらは、ポッド内で実行する際に Kubernetes によって自動的に設定されます。Kubernetes クラスター外でサーバーを実行しながらクラスター内設定をテストする場合は、これらの環境変数を手動で設定し、トークンと証明書のファイルを作成する必要があります。

クラスター外で実行する場合、サーバーは kubeconfig ファイルを使用します。

In-Cluster Configuration をローカルでテストする

Kubernetes クラスターの外部で、in-cluster configuration をローカルにテストする場合は、必要な環境変数とファイルを手動で設定できます。

  1. 環境変数を設定します。

    export KUBERNETES_SERVICE_HOST=<kubernetes-api-server-ip>
    export KUBERNETES_SERVICE_PORT=<kubernetes-api-server-port>
    

    これらの値は、次のコマンドを実行すると取得できます。

    kubectl cluster-info
    
  2. サービスアカウントトークンと証明書のディレクトリを作成します。

    mkdir -p /var/run/secrets/kubernetes.io/serviceaccount/
    
  3. Kubernetes 証明書をコピーし、トークンを作成します。

    # Copy the CA certificate
    kubectl config view --raw -o jsonpath='{.clusters[0].cluster.certificate-authority-data}' | base64 -d > /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
    
    # Create a token file (you can use a service account token or generate a temporary one)
    echo "your-service-account-token" > /var/run/secrets/kubernetes.io/serviceaccount/token
    

この方法では、/var/run/secrets/ にファイルを作成するために root 権限が必要です。代わりに、テスト用に別のパスを使用するようコードを変更することもできます。

設定ファイル
# config.yaml
server:
  name: mcp-k8s-server
  transport: both  # stdio, sse, or both
  port: 8000
  host: 0.0.0.0

kubernetes:
  config_path: ~/.kube/config
  context: default
  namespace: default

MCP リソース

サーバーは、Model Context Protocol(MCP)を通じて Kubernetes リソースへのアクセスを提供します。リソースは、k8s:// プロトコルに従った URI パターンで識別されます。

リソース URI パターン

リソースは階層構造で整理されています。

  • k8s://resources - 利用可能なすべての Kubernetes リソースの一覧
  • k8s://namespaces - すべての Kubernetes 名前空間の一覧
  • k8s:///{namespace} - 名前空間内のすべてのリソースの概要
名前空間スコープのリソース
  • k8s://{namespace}/{resource_type} - 名前空間内の特定の種類のリソース一覧

    • 例:k8s://default/pods - 'default' 名前空間内のすべての Pod
  • k8s://{namespace}/{resource_type}/{name} - 特定の名前空間スコープのリソースを取得

    • 例:k8s://default/deployments/nginx - 'default' 名前空間内の 'nginx' デプロイメント

サポートされているリソースの種類:

  • pods
  • deployments
  • services
  • persistentvolumeclaims
  • events
クラスタースコープのリソース
  • k8s:///{resource_type} - 特定の種類のクラスタースコープリソース一覧

    • 例:k8s:///nodes - クラスター内のすべてのノード
  • k8s:///{resource_type}/{name} - 特定のクラスタースコープリソースを取得

    • 例:k8s:///nodes/worker-1 - 'worker-1' ノード

サポートされているリソースの種類:

  • nodes
  • persistentvolumes
  • namespaces

MCP ツール

サーバーは、次の MCP ツールを提供します。

リソース情報
  • get_resources:特定の種類のリソース一覧を取得
  • get_resource:特定のリソースの詳細情報を取得
  • get_resource_status:特定のリソースのステータスを取得
  • get_resource_events:特定のリソースに関連するイベントを取得
  • get_resource_logs:特定のリソースのログを取得
リソース操作
  • create_resource:新しいリソースを作成
  • update_resource:既存のリソースを更新
  • delete_resource:リソースを削除
  • scale_deployment:デプロイメントをスケーリング
  • restart_deployment:デプロイメントを再起動
  • execute_command:Pod 内でコマンドを実行
モニタリング
  • get_cluster_status:クラスター全体のステータスを取得
  • get_node_status:クラスター内のノードのステータスを取得
  • get_resource_metrics:特定のリソースのメトリクスを取得
  • get_cluster_metrics:クラスター全体のメトリクスを取得
  • check_cluster_health:クラスターの包括的なヘルスチェックを実行し、詳細な概要を取得

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。