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 Agent 提供 EKS 和 Kubernetes 操作。它支持集群与工作负载查询、资源管理及多种身份验证方式。

主要功能

  1. 01列出并查看 EKS 集群
  2. 02检查节点组和 Kubernetes 资源
  3. 03获取 Pod 日志
  4. 04支持多种 EKS 身份验证方式
  5. 05通过 Docker 运行或部署到 ECS

适用场景

  1. 01列出 AWS 区域中的集群
  2. 02检查命名空间中的 Pod 和部署
  3. 03获取 Pod 的日志

MCP 相关

该服务通过操作发现和查询端点,向 MCP 客户端提供 EKS 与 Kubernetes 操作。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

EKS Model Context Protocol (MCP) 服务

一个轻量、高效的服务,实现了用于 EKS 操作的 Model Context Protocol。该服务为 GenAI Agent 提供与 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 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 - 列出命名空间中的 Pod
  • describe_pod - 获取 Pod 的详细信息
  • get_deployments - 列出命名空间中的部署
  • describe_deployment - 获取部署的详细信息
  • get_services - 列出命名空间中的服务
  • describe_service - 获取服务的详细信息
  • get_pod_logs - 获取 Pod 的日志

身份验证方式

该服务支持多种 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

客户端用法

项目包含一个客户端实现,使用 Amazon Bedrock 与 MCP 服务进行对话交互。详情请参阅客户端 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"
    }
  }'
列出 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 部署 README。

当前部署

服务器目前已部署到 ECS,可通过以下地址访问:

测试命名空间

项目在 EKS 集群中包含测试命名空间:

  • mcp-test-namespace:包含一个有 2 个 nginx Pod 的部署
  • mcp-test-namespace-2:包含一个有 3 个 nginx Pod 的部署

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。