EKS Model Context Protocol (MCP) Server について
EKS Model Context Protocol (MCP) Serverは、FastAPIサービスを通じてGenAIエージェントにEKSおよびKubernetesの操作を提供します。クラスターやワークロードの照会、リソース管理、複数の認証方式に対応しています。
主な機能
- 01EKSクラスターの一覧表示と詳細取得
- 02ノードグループとKubernetesリソースの確認
- 03Podログの取得
- 04複数のEKS認証方式に対応
- 05Dockerでの実行またはECSへのデプロイ
活用シーン
- 01AWSリージョン内のクラスターを一覧表示
- 02名前空間内のPodとデプロイを確認
- 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 クラスター向けに複数の認証方式に対応しています。
- AWS SDK 認証:AWS SDK を使用して EKS に認証し、クラスター情報を取得します
- 生成した kubeconfig を使用した Kubectl:一時的な kubeconfig ファイルを作成して Kubectl を使用します
- 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 にデプロイされており、以下からアクセスできます。
- エンドポイント:http://3.90.45.69:8000
- ヘルスチェック:http://3.90.45.69:8000/health
- オペレーションの検出:http://3.90.45.69:8000/mcp/v1/operations
テスト用名前空間
このプロジェクトには、EKS クラスター内にテスト用名前空間が含まれています。
mcp-test-namespace:nginx ポッドが 2 つあるデプロイメントが含まれていますmcp-test-namespace-2:nginx ポッドが 3 つあるデプロイメントが含まれています
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。