mcpField
E
EKS Model Context Protocol (MCP) Server

EKS Model Context Protocol (MCP) Server

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

EKS Model Context Protocol (MCP) Server について

EKS Model Context Protocol (MCP) Serverは、FastAPIサービスを通じてGenAIエージェントにEKSおよびKubernetesの操作を提供します。クラスターやワークロードの照会、リソース管理、複数の認証方式に対応しています。

主な機能

  1. 01EKSクラスターの一覧表示と詳細取得
  2. 02ノードグループとKubernetesリソースの確認
  3. 03Podログの取得
  4. 04複数のEKS認証方式に対応
  5. 05Dockerでの実行またはECSへのデプロイ

活用シーン

  1. 01AWSリージョン内のクラスターを一覧表示
  2. 02名前空間内のPodとデプロイを確認
  3. 03Podのログを取得

MCP 対応

操作の検出およびクエリエンドポイントを通じて、MCPクライアントにEKSとKubernetesの操作を提供します。

設定

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

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

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

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

詳細

EKS Model Context Protocol (MCP) サーバー

EKS の操作に対応する Model Context Protocol を実装した、軽量で効率的なサーバーです。このサーバーは、GenAI エージェントが EKS クラスターと連携するための標準化されたインターフェースを提供します。

機能

  • 適切なタイムアウト処理による高速な応答
  • 幅広い EKS 操作に対応
  • Kubernetes リソースの管理(ポッド、サービス、デプロイメントなど)
  • EKS クラスター向けの複数の認証方式
  • 堅牢なエラー処理とログ記録
  • デプロイを簡単にする Docker コンテナ化
  • ECS へのデプロイに対応

プロジェクト構成

  • main.py:FastAPI を使用したメインサーバーの実装
  • eks_operations.py:EKS API 操作の実装
  • k8s_operations.py:Kubernetes API 操作の実装
  • k8s_operations_sdk_v4.py:SDK ベースの Kubernetes 操作の実装
  • k8s_operations_kubectl.py:適切な認証を使用した Kubectl ベースの Kubernetes 操作
  • k8s_auth_config.py:Kubernetes の認証設定
  • direct_k8s_client.py:Kubernetes API クライアントの直接実装
  • test_*.py:各種実装向けのテストスクリプト
  • Dockerfile および Dockerfile.amd64:Docker 設定ファイル
  • docker-compose.yml:Docker Compose の設定
  • requirements.txt:Python の依存関係
  • client/:クライアントの実装ディレクトリ(クライアントの README)
  • ecs-deployment/:ECS デプロイ用スクリプトと設定(ECS デプロイの README)

API エンドポイント

  • GET /health - ヘルスチェックエンドポイント
  • GET /mcp/v1/operations - 利用可能な操作の一覧
  • POST /mcp/v1/query - MCP 操作を実行

対応する操作

EKS クラスター操作
  • list_clusters - リージョン内の EKS クラスターを一覧表示
  • describe_cluster - クラスターの詳細情報を取得
  • list_nodegroups - クラスターのノードグループを一覧表示
  • describe_nodegroup - ノードグループの詳細情報を取得
Kubernetes 操作
  • list_namespaces - Kubernetes の名前空間を一覧表示
  • list_pods - 名前空間内のポッドを一覧表示
  • describe_pod - ポッドの詳細情報を取得
  • get_deployments - 名前空間内のデプロイメントを一覧表示
  • describe_deployment - デプロイメントの詳細情報を取得
  • get_services - 名前空間内のサービスを一覧表示
  • describe_service - サービスの詳細情報を取得
  • get_pod_logs - ポッドのログを取得

認証方式

このサーバーは、EKS クラスター向けに複数の認証方式に対応しています。

  1. AWS SDK 認証:AWS SDK を使用して EKS に認証し、クラスター情報を取得します
  2. 生成した kubeconfig を使用した Kubectl:一時的な kubeconfig ファイルを作成して Kubectl を使用します
  3. Kubernetes API の直接呼び出し:Kubernetes API サーバーを直接呼び出します

現在の実装では、適切な認証を備えた Kubectl 方式を使用しており、最も信頼性の高い結果が得られます。

はじめに

前提条件
  • Docker
  • AWS 認証情報(本番環境で使用する場合)
  • Python 3.8 以降(ローカル開発の場合)
ローカルでの実行
# Install dependencies
pip install -r requirements.txt

# Run the server
python main.py
Docker を使用した実行
# Build the Docker image
docker build -t eks-mcp-server .

# Run the container
docker run -d -p 8000:8000 --name mcp-server eks-mcp-server
Docker Compose を使用した実行
# Start the server
docker-compose up -d

# Stop the server
docker-compose down
ECS へのデプロイ

詳しい手順については、ECS デプロイの READMEを参照してください。

# Deploy to ECS
cd ecs-deployment
./deploy.sh

# Update existing ECS deployment
./update-service.sh

テスト

付属のテストスクリプトを使用して、サーバーが正しく動作することを確認できます。

# Basic tests
python test_mcp.py

# Comprehensive operation tests
python test_mcp_operations.py

# Test namespace integration
python test_mcp_namespace.py
python test_mcp_namespace_2.py

# Test kubectl integration
python test_kubectl_operations.py

# Test SDK v3 operations
python test_v3_operations.py

# Test SDK v4 operations
python test_v4_operations.py

クライアントの使用方法

このプロジェクトには、MCP サーバーと対話形式でやり取りするために Amazon Bedrock を使用するクライアントの実装が含まれています。詳しくは、クライアントの READMEを参照してください。

# Run the client
cd client
python mcp_chat_client_v6.py

リクエスト例

クラスターの一覧表示
curl -X POST http://localhost:8000/mcp/v1/query \
  -H "Content-Type: application/json" \
  -H "X-API-Key: your-api-key" \
  -d '{
    "operation": "list_clusters",
    "parameters": {
      "region": "us-east-1"
    }
  }'
ポッドの一覧表示
curl -X POST http://localhost:8000/mcp/v1/query \
  -H "Content-Type: application/json" \
  -H "X-API-Key: your-api-key" \
  -d '{
    "operation": "list_pods",
    "parameters": {
      "cluster_name": "my-cluster",
      "namespace": "default",
      "region": "us-east-1"
    }
  }'

アーキテクチャ

このサーバーは FastAPI で構築され、パフォーマンス向上のために同期処理と非同期処理を組み合わせて使用します。以下の機能を備えています。

  • AWS API 呼び出しのタイムアウト処理
  • EKS クラスター向けの複数の認証方式
  • 包括的なログ記録
  • 応答時間の追跡
  • 詳細なエラーコードを含むエラー処理

EKS 認証

サーバーが EKS クラスターで認証するには、ECS タスクロールを EKS クラスターの aws-auth ConfigMap に追加する必要があります。詳しい手順については、ECS デプロイ READMEを参照してください。

現在のデプロイ

サーバーは現在 ECS にデプロイされており、以下からアクセスできます。

テスト用名前空間

このプロジェクトには、EKS クラスター内にテスト用名前空間が含まれています。

  • mcp-test-namespace:nginx ポッドが 2 つあるデプロイメントが含まれています
  • mcp-test-namespace-2:nginx ポッドが 3 つあるデプロイメントが含まれています

ライセンス

MIT

コメント

MCP は初めてですか?

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

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