openshift-installer-checker
Analyzes git repositories to extract installation requirements and validates feasibility against OpenShift/Kubernetes clusters.
README
OpenShift/Kubernetes Installer Checker - MCP Server
An MCP (Model Context Protocol) server that analyzes git repositories to extract application installation requirements and validates them against OpenShift/Kubernetes clusters.
Features
š Repository Analysis
- Git Repository Support: Fetches README and deployment files from GitHub/GitLab repositories
- YAML Parsing: Extracts resource requirements from Helm charts, Kubernetes manifests, ConfigMaps, and CRDs
- Smart Extraction: Identifies CPU, memory, GPU, storage requirements, and node selectors
- CRD Detection: Extracts Custom Resource Definition requirements from deployment manifests
š„ļø Cluster Scanning
- Resource Discovery: Scans connected OpenShift/Kubernetes clusters for available resources
- Node Analysis: Detects CPU, memory, GPU capacity and allocatable resources
- Current Usage Tracking: Monitors real-time resource consumption (via metrics-server)
- GPU Model Detection: Identifies specific GPU models (A100, H100, MI250, etc.) from node labels
- GPU Memory Detection: Extracts GPU VRAM from node labels (e.g., 24GB for A10G, 80GB for A100)
- Targeted Scanning: Optimized scanning that only fetches resources needed for validation (30-50% faster)
- Storage Classes: Lists available storage classes and default configurations
- Operator Detection: Scans for installed operators (OpenShift OLM)
- CRD Inventory: Lists all Custom Resource Definitions in the cluster
ā Feasibility Checking
- Resource Validation: Compares requirements against cluster capacity
- GPU Class Validation: Validates GPU models/classes, not just quantity
- Datacenter-class requirements (A100, H100, H200, MI250, etc.)
- Specific model matching (e.g., "A100/L4", "H100 or newer")
- Rejects consumer GPUs (RTX, GTX, T4) for datacenter requirements
- GPU Memory Validation: Validates GPU VRAM requirements (critical for LLM workloads)
- Compares required vs available GPU memory (e.g., 24Gi vs 80GB A100)
- Clear error messages when GPU memory is insufficient
- CRD Conflict Detection: Checks for CRD name conflicts, API group mismatches, and version compatibility
- Available Resource Calculation: Uses current usage to determine actually available resources
- Confidence Scoring: Provides high/medium/low confidence based on available data
š¤ MCP Integration
- Claude Code: Works seamlessly with Claude CLI
- Cursor: Integrates as MCP tool in Cursor IDE
- Multi-Platform: Supports both GitHub and GitLab repositories
Installation
- Clone this repository:
git clone https://github.com/Hadar301/mcp-openshift-installer-checker.git
cd mcp-openshift-installer-checker
- Install dependencies using
uv:
uv sync
- (Optional) Set up GitHub/GitLab tokens to avoid rate limits:
cp .env.example .env
# Edit .env and add your tokens
- (Optional) Log in to your OpenShift/Kubernetes cluster for scanning features:
# For OpenShift
oc login <cluster-url>
# For Kubernetes
kubectl config use-context <context-name>
Prerequisites
Required
- Python 3.10+
- uv package manager:
pip install uv
Optional (for cluster scanning)
- oc (OpenShift CLI) or kubectl (Kubernetes CLI)
- metrics-server installed in cluster (for current usage tracking)
- Active cluster connection (
oc loginorkubectl config use-context)
Usage
As an MCP Server (with Claude Code or Cursor)
Configure for Claude Code
First, clone the repository:
git clone https://github.com/Hadar301/mcp-openshift-installer-checker.git
cd mcp-openshift-installer-checker
uv sync
Then edit ~/.claude.json and add the MCP server configuration to the project where you want to use it. For example, to configure it for your home directory (/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": "<your-github-token>"
}
}
}
}
}
}
Note:
- Replace
/Users/yourusernamewith your actual home directory path - Replace
/path/to/mcp-openshift-installer-checkerwith the actual path where you cloned the repository - Replace
<your-github-token>with your GitHub personal access token
Then use Claude Code:
claude chat
Ask Claude:
- "Can I install https://github.com/nvidia/NeMo-Microservices on my cluster?"
- "Check if https://github.com/kubeflow/kubeflow will fit on my cluster"
Configure for Cursor
First, clone the repository:
git clone https://github.com/Hadar301/mcp-openshift-installer-checker.git
cd mcp-openshift-installer-checker
uv sync
Then edit ~/.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": "<your-github-token>"
}
}
}
}
Note: Replace /path/to/mcp-openshift-installer-checker with the actual path where you cloned the repository, and <your-github-token> with your GitHub personal access token.
Then ask in Cursor chat: "Analyze installation requirements for https://github.com/your/repo and check if it can be installed"
How It Works
Phase 1: Repository Analysis
- URL Parsing: Extracts platform (GitHub/GitLab), owner, and repository name
- README Fetching: Downloads README.md via GitHub/GitLab API
- Deployment File Discovery: Searches common paths (
helm/,deploy/,k8s/,manifests/, etc.) - YAML Parsing: Extracts resource specifications from Kubernetes manifests
- CRD Extraction: Identifies Custom Resource Definitions to be installed
- Requirement Aggregation: Combines requirements from multiple sources
Phase 2: Cluster Scanning (if cluster available)
- CLI Detection: Tries
ocfirst (OpenShift), falls back tokubectl - Targeted Scanning: Only fetches resources needed based on requirements (performance optimization)
- Node Scanning: Collects capacity, allocatable resources, GPU models, and GPU memory
- Usage Tracking: Fetches current resource consumption (requires metrics-server)
- Storage Classes: Lists available storage provisioners (only if storage required)
- Software Inventory: Scans for installed operators and CRDs (only if needed)
- Available Calculation: Computes free resources (allocatable - used)
Phase 3: Feasibility Checking
- Resource Validation: Compares CPU, memory, GPU against cluster capacity
- GPU Model Validation: Validates GPU class/model requirements
- Datacenter-class: A100, H100, H200, L4, L40, MI250, MI300, etc.
- Consumer GPUs rejected: T4, RTX, GTX, Quadro, Titan
- GPU Memory Validation: Validates GPU VRAM requirements
- Compares required memory (e.g., 24Gi, 80GB) against available GPU memory
- Critical for LLM deployments (Llama-70B needs 80GB, DeepSeek-V3 needs 600GB+)
- Storage Validation: Checks for available storage classes
- CRD Conflict Detection: Identifies potential CRD conflicts
- Confidence Scoring: Assigns confidence level based on available data
Phase 4: LLM Analysis
Returns structured data for Claude/Cursor to analyze and present to user
Project Structure
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 documentation
Example Queries for Claude/Cursor
Once configured as an MCP server, you can ask Claude or Cursor:
-
Basic Analysis:
- "What are the requirements for https://github.com/prometheus/prometheus?"
- "Analyze hardware needs for https://github.com/argoproj/argo-cd"
-
Feasibility Checking (requires cluster connection):
- "Can I install https://github.com/nvidia/NeMo-Microservices on my cluster?"
- "Will https://github.com/kubeflow/kubeflow fit on my cluster?"
- "Check if my cluster can handle https://github.com/ray-project/kuberay"
-
GPU Validation:
- "Does my cluster have the right GPUs for https://github.com/vllm-project/vllm?"
- "Can I run this ML workload with my current GPU setup?"
-
CRD Conflict Detection:
- "Will installing this operator conflict with my existing CRDs?"
- "What CRDs will be created by this application?"
Claude/Cursor will automatically:
- Call the
analyze_app_requirementstool - Scan the connected cluster (if available)
- Validate requirements against cluster capacity
- Check for CRD conflicts
- Present results in a clear, formatted output
System Requirements for Scanning
Cluster Access
- Active connection to OpenShift/Kubernetes cluster
oc(OpenShift CLI) orkubectlinstalled and in PATH- User logged in with read permissions
Troubleshooting
Cluster Not Available
If cluster scanning fails:
- Verify CLI tool is installed:
oc versionorkubectl version - Check cluster connection:
oc whoamiorkubectl cluster-info - The tool continues to work for repository analysis even without cluster access
Metrics Server Not Available
If usage tracking fails:
- Install metrics-server:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml - Feasibility checks fall back to allocatable resources (still functional)
GPU Models Not Detected
If GPU models show as empty:
- Check if nodes have GPU labels:
kubectl get nodes -o json | jq '.items[].metadata.labels' - GPU device plugins (NVIDIA, AMD) add these labels automatically
- Manual labeling:
kubectl label node <node-name> nvidia.com/gpu.product=NVIDIA-A100-SXM4-40GB
MCP Server Not Connecting
- Check the MCP config file path is correct
- Verify
uvis installed:uv --version - Try running manually:
uv run python main.py - Use the MCP Inspector to debug:
npx @modelcontextprotocol/inspector uv run python main.py
Contributing
Contributions welcome! This project focuses on building practical MCP servers for DevOps automation.
Development Setup
git clone https://github.com/Hadar301/mcp-openshift-installer-checker.git
cd mcp-openshift-installer-checker
uv sync
Running Tests
# 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
Code Structure
src/cluster_analyzer/- Cluster resource scanning with targeted optimizationsrc/cluster_checker/- Feasibility validation with GPU memory checkssrc/requirements_extractor/- Repository analysis and requirement extractiontest/- Test scriptsmain.py- MCP server entry point
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.