Token导航 LogoToken导航TokenDH.com
MCP Server Eks logo
运维云端stdio官方级别未说明来源级核验

MCP Server Eks

MCP Server

Demo eks mcp server

工具数

0

提示词数

0

GitHub Stars

1

资源数

0
Kubernetes管理容器编排PythonClaude自动化部署Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

jbrcoleman

提供方

jbrcoleman

最后核验

2026/5/18 03:27

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python3 demo-natural-language.py

详细介绍

EKS上的MCP服务器

该项目使用Terraform在Amazon EKS上部署了一个模型上下文协议(MCP)服务器,用于基础设施管理。

建筑

  • MCP服务器:基于Python的服务器实现MCP协议
  • 容器:MCP服务器的Docker容器
  • 库贝内特斯:用于容器编排的EKS集群
  • 卡彭特:Kubernetes原生节点自动缩放器,实现高效缩放
  • 基础设施:AWS资源管理平台

先决条件

  • 配置了适当权限的AWS CLI
  • Docker已安装
  • 地形>=1.0
  • kubectl已安装
  • 已创建带有ECR存储库的AWS帐户

快速开始

  1. 设置环境变量:
export AWS_REGION=us-east-1
export AWS_ACCOUNT_ID=your-account-id
export CLUSTER_NAME=mcp-eks-cluster
  1. 使用Karpenter进行部署(推荐):
# Option 1: Deploy everything at once
./scripts/deploy.sh all

# Option 2: Phase-by-phase deployment
./scripts/deploy.sh infrastructure  # Deploy EKS cluster
./scripts/deploy.sh karpenter       # Deploy Karpenter autoscaler
./scripts/deploy.sh app             # Deploy MCP server
  1. 传统部署(不含Karpenter):
make init
make plan
make apply
make deploy

项目结构

├── server-enhanced.py           # MCP server with real Kubernetes API integration
├── client-example.py            # Example MCP client for testing
├── Dockerfile                   # Container definition
├── requirements.txt             # Python dependencies
├── terraform/                   # Infrastructure as code
│   ├── main.tf                 # Main Terraform configuration with integrated Karpenter
│   ├── variables.tf            # Variable definitions
│   ├── outputs.tf              # Output definitions
│   └── userdata.sh             # EC2 user data script for Karpenter nodes
├── k8s/                        # Kubernetes manifests
│   ├── namespace.yaml          # Namespace definition
│   ├── deployment.yaml         # Application deployment
│   ├── service.yaml            # Service definition
│   └── configmap.yaml          # Configuration map
├── scripts/                    # Deployment scripts
│   ├── deploy.sh               # Main deployment script
│   ├── terraform-init.sh       # Terraform initialization
│   └── test-deployment.sh      # Complete deployment test
├── claude-desktop-config.json  # Claude Desktop MCP configuration
├── integrate-with-claude.md     # Claude Desktop integration guide
└── Makefile                    # Build automation

MCP服务器功能

服务器(server-simple.py)

  • Real Kubernetes API集成:使用适当的RBAC连接到实际的EKS集群
  • HTTP REST API:简单的HTTP端点,便于测试和集成
  • 端点:

- GET /health -使用Kubernetes API连接状态进行健康检查 - GET /cluster-info -包含命名空间计数的实时群集信息 - GET /nodes -实时节点状态和信息 - GET /pods?namespace= -来自任何命名空间的实时pod信息 - GET /deployments?namespace= -部署状态和副本计数

  • 安全:具有最低所需权限的适当RBAC
  • 错误处理:优雅的API错误处理和详细的错误响应
  • 负载均衡器:通过AWS应用程序负载均衡器进行外部访问

什么是MCP(模型上下文协议)?

主控程序 使像Claude这样的人工智能助手能够连接到外部数据源和工具。除了运行kubectl命令,您还可以询问有关集群的自然语言问题!

魔术: 您的EKS集群↔️ MCP服务器↔️ 克劳德桌面↔️ 自然语言

自然语言示例

而不是像这样的命令 kubectl get nodes你可以问克劳德:

  • *“我的集群怎么样了?”* → 获取运行状况、节点和状态
  • *“我的MCP服务器Pod是否正在运行?”* → 检查pod运行状况并重新启动
  • *“我有什么Karpenter节点?”* → 显示自动缩放节点
  • *“显示我的所有命名空间”* → 列出群集命名空间
  • *“我的集群有问题吗?”* → 全面健康检查

演示自然语言界面

# See what natural language queries would look like
python3 demo-natural-language.py

客户端集成选项

  1. HTTP REST API:用于测试和集成的直接HTTP访问
  2. 克劳德桌面:通过MCP桥的自然语言接口(见claude desktop config.json)
  3. 负载均衡器:通过AWS ELB进行外部访问以供生产使用

部署命令

基于Karpenter的部署(推荐)

# Deploy everything with Karpenter
./scripts/deploy.sh all

# Or deploy in phases for more control
./scripts/deploy.sh infrastructure  # Phase 1: EKS cluster with minimal nodes
./scripts/deploy.sh karpenter       # Phase 2: Karpenter installation
./scripts/deploy.sh app             # Phase 3: MCP server application

# Test deployment
./scripts/test-deployment.sh

传统基础设施部署

# Initialize and deploy infrastructure (without Karpenter)
make init plan apply

# Build and deploy application
make deploy

# Complete deployment (infrastructure + app)
make full-deploy

局部测试

# Install dependencies
pip install -r requirements.txt

# Test server locally (requires kubectl access to EKS)
python server-enhanced.py

# Run client example
python client-example.py

Claude桌面集成

# Follow the integration guide
cat integrate-with-claude.md

# Copy configuration (macOS example)
cp claude-desktop-config.json ~/Library/Application\ Support/Claude/claude_desktop_config.json

配置

环境变量:

  • AWS_REGION:AWS区域(默认:us-east-1)
  • CLUSTER_NAME:EKS群集名称(默认值:mcp-EKS-cluster)
  • IMAGE_TAG:Docker镜像标签(默认:最新)
  • AWS_ACCOUNT_ID:您的AWS帐户ID

卡彭特配置

Karpenter设置遵循AWS EKS蓝图模式,包括:

  • EKS模块集成:使用具有内置Karpenter支持的地形aws模块/eks
  • 受管节点组:2个带有karpenter.sh/controller污点的t3.medium节点,用于系统Pod
  • Pod标识:使用EKS Pod Identity安全访问AWS API
  • 节点池:配置实例类型(t3.中型/大型/xlarge)和容量类型(现货/按需)
  • EC2节点类:使用发现标签定义AMI系列(AL2023)、安全组和子网
  • 自动缩放:节点根据pod调度要求进行扩展,整合时间为30秒
  • 成本优化:更喜欢定点实例并整合未充分利用的节点

当前状态✅

  • 卡彭特:成功部署和配置节点(AL2023 AMI)
  • MCP服务器:运行在Karpenter-托管节点上的HTTP REST API
  • 负载均衡器:外部访问已配置并正常工作
  • RBAC:Kubernetes API访问的正确权限

监控

访问您的MCP服务器:

kubectl get service mcp-server-service -n mcp-server

查看日志:

kubectl logs -f deployment/mcp-server -n mcp-server

使用示例

HTTP REST API

通过HTTP端点直接访问服务器:

# Get LoadBalancer URL
LB_URL=$(kubectl get service mcp-server-service -n mcp-server -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')

# Health check
curl http://$LB_URL/health

# Cluster information
curl http://$LB_URL/cluster-info

# Node information
curl http://$LB_URL/nodes

# Pod information
curl http://$LB_URL/pods?namespace=mcp-server

# Deployment information
curl http://$LB_URL/deployments?namespace=default

局部测试

# Port forward for local access
kubectl port-forward -n mcp-server service/mcp-server-service 8080:80

# Test endpoints
curl http://localhost:8080/health
curl http://localhost:8080/cluster-info

测试

快速测试

运行综合测试套件:

./test-all.sh

手动测试

# Get LoadBalancer URL
LB_URL=$(kubectl get service mcp-server-service -n mcp-server -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')

# Test all endpoints
curl http://$LB_URL/health
curl http://$LB_URL/cluster-info  
curl http://$LB_URL/nodes
curl http://$LB_URL/pods?namespace=mcp-server
curl http://$LB_URL/deployments?namespace=default

测试卡彭特自动缩放

# Apply test workload to trigger node provisioning
kubectl apply -f test-karpenter.yaml

# Watch Karpenter create new nodes
kubectl get nodeclaim -w

# Scale up to test more provisioning
kubectl scale deployment test-workload --replicas=8

# Check new nodes
kubectl get nodes -l karpenter.sh/nodepool

# Clean up
kubectl delete -f test-karpenter.yaml

监视器Karpenter

# Check Karpenter status
kubectl get nodepool,ec2nodeclass -o wide

# Watch Karpenter logs
kubectl logs -f -n karpenter -l app.kubernetes.io/name=karpenter

# Check node provisioning
kubectl get nodeclaim

故障排除

常见问题

  1. 导入错误:安装依赖项 pip install -r requirements.txt
  2. Kubernetes API访问:确保 kubectl 已配置并正在工作
  3. ECR权限:验证AWS凭据是否具有ECR访问权限
  4. Claude桌面连接:检查配置文件路径和格式

日志和调试

# Check pod logs
kubectl logs -f deployment/mcp-server -n mcp-server

# Test Kubernetes connectivity
kubectl get nodes

# Verify ECR repository
aws ecr describe-repositories --repository-names mcp-server

清理

Karpenter部署清理

# Remove in reverse order
kubectl delete -f k8s/
cd terraform && terraform destroy -auto-approve

遗留部署清理

make destroy

目录标签

目录标签

Kubernetes管理容器编排PythonClaude自动化部署developer-toolsmcp-servereksterraformkubernetes本地部署自然语言接口AWSEKS

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP