EKS模型上下文协议(MCP)服务器
一个轻量级、高效的服务器,为EKS操作实现模型上下文协议。该服务器为GenAI代理与EKS集群交互提供了一个标准化的接口。
特性
- 响应时间快,超时处理得当
- 全面的EKS运营支持
- Kubernetes资源管理(Pod、服务、部署等)
- 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编写配置requirements.txt:Python依赖关系client/:客户端实现目录(客户端自述)ecs-deployment/:ECS部署脚本和配置(ECS部署自述)
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-在命名空间中列出Poddescribe_pod-获取pod的详细信息get_deployments-列出命名空间中的部署describe_deployment-获取有关部署的详细信息get_services-在命名空间中列出服务describe_service-获取有关服务的详细信息get_pod_logs-从pod获取日志
身份验证方法
服务器支持EKS集群的多种身份验证方法:
- AWS SDK身份验证:使用AWS SDK与EKS进行身份验证并获取集群信息
- Kubectl与生成的Kubeconfig:创建临时kubeconfig文件并使用kubectl
- 直接调用Kubernetes API:对Kubernetes API服务器进行直接的API调用
当前的实现使用具有适当身份验证的Kubectl方法,这提供了最可靠的结果。
入门指南
先决条件
- 码头工人
- 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部署自述 详细说明。
# 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客户端使用情况
该项目包括一个客户端实现,该实现使用Amazon Bedrock与MCP服务器进行对话交互。请参阅 客户端自述 了解详情。
# 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"
}
}'列出Pod
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部署自述 详细说明。
当前部署
服务器当前已部署到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:包含一个带有2个nginx Pod的部署mcp-test-namespace-2:包含3个nginx Pod的部署
许可证
麻省理工学院
