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

Emr MCP Server

MCP Server

EMR MCP Server是一款全面的模型上下文协议服务器,提供EMR集群管理、配置推荐和监控功能,支持实时性能分析、成本优化和配置调优。

工具数

9

提示词数

0

GitHub Stars

1

资源数

0
集群管理安全认证Python性能优化

安装说明

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

作者 / 组织

akashdeep01

提供方

akashdeep01

最后核验

2026/5/17 20:22

快速接入

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

命令预览

pip install -r requirements.txt

详细介绍

EMR MCP服务器

一个全面的模型上下文协议(MCP)服务器,为EMR集群管理、配置建议和监控功能提供智能指导。该服务器在EMR主节点上运行,提供对集群性能、成本优化和配置调优的实时洞察。

🚀 特性

🏗️ 群集管理

  • 实时集群信息 具有详细的实例组分析
  • 多集群支持 具有过滤和搜索功能
  • 成本分析和估算 按实例类型细分
  • 实例类型建议 基于工作负载模式
  • 自动缩放策略建议 优化资源利用

📊 资源监控

  • YARN资源管理器集成 用于应用程序监控
  • HDFS名称节点监控 用于存储健康和利用率
  • 实时资源利用率 跨所有群集节点
  • 应用程序性能分析 具有瓶颈识别功能
  • 历史趋势分析 用于容量规划

🧠 分析和优化

  • Spark历史服务器集成 详细的工作分析
  • 配置建议 基于工作负载模式
  • 性能诊断 具有可操作的见解
  • 成本优化建议 包括spot实例使用情况
  • 特定于工作负载的调优 适用于批处理、流式处理和机器学习工作负载

🔒 安全和身份验证

  • 多种身份验证方法:API密钥、JWT令牌、IAM角色
  • 基于角色的访问控制 具有细粒度权限
  • 安全通信 使用HTTPS和证书验证
  • 请求速率限制 防止滥用
  • 审核日志记录 用于合规和监控

📋 快速开始

先决条件

  • EMR集群运行版本6.0+
  • Python 3.8+
  • 访问YARN资源管理器(端口8088)
  • 访问Spark历史服务器(端口18080)
  • 访问HDFS名称节点(端口9870)

安装

# Clone the repository
git clone https://github.com/your-org/emr-mcp-server.git
cd emr-mcp-server

# Install dependencies
pip install -r requirements.txt

# Configure the server
cp config/server_config.yaml.example config/server_config.yaml
# Edit the configuration file with your EMR cluster details

配置

编辑 config/server_config.yaml:

server:
  host: "0.0.0.0"
  port: 3000
  debug: false
  workers: 4

emr:
  region: "us-east-1"
  cluster_id: "j-XXXXXXXXX"  # Optional: specific cluster ID
  
yarn:
  resource_manager_url: "http://localhost:8088"
  timeout: 30
  
spark:
  history_server_url: "http://localhost:18080"
  timeout: 30
  
hdfs:
  namenode_url: "http://localhost:9870"
  timeout: 30

auth:
  method: "api_key"  # Options: api_key, jwt, iam
  api_keys:
    - "emr-mcp-default-key"
  jwt_secret: "your-jwt-secret"
  
logging:
  level: "INFO"
  format: "console"  # Options: console, json

运行服务器

# Start the server directly
python -m src.server

# Or use the startup script
./scripts/start_server.sh

# Check server status
curl http://localhost:3000/health

🛠️ MCP工具

群集管理工具

get_cluster_info

检索全面的EMR集群信息,包括配置、实例组和成本分析。

{
  "name": "get_cluster_info",
  "arguments": {
    "cluster_id": "j-XXXXXXXXX"  // Optional
  }
}

list_clusters

列出所有具有可选状态过滤的EMR集群。

{
  "name": "list_clusters",
  "arguments": {
    "states": ["RUNNING", "WAITING"]  // Optional
  }
}

estimate_cost

计算当前和预计成本,并进行详细细分。

{
  "name": "estimate_cost",
  "arguments": {
    "runtime_hours": 48.0,  // Optional
    "cluster_id": "j-XXXXXXXXX"  // Optional
  }
}

suggest_instance_types

根据工作负载特征获取基于AI的实例类型建议。

{
  "name": "suggest_instance_types",
  "arguments": {
    "workload_type": "memory_intensive",  // Options: general, compute_intensive, memory_intensive, storage_intensive
    "data_size_gb": 1000,  // Optional
    "concurrent_jobs": 10  // Optional
  }
}

监视工具

monitor_resources

跨YARN、HDFS和集群节点获取实时资源利用率。

{
  "name": "monitor_resources",
  "arguments": {}
}

analyze_yarn_applications

使用性能指标和资源使用情况分析YARN应用程序。

{
  "name": "analyze_yarn_applications",
  "arguments": {
    "states": ["RUNNING", "FINISHED"],  // Optional
    "application_types": ["SPARK"],  // Optional
    "limit": 50  // Optional, default: 50
  }
}

diagnose_performance

识别性能瓶颈并获得优化建议。

{
  "name": "diagnose_performance",
  "arguments": {
    "app_id": "application_1234567890_0001",  // Optional
    "time_range_hours": 24  // Optional, default: 24
  }
}

分析工具

get_spark_logs

获取并分析Spark应用程序日志以进行调试和优化。

{
  "name": "get_spark_logs",
  "arguments": {
    "app_id": "application_1234567890_0001",  // Required
    "executor_id": "1"  // Optional
  }
}

recommend_configuration

获取Spark和YARN的工作负载特定配置建议。

{
  "name": "recommend_configuration",
  "arguments": {
    "workload_type": "batch",  // Options: batch, streaming, ml, interactive
    "app_id": "application_1234567890_0001"  // Optional
  }
}

🚀 部署选项

1.EMR引导脚本(推荐)

创建EMR集群时自动部署:

# Upload bootstrap script to S3
aws s3 cp scripts/bootstrap-emr-mcp.sh s3://your-bucket/

# Create EMR cluster with MCP server
aws emr create-cluster \
  --name "EMR-MCP-Cluster" \
  --release-label emr-6.4.0 \
  --applications Name=Spark Name=Hadoop Name=Hive Name=Zeppelin \
  --instance-groups \
    InstanceGroupType=MASTER,InstanceType=m5.xlarge,InstanceCount=1 \
    InstanceGroupType=CORE,InstanceType=m5.2xlarge,InstanceCount=3 \
    InstanceGroupType=TASK,InstanceType=m5.large,InstanceCount=2,BidPrice=0.05 \
  --bootstrap-actions Path=s3://your-bucket/bootstrap-emr-mcp.sh \
  --ec2-attributes KeyName=your-key-pair \
  --log-uri s3://your-bucket/emr-logs/

2.Docker部署

# Build the image
docker build -t emr-mcp-server .

# Run with docker-compose
docker-compose up -d

# Check logs
docker-compose logs -f emr-mcp-server

3.系统化服务

# Copy service file
sudo cp scripts/emr-mcp-server.service /etc/systemd/system/

# Enable and start
sudo systemctl enable emr-mcp-server
sudo systemctl start emr-mcp-server
sudo systemctl status emr-mcp-server

💻 使用示例

Python客户端

import asyncio
from examples.client_example import EMRMCPClient

async def main():
    async with EMRMCPClient("http://localhost:3000", "emr-mcp-default-key") as client:
        # Get cluster information
        cluster_info = await client.call_tool("get_cluster_info")
        print("Cluster Info:", cluster_info["content"][0]["text"])
        
        # Monitor resources
        resources = await client.call_tool("monitor_resources")
        print("Resources:", resources["content"][0]["text"])
        
        # Get configuration recommendations
        config_rec = await client.call_tool("recommend_configuration", {
            "workload_type": "batch"
        })
        print("Config Recommendations:", config_rec["content"][0]["text"])

asyncio.run(main())

cURL示例

# Health check
curl http://localhost:3000/health

# List available tools
curl -X GET http://localhost:3000/tools \
  -H "X-API-Key: emr-mcp-default-key"

# Get cluster information
curl -X POST http://localhost:3000/tools/call \
  -H "Content-Type: application/json" \
  -H "X-API-Key: emr-mcp-default-key" \
  -d '{
    "name": "get_cluster_info",
    "arguments": {}
  }'

# Monitor resources
curl -X POST http://localhost:3000/tools/call \
  -H "Content-Type: application/json" \
  -H "X-API-Key: emr-mcp-default-key" \
  -d '{
    "name": "monitor_resources",
    "arguments": {}
  }'

🧪 发展

运行测试

# Install development dependencies
pip install -r requirements.txt

# Run all tests
pytest

# Run specific test file
pytest tests/test_cluster.py -v

# Run with coverage
pytest --cov=src tests/ --cov-report=html

# Run demo with mock data
python demo.py

# Test server creation
python test_server.py

代码质量

# Format code
black src/ tests/ examples/

# Sort imports
isort src/ tests/ examples/

# Type checking
mypy src/

# Linting
flake8 src/ tests/ examples/

🏗️ 建筑

emr-mcp-server/
├── src/
│   ├── server.py              # Main MCP server implementation
│   ├── tools/                 # MCP tool implementations
│   │   ├── cluster.py         # Cluster management tools
│   │   ├── monitoring.py      # Resource monitoring tools
│   │   └── analytics.py       # Analytics and optimization tools
│   ├── connectors/            # Service connectors
│   │   ├── emr.py            # EMR API connector
│   │   ├── yarn.py           # YARN ResourceManager connector
│   │   ├── spark.py          # Spark History Server connector
│   │   └── hdfs.py           # HDFS NameNode connector
│   └── utils/                 # Utilities
│       ├── config.py         # Configuration management
│       └── auth.py           # Authentication utilities
├── config/
│   └── server_config.yaml    # Server configuration
├── tests/                     # Comprehensive test suite
├── examples/                  # Usage examples
├── scripts/                   # Deployment scripts
├── Dockerfile                 # Docker configuration
├── docker-compose.yml        # Docker Compose setup
├── demo.py                    # Demo with mock data
└── test_server.py            # Server creation test

📊 演示的主要功能

✅ 已完成实施

  1. 🏗️ 完整的项目结构

- 组织代码库,明确分离关注点 - 带有导入的正确Python包结构 - 使用YAML和环境变量进行配置管理

  1. 🔧 MCP服务器实现

- 完全符合MCP协议与工具注册 - 异步/等待架构,实现高性能 - 具有可配置格式的结构化日志记录 - 优雅的关机,适当的清理

  1. 🔌 维修连接器

- 用于集群管理的EMR API集成 - 用于应用程序监控的YARN ResourceManager连接器 - 用于作业分析的Spark历史服务器连接器 - 用于存储监控的HDFS NameNode连接器 - 连接池和重试逻辑

  1. 🛠️ MCP工具

- 群集管理:get_cluster_info、估计成本、建议实例类型 - 监控:监控资源、分析应用程序、诊断性能 - 分析:get_park_logs,推荐配置 - 所有工具都返回结构化降价,并提供可操作的见解

  1. 🔒 安全和身份验证

- 多方法身份验证(API密钥、JWT、IAM角色) - 输入验证和净化 - 安全配置管理

  1. 🚀 部署就绪

- 具有多阶段构建的Docker容器化 - 用于自动部署的EMR引导脚本 - 系统化服务配置 - Docker Compose用于开发

  1. 🧪 测试与质量

- 带模拟功能的全面测试套件 - 带有真实模拟数据的演示脚本 - 代码质量工具(黑色、isort、mypy、flake8) - 在整个代码库中键入提示

  1. 📚 文档和示例

- 带有使用示例的详细自述文件 - 带有异步模式的Python客户端示例 - API测试的cURL示例 - 配置示例和部署指南

🎯 演示结果

演示成功显示:

🎯 EMR MCP Server Demo
================================================================================
🚀 EMR Cluster Management Demo
📋 Getting Cluster Information...
💰 Cost Estimation...
🖥️  Instance Type Suggestions...

📊 Resource Monitoring Demo
📈 Resource Monitoring...
🔍 YARN Applications Analysis...

🧠 Analytics & Configuration Demo
⚙️  Configuration Recommendations for Batch Workload...
🤖 Configuration Recommendations for ML Workload...

✅ Demo completed successfully!

🔧 生产就绪功能

  • 错误处理:通过有意义的消息进行全面的错误处理
  • 日志记录:具有多种输出格式的结构化日志记录
  • 配置:基于环境的配置和验证
  • 监控:健康检查和指标端点
  • 安全:身份验证、授权和输入验证
  • 演出:异步操作、连接池、缓存
  • 部署:多种自动化部署选项

🤝 贡献

我们欢迎捐款!请参阅我们的开发工作流程:

  1. 分叉 存储库
  2. 创建 特征分支
  3. 制造 您通过测试所做的更改
  4. 测试套件和质量检查
  5. 提交 pull请求

📄 许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

🙏 致谢

  • AWS电子病历团队 卓越的大数据平台
  • MCP社区 对于协议规范
  • Apache Spark哈杜普 社区

______________________________________________________________________

由以下材料制成❤️ EMR社区

*已准备好在EMR集群上进行生产部署!*

目录标签

目录标签

集群管理安全认证Python性能优化本地部署资源监控成本分析

接入字段

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

stdio

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

api-key

工具数量(toolCount,工具数)

9

资源数量(resourceCount,资源数)

0

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

0

权限和风险

stdioapi-key部署方式未说明

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

安装前确认

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

来源信息

继续浏览同类 MCP