Skip to content

matzew/mcp-launcher

Repository files navigation

🚀 MCP Launcher

A web UI for browsing, configuring, and deploying MCP servers on Kubernetes / OpenShift.

✨ Features

  • 📋 Catalog — Browse MCP servers from labeled ConfigMaps using the MCP Registry server.json standard
  • ⚙️ Configure — Fill in environment variables, arguments, file mounts, and ServiceAccount via web form
  • 👁️ Live YAML Preview — See the MCPServer CR update in real-time as you type (htmx)
  • ▶️ Deploy — Create MCPServer custom resources, Secrets, and ConfigMaps with one click
  • 🗑️ Cleanup — Delete running servers and all managed artifacts

📦 Catalog Format

Catalog entries are Kubernetes ConfigMaps with the label mcp.x-k8s.io/catalog-entry=true, each containing a server.json aligned with the MCP Registry standard:

{ "name": "io.example/my-mcp-server", "title": "My MCP Server", "description": "Does useful things via MCP", "version": "1.0.0", "packages": [{ "registryType": "oci", "identifier": "quay.io/example/my-mcp-server:latest", "transport": { "type": "streamable-http" }, "environmentVariables": [ { "name": "API_KEY", "isSecret": true, "isRequired": true } ] }], "_meta": { "io.openshift/k8s": { "defaultPort": 8080 } } }

Kubernetes-specific extensions live under _metaio.openshift/k8s per the standard's publisher metadata mechanism.

🛠️ Quick Start

Prerequisites

Deploy

Single-file install (namespaces, RBAC, deployment, service, and sample catalog):

kubectl apply -f dist/mcp-launcher.yaml

Or step-by-step:

make catalog # Create mcp-catalog namespace + sample ConfigMaps make deploy # Create mcp-system namespace + RBAC + Deployment + Service

Access the UI

kubectl -n mcp-system port-forward svc/mcp-launcher 8080:8080

Then open http://localhost:8080.

🏗️ Development

make build # Build binary to bin/mcp-launcher make run # Build and run locally (uses kubeconfig) make fmt # Format code make vet # Vet code make test # Run tests

Container Image

make docker-build # Build with podman (ubi9/go-toolset + ubi9-micro) make docker-push # Push to quay.io/matzew/mcp-launcher:latest

📁 Project Structure

├── main.go # HTTP server, routes, kubeconfig ├── catalog/ │ ├── types.go # MCP Registry-aligned structs │ └── catalog.go # ConfigMap-backed catalog store ├── handlers/ │ └── handlers.go # HTTP handlers (catalog, configure, run, delete) ├── templates/ # Go HTML templates (htmx) ├── deploy/ │ ├── catalog/ # Sample catalog ConfigMaps (5 servers) │ ├── deployment.yaml # Deployment + Service │ └── rbac/ # ServiceAccount, ClusterRole, ClusterRoleBinding ├── dist/ │ └── mcp-launcher.yaml # Single-file install (all resources) ├── Dockerfile # Multi-stage: ubi9/go-toolset → ubi9-micro └── Makefile 

📄 License

Apache License 2.0 — see LICENSE.

About

Launch MCP servers on Kubernetes

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors