OpenShift/Kubernetes安装程序检查器-MCP服务器
MCP(模型上下文协议)服务器,用于分析git存储库以提取应用程序安装需求,并根据OpenShift/Kubernetes集群对其进行验证。
特性
🔍 存储库分析
- Git仓库支持:从GitHub/GitLab存储库中获取README和部署文件
- YAML解析:从Helm图表、Kubernetes清单、ConfigMgr和CRD中提取资源需求
- 智能提取:标识CPU、内存、GPU、存储要求和节点选择器
- CRD检测:从部署清单中提取自定义资源定义要求
🖥️ 群集扫描
- 资源发现:扫描连接的OpenShift/Kubernetes集群以获取可用资源
- 节点分析:检测CPU、内存、GPU容量和可分配资源
- 当前使用情况跟踪:监控实时资源消耗(通过指标服务器)
- GPU模型检测:从节点标签中标识特定的GPU型号(A100、H100、MI250等)
- GPU内存检测:从节点标签中提取GPU VRAM(例如,A10G为24GB,A100为80GB)
- 目标扫描:优化扫描,只获取验证所需的资源(速度提高30-50%)
- 存储类:列出可用的存储类和默认配置
- 操作员检测:已安装操作员的扫描(OpenShift OLM)
- CRD库存:列出群集中的所有自定义资源定义
✅ 可行性检查
- 资源验证:将需求与群集容量进行比较
- GPU类验证:验证GPU模型/类,而不仅仅是数量
- 数据中心等级要求(A100、H100、H200、MI250等) - 特定型号匹配(例如“A100/L4”、“H100或更新型号”) - 拒绝满足数据中心要求的消费级GPU(RTX、GTX、T4)
- GPU内存验证:验证GPU VRAM要求(对LLM工作负载至关重要)
- 比较所需GPU内存与可用GPU内存(例如,24Gi与80GB A100) - GPU内存不足时清除错误消息
- CRD冲突检测:检查CRD名称冲突、API组不匹配以及版本兼容性
- 可用资源计算:使用当前使用情况来确定实际可用资源
- 信心评分:根据现有数据提供高/中/低置信度
🤖 MCP集成
- 克劳德代码:与Claude CLI无缝协作
- 光标:作为MCP工具集成在Cursor IDE中
- 多平台:支持GitHub和GitLab存储库
安装
- 克隆此存储库:
git clone https://github.com/Hadar301/mcp-openshift-installer-checker.git
cd mcp-openshift-installer-checker- 使用安装依赖项
uv:
uv sync- (可选)设置GitHub/GitLab代币以避免速率限制:
cp .env.example .env
# Edit .env and add your tokens- (可选)登录您的OpenShift/Kubernetes集群以扫描功能:
# For OpenShift
oc login
# For Kubernetes
kubectl config use-context 先决条件
必需的
- Python 3.10+
- 紫外线 包管理器:
pip install uv
可选(用于群集扫描)
- 欧西 (OpenShift命令行界面)或 kubectl 的 (Kubernetes命令行界面)
- 度量服务器 安装在群集中(用于当前使用情况跟踪)
- 活动群集连接(
oc login或kubectl config use-context)
用法
作为MCP服务器(使用克劳德代码或游标)
配置Claude代码
首先,克隆存储库:
git clone https://github.com/Hadar301/mcp-openshift-installer-checker.git
cd mcp-openshift-installer-checker
uv sync然后编辑 ~/.claude.json 并将MCP服务器配置添加到要使用它的项目中。例如,为您的主目录配置它(/Users/yourusername):
{
"projects": {
"/Users/yourusername": {
"mcpServers": {
"openshift-installer-checker": {
"type": "stdio",
"command": "uv",
"args": [
"--directory",
"/path/to/mcp-openshift-installer-checker",
"run",
"python",
"main.py"
],
"env": {
"GITHUB_TOKEN": ""
}
}
}
}
}
}备注:
- 替换
/Users/yourusername使用您的实际主目录路径 - 替换
/path/to/mcp-openshift-installer-checker使用克隆存储库的实际路径 - 替换 `` 使用您的GitHub个人访问令牌
然后使用克劳德代码:
claude chat问克劳德:
- “我可以安装吗https://github.com/nvidia/NeMo-Microservices在我的集群上?"
- “检查https://github.com/kubeflow/kubeflow将适合我的集群”
配置光标
首先,克隆存储库:
git clone https://github.com/Hadar301/mcp-openshift-installer-checker.git
cd mcp-openshift-installer-checker
uv sync然后编辑 ~/.cursor/mcp.json:
{
"mcpServers": {
"openshift-installer-checker": {
"command": "uv",
"args": [
"--directory",
"/path/to/mcp-openshift-installer-checker",
"run",
"python",
"main.py"
],
"cwd": "/path/to/mcp-openshift-installer-checker",
"env": {
"GITHUB_TOKEN": ""
}
}
}
}备注:替换 /path/to/mcp-openshift-installer-checker 使用克隆存储库的实际路径,以及 `` 使用您的GitHub个人访问令牌。
然后在Cursor聊天中询问:“分析以下内容的安装要求https://github.com/your/repo并检查是否可以安装”
运作原理
第1阶段:存储库分析
- URL解析:提取平台(GitHub/GitLab)、所有者和存储库名称
- README获取:通过GitHub/GitLab API下载README.md
- 部署文件发现:搜索常用路径(
helm/,deploy/,k8s/,manifests/等等) - YAML解析:从Kubernetes清单中提取资源规范
- CRD提取:标识要安装的自定义资源定义
- 需求聚合:结合多个来源的要求
第2阶段:群集扫描(如果群集可用)
- CLI检测:尝试
oc第一个(OpenShift),回落到kubectl - 目标扫描:仅根据需求获取所需资源(性能优化)
- 节点扫描:收集容量、可分配资源、GPU型号和GPU内存
- 使用情况跟踪:获取当前资源消耗(需要指标服务器)
- 存储类:列出可用的存储资源(仅在需要存储时)
- 软件清单:扫描已安装的操作员和CRD(仅在需要时)
- 可用计算:计算可用资源(可分配-已使用)
第三阶段:可行性检查
- 资源验证:将CPU、内存、GPU与群集容量进行比较
- GPU模型验证:验证GPU类/型号要求
- 数据中心等级:A100、H100、H200、L4、L40、MI250、MI300等。 - 被拒绝的消费级GPU:T4、RTX、GTX、Quadro、Titan
- GPU内存验证:验证GPU VRAM要求
- 将所需内存(例如24Gi、80GB)与可用GPU内存进行比较 - 对于LLM部署至关重要(Llama-70B需要80GB,DeepSeek-V3需要600GB+)
- 存储验证:检查可用的存储类
- CRD冲突检测:识别潜在的CRD冲突
- 信心评分:根据可用数据分配置信度
第四阶段:LLM分析
返回结构化数据,供Claude/Cursor分析并呈现给用户
项目结构
mcp-openshift-installer-checker/
├── main.py # MCP server entry point
├── .env.example # Example environment variables
├── pyproject.toml # Project dependencies (uv)
├── uv.lock # Dependency lock file
├── LICENSE # MIT license
├── README.md # This file
├── src/
│ ├── __init__.py
│ ├── cluster_analyzer/
│ │ ├── scanner.py # Cluster resource scanner (with targeted scanning)
│ │ └── __init__.py
│ ├── cluster_checker/
│ │ ├── feasibility.py # Requirement validation (with GPU memory checks)
│ │ └── __init__.py
│ └── requirements_extractor/
│ ├── extractor.py # Main orchestrator
│ ├── git_handler.py # GitHub/GitLab API client
│ ├── __init__.py
│ ├── parser/
│ │ ├── yaml_parser.py # YAML resource extraction
│ │ └── __init__.py
│ ├── models/
│ │ ├── requirements.py # Pydantic data models
│ │ └── __init__.py
│ └── utils/
│ ├── resource_comparisons.py # CPU/memory comparison utilities
│ └── __init__.py
└── test/
├── test_crd_detection.py # CRD conflict detection tests
├── test_gpu_model_validation.py # GPU model validation tests
├── test_command_injection_protection.py # Security tests
├── test_extraction.py # Requirement extraction tests
├── test_usage_tracking.py # Resource usage tracking tests
├── failed_attempt.md # Test documentation
└── successful_attempt.md # Test documentationClaude/Cursor查询示例
一旦配置为MCP服务器,您可以询问Claude或Cursor:
- 基本分析:
- “有什么要求https://github.com/prometheus/prometheus?" - “分析硬件需求https://github.com/argoproj/argo-cd"
- 可行性检查 (需要群集连接):
- “我可以安装吗https://github.com/nvidia/NeMo-Microservices在我的集群上?" - “威尔https://github.com/kubeflow/kubeflow适合我的集群吗?" - “检查我的集群是否可以处理https://github.com/ray-project/kuberay"
- GPU验证:
- “我的集群是否有合适的GPUhttps://github.com/vllm-project/vllm?" - “我可以使用当前的GPU设置运行此ML工作负载吗?”
- CRD冲突检测:
- “安装此操作程序会与我现有的CRD冲突吗?” - “此应用程序将创建哪些CRD?”
Claude/Cursor将自动:
- 打电话给
analyze_app_requirements工具 - 扫描连接的群集(如果可用)
- 根据集群容量验证需求
- 检查CRD冲突
- 以清晰、格式化的输出呈现结果
扫描系统要求
群集访问
- 与OpenShift/Kubernetes集群的活动连接
oc(OpenShift命令行界面)或kubectl已安装并位于PATH中- 用户以读取权限登录
故障排除
群集不可用
如果群集扫描失败:
- 验证是否安装了CLI工具:
oc version或kubectl version - 检查群集连接:
oc whoami或kubectl cluster-info - 即使没有集群访问权限,该工具也可以继续用于存储库分析
度量服务器不可用
如果使用情况跟踪失败:
- 安装度量服务器:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml - 可行性检查退回到可分配资源(仍在运行)
未检测到GPU型号
如果GPU模型显示为空:
- 检查节点是否有GPU标签:
kubectl get nodes -o json | jq '.items[].metadata.labels' - GPU设备插件(NVIDIA、AMD)会自动添加这些标签
- 手动标签:
kubectl label node nvidia.com/gpu.product=NVIDIA-A100-SXM4-40GB
MCP服务器未连接
- 检查MCP配置文件路径是否正确
- 验证
uv已安装:uv --version - 尝试手动运行:
uv run python main.py - 使用MCP检查器进行调试:
npx @modelcontextprotocol/inspector uv run python main.py
贡献
欢迎投稿!该项目侧重于为DevOps自动化构建实用的MCP服务器。
开发设置
git clone https://github.com/Hadar301/mcp-openshift-installer-checker.git
cd mcp-openshift-installer-checker
uv sync运行测试
# Test CRD detection
PYTHONPATH=. uv run python test/test_crd_detection.py
# Test GPU validation
PYTHONPATH=. uv run python test/test_gpu_model_validation.py代码结构
src/cluster_analyzer/-具有目标优化的群集资源扫描src/cluster_checker/-通过GPU内存检查进行可行性验证src/requirements_extractor/-存储库分析和需求提取test/-测试脚本main.py-MCP服务器入口点
许可证
麻省理工学院
