Skip to content

Admin UIΒΆ

MCP Gateway includes a built-in Admin UI for managing all entities in real time via a web browser.


πŸ–₯️ Accessing the UIΒΆ

After launching the gateway (make serve or make podman-run), open your browser and go to:

http://localhost:4444/admin - or the corresponding URL / port / protocol (ex: https when launching with make podman-run-ssl)

Login using the BASIC_AUTH_USER and BASIC_AUTH_PASSWORD set in your .env.


🧭 UI Overview¢

The Admin UI is built with HTMX, Alpine.js, and Tailwind CSS, offering a dynamic, SPA-like experience without JavaScript bloat.

Technology StackΒΆ

Layer Technology Purpose
Templating Jinja2 Server-side HTML rendering (44 templates in mcpgateway/templates/)
Interactivity HTMX 1.9.10 AJAX without JavaScript, HTML-over-HTTP patterns
Reactivity Alpine.js 3.x Lightweight reactive components
Styling Tailwind CSS Utility-first CSS framework
Code Editor CodeMirror 5.65.18 Syntax-highlighted editing
Charts Chart.js Data visualization and metrics
Markdown Marked.js Markdown rendering
Security DOMPurify XSS sanitization
Icons Font Awesome Icon library

All vendor libraries are bundled locally for air-gapped deployments with CDN fallbacks. See Air-Gapped Mode below.

It provides tabbed access to:

  • Servers Catalog: Define or edit MCP servers (real or virtual)
  • Tools: Register REST or native tools, configure auth/rate limits, test responses
  • Resources: Add templated or static resources, set MIME types, enable caching
  • Prompts: Define Jinja2 prompt templates with argument schemas and preview rendering
  • Gateways: View and manage federated peers, toggle activity status
  • Roots: Register root URIs for agent or resource scoping
  • Metrics: Real-time usage and performance metrics for all entities
  • πŸ“Š Metadata Tracking: View comprehensive audit information in entity detail modals

✍️ Common Actions¢

Action How
Register a tool Use the Tools tab β†’ Add Tool form
Bulk import tools Use API endpoint /admin/tools/import (see Bulk Import)
View prompt output Go to Prompts β†’ click View
View entity metadata Click "View" on any entity β†’ scroll to "Metadata" section
Toggle server activity Use the "Activate/Deactivate" buttons in Servers tab
Delete a resource Navigate to Resources β†’ click Delete (after confirming)

All actions are reflected in the live API via /tools, /prompts, etc.


πŸ” Auth + JWT from UIΒΆ

Upon successful login, the UI automatically sets a secure JWT token as an HTTP-only cookie (jwt_token).

This token is reused for all Admin API calls from within the UI.


πŸ”„ Live Reloading (Dev Only)ΒΆ

If running in development mode (DEV_MODE=true or make run), changes to templates and routes reload automatically.


πŸ”’ Air-Gapped ModeΒΆ

For environments without internet access, the Admin UI can load all CSS/JavaScript from local files instead of CDNs.

Enable Air-Gapped ModeΒΆ

Set the environment variable:

MCPGATEWAY_UI_AIRGAPPED=true

How It WorksΒΆ

By default, the UI loads vendor libraries from CDNs (Tailwind, HTMX, Alpine.js, etc.). When MCPGATEWAY_UI_AIRGAPPED=true:

  • All libraries load from mcpgateway/static/vendor/
  • No external network requests for UI assets
  • Identical functionality, fully offline

Containerfile.lite automatically downloads and bundles vendor assets during build:

docker build -f Containerfile.lite -t mcpgateway:airgapped .
docker run -e MCPGATEWAY_UI_AIRGAPPED=true -p 4444:4444 mcpgateway:airgapped

See Container Deployment for details.

Local DevelopmentΒΆ

To test air-gapped mode locally without containers:

# Download vendor assets (one-time)
./scripts/download-cdn-assets.sh

# Run with air-gapped mode enabled
MCPGATEWAY_UI_AIRGAPPED=true make dev

The script downloads to mcpgateway/static/vendor/:

Library Version Size
Tailwind CSS CDN ~404KB
HTMX 1.9.10 ~52KB
CodeMirror 5.65.18 ~216KB
Alpine.js 3.14.1 ~48KB
Chart.js 4.4.1 ~208KB
Font Awesome 6.4.0 ~1.2MB