Skip to main content
Glama
Makefile8.71 kB
.PHONY: install clean test local container deploy undeploy # OpenShift namespace (can be overridden: make deploy openshift NAMESPACE=my-project) NAMESPACE ?= $(shell oc project -q 2>/dev/null) # Dependency checks deps: @which uv > /dev/null && echo "uv: $(shell uv --version)" || (echo "Error: uv not found. Please install uv." && exit 1) @which podman > /dev/null && echo "podman: $(shell podman --version)" || (echo "Error: podman not found. Please install podman." && exit 1) @which podman-compose > /dev/null && echo "podman-compose: $(shell podman-compose --version)" || (echo "Error: podman-compose not found. Please install podman-compose." && exit 1) @which oc > /dev/null && echo "oc: $(shell oc version --client)" || (echo "Error: oc not found. Please install oc." && exit 1) # Install Python dependencies install: @echo "Creating virtual environment..." @test -d .venv || uv venv @echo "Installing package with dev dependencies..." @. .venv/bin/activate && uv pip install -e ".[dev]" @echo "Installing pre-commit hooks..." @. .venv/bin/activate && pre-commit install @echo "Python dependencies installed successfully!" @echo "Activating virtual environment..." @echo '#!/bin/bash' > /tmp/activate_and_shell.sh @echo 'source .venv/bin/activate' >> /tmp/activate_and_shell.sh @echo 'echo "Virtual environment activated! Type exit to return to your original shell."' >> /tmp/activate_and_shell.sh @echo 'exec "$$SHELL"' >> /tmp/activate_and_shell.sh @chmod +x /tmp/activate_and_shell.sh @exec /tmp/activate_and_shell.sh clean: rm -rf .mypy_cache .ruff_cache .venv __pycache__ activate_and_shell.sh test: @if [ ! -d ".venv" ]; then \ echo "Error: Virtual environment not found. Run 'make install' first to set up the environment."; \ exit 1; \ fi .venv/bin/python -m pytest local: @echo "Setting up local environment..." @test -f .env || (echo "Creating .env from .env.example..." && cp .env.example .env) @echo "Starting MCP server locally on port 5001..." @echo "Health check available at: http://localhost:5001/health" @echo "Press Ctrl+C to stop the server" @. .venv/bin/activate && python -m template_mcp_server.src.main container: export PODMAN_COMPOSE_SILENT=true podman-compose --no-ansi up --build --force-recreate --remove-orphans --timeout=60 # Deployment targets deploy: @if [ "$(filter openshift,$(MAKECMDGOALS))" != "openshift" ] && [ "$(filter mpp,$(MAKECMDGOALS))" != "mpp" ]; then \ echo "Usage: make deploy [openshift|mpp]"; \ echo "Available deployment targets: openshift, mpp"; \ exit 1; \ fi openshift: @echo "Checking for oc CLI..." @which oc > /dev/null || (echo "Error: oc CLI not found. Please install OpenShift CLI." && exit 1) @echo "Validating namespace..." @if [ -z "$(NAMESPACE)" ]; then \ echo "Error: NAMESPACE not set. Usage: make deploy openshift NAMESPACE=your-project"; \ exit 1; \ fi; \ echo "Using namespace: $(NAMESPACE)"; \ echo "Switching to namespace..."; \ oc project $(NAMESPACE) || (echo "Error: Cannot switch to namespace '$(NAMESPACE)'. Check permissions." && exit 1); \ echo "Updating namespace references..."; \ sed -i.bak "s|NAMESPACE_PLACEHOLDER|$(NAMESPACE)|g" deployment/openshift/deployment.yaml; \ sed -i.bak "s|namespace: template-mcp-server|namespace: $(NAMESPACE)|g" deployment/openshift/kustomization.yaml; \ echo "Creating BuildConfig and ImageStream..."; \ oc apply -f deployment/openshift/buildconfig.yaml; \ oc apply -f deployment/openshift/imagestream.yaml; \ echo "Building container image from source..."; \ oc start-build template-mcp-server --from-dir=. --follow || (mv deployment/openshift/deployment.yaml.bak deployment/openshift/deployment.yaml 2>/dev/null; mv deployment/openshift/kustomization.yaml.bak deployment/openshift/kustomization.yaml 2>/dev/null; exit 1); \ echo "Deploying resources to OpenShift..."; \ oc apply -k deployment/openshift/ || (mv deployment/openshift/deployment.yaml.bak deployment/openshift/deployment.yaml 2>/dev/null; mv deployment/openshift/kustomization.yaml.bak deployment/openshift/kustomization.yaml 2>/dev/null; exit 1); \ rm -f deployment/openshift/deployment.yaml.bak deployment/openshift/kustomization.yaml.bak; \ echo "Deployment complete!"; \ echo "Checking deployment status..."; \ oc get pods -l app=template-mcp-server; \ echo ""; \ echo "Useful commands:"; \ echo " View logs: oc logs -l app=template-mcp-server --tail=100"; \ echo " Get route: oc get route template-mcp-server"; \ echo " Check status: oc get pods,svc,route -l app=template-mcp-server" mpp: @echo "Checking for oc CLI..." @which oc > /dev/null || (echo "Error: oc CLI not found. Please install OpenShift CLI." && exit 1) @echo "Validating TENANT parameter..." @if [ -z "$(TENANT)" ]; then \ echo "Error: TENANT not set. Usage: make deploy mpp TENANT=your-tenant"; \ exit 1; \ fi; \ CONFIG_NAMESPACE="$(TENANT)--config"; \ RUNTIME_NAMESPACE="$(TENANT)--template"; \ echo "Config namespace: $$CONFIG_NAMESPACE"; \ echo "Runtime namespace: $$RUNTIME_NAMESPACE"; \ echo "Updating tenant.yaml with config namespace..."; \ sed -i.bak "s|TENANT_PLACEHOLDER|$$CONFIG_NAMESPACE|g" deployment/mpp/tenant.yaml; \ echo "Creating/switching to config namespace..."; \ oc project $$CONFIG_NAMESPACE 2>/dev/null || oc new-project $$CONFIG_NAMESPACE || (echo "Error: Cannot create/switch to namespace '$$CONFIG_NAMESPACE'." && mv deployment/mpp/tenant.yaml.bak deployment/mpp/tenant.yaml 2>/dev/null && exit 1); \ echo "Applying TenantNamespace CR to create runtime namespace..."; \ oc apply -f deployment/mpp/tenant.yaml || (mv deployment/mpp/tenant.yaml.bak deployment/mpp/tenant.yaml 2>/dev/null && exit 1); \ echo "Waiting for runtime namespace '$$RUNTIME_NAMESPACE' to be created..."; \ COUNTER=1; \ until oc get project $$RUNTIME_NAMESPACE 2>/dev/null || [ $$COUNTER -gt 30 ]; do \ echo "Waiting for namespace... ($$COUNTER/30)"; \ sleep 2; \ COUNTER=$$((COUNTER + 1)); \ done; \ if [ $$COUNTER -le 30 ]; then \ echo "Runtime namespace '$$RUNTIME_NAMESPACE' is ready"; \ fi; \ oc project "$(TENANT)--$(RUNTIME_NAMESPACE)" > /dev/null 2>&1 || (echo "Error: Runtime namespace '$$RUNTIME_NAMESPACE' was not created" && mv deployment/mpp/tenant.yaml.bak deployment/mpp/tenant.yaml 2>/dev/null && exit 1); \ echo "Switching to runtime namespace..."; \ oc project $$RUNTIME_NAMESPACE || (echo "Error: Cannot switch to runtime namespace '$$RUNTIME_NAMESPACE'" && mv deployment/mpp/tenant.yaml.bak deployment/mpp/tenant.yaml 2>/dev/null && exit 1); \ echo "Creating BuildConfig and ImageStream..."; \ oc apply -f deployment/mpp/buildconfig.yaml; \ oc apply -f deployment/mpp/imagestream.yaml; \ echo "Building container image from source..."; \ oc start-build template-mcp-server --from-dir=. --follow || (mv deployment/mpp/tenant.yaml.bak deployment/mpp/tenant.yaml 2>/dev/null; exit 1); \ echo "Deploying resources to MPP..."; \ oc apply -k deployment/mpp/ || (mv deployment/mpp/tenant.yaml.bak deployment/mpp/tenant.yaml 2>/dev/null; exit 1); \ rm -f deployment/mpp/tenant.yaml.bak; \ echo "Deployment complete!"; \ echo "Checking deployment status..."; \ oc get pods -l app=template-mcp-server; \ echo ""; \ echo "Useful commands:"; \ echo " View logs: oc logs -l app=template-mcp-server --tail=100"; \ echo " Get route: oc get route template-mcp-server"; \ echo " Check status: oc get pods,svc,route -l app=template-mcp-server" undeploy: @if [ "$(filter openshift,$(MAKECMDGOALS))" = "openshift" ]; then \ echo "Checking for oc CLI..."; \ which oc > /dev/null || (echo "Error: oc CLI not found. Please install OpenShift CLI." && exit 1); \ oc project $(NAMESPACE) || (echo "Error: Cannot switch to namespace '$(NAMESPACE)'" && exit 1); \ echo "Removing OpenShift deployment..."; \ oc delete deployment,service,route,configmap,secret,pvc,buildconfig,imagestream -l app=template-mcp-server 2>/dev/null || true; \ echo "Undeployment complete!"; \ exit 1; \ elif [ "$(filter mpp,$(MAKECMDGOALS))" = "mpp" ]; then \ echo "Checking for oc CLI..."; \ RUNTIME_NAMESPACE="$(TENANT)--template"; \ which oc > /dev/null || (echo "Error: oc CLI not found. Please install OpenShift CLI." && exit 1); \ oc project $$RUNTIME_NAMESPACE || (echo "Error: Cannot switch to runtime namespace '$$RUNTIME_NAMESPACE'" && exit 1); \ echo "Removing MPP deployment..."; \ oc delete deployment,service,route,configmap,secret,pvc,buildconfig,imagestream -l app=template-mcp-server 2>/dev/null || true; \ echo "Undeployment complete!"; \ exit 1; \ else \ echo "Usage: make undeploy [openshift|mpp]"; \ echo "Available undeployment targets: openshift, mpp"; \ exit 1; \ fi %: @:

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/redhat-data-and-ai/template-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server