OM

odzywa/mcp-platform

Deployment & DevOps
10 stars 2 forks Quality 73 Trend 32MIT

A secure platform for easy deployment of MCP servers with any tools.

Overview

A self-hosted platform for creating, deploying and managing — without writing code. Connect AI assistants (Continue, OpenWebUI, Claude Desktop) to your infrastructure: databases, APIs, Kubernetes clusters, Linux servers — all through a visual web UI. - — create MCP tools from a web form, not code - — one click deploys a containerized MCP server - — shell commands, HTTP APIs, custom images - — allowlist binaries, block dangerous commands, enforce read-only mode - — Tool Server (OpenAPI), Python tool import, filter pipeline - — streamable-http transport, auto-generated config snippets - — every tool invocation logged with caller IP and model name Docker Desktop on macOS/Windows works for development but runtime containers may not be reachable by AI clients outside the VM. Linux is recommended for production. Your user must be in the docker group, otherwise install.sh and all docker commands will fail with permission errors.

README

MCP Platform

A self-hosted platform for creating, deploying and managing MCP (Model Context Protocol) servers — without writing code.

Connect AI assistants (Continue, OpenWebUI, Claude Desktop) to your infrastructure: databases, APIs, Kubernetes clusters, Linux servers — all through a visual web UI.


What it does

  • Visual tool builder — create MCP tools from a web form, not code
  • Instant deploy — one click deploys a containerized MCP server
  • Multiple runtime types — shell commands, HTTP APIs, custom images
  • Policy engine — allowlist binaries, block dangerous commands, enforce read-only mode
  • OpenWebUI integration — Tool Server (OpenAPI), Python tool import, filter pipeline
  • Continue integration — streamable-http transport, auto-generated config snippets
  • Audit log — every tool invocation logged with caller IP and model name

Prerequisites

Requirement Version Install
Docker Engine 24.0+ docs.docker.com/engine/install
Docker Compose v2.20+ (plugin) included with Docker Desktop / apt install docker-compose-plugin
OS Linux (Ubuntu 22.04+ recommended) —
RAM 2 GB minimum, 4 GB recommended —
Disk 4 GB free (images + data) —
Ports 18100 + range 19000–19999 open firewall / UFW

Note: Docker Desktop on macOS/Windows works for development but runtime containers may not be reachable by AI clients outside the VM. Linux is recommended for production.

Install Docker (Ubuntu)

curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
newgrp docker
docker --version        # Docker version 24.x.x
docker compose version  # Docker Compose version v2.x.x

Important: Your user must be in the docker group, otherwise install.sh and all docker commands will fail with permission errors.

# Add current user to docker group
sudo usermod -aG docker $USER

# Apply without logout (current session only)
newgrp docker

# Verify
docker ps   # should work without sudo

If you log out and back in, group membership is applied automatically.


Installation

# 1. Install Docker (if not already installed)
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
newgrp docker

# 2. Clone the repository
git clone https://github.com/YOUR_USERNAME/mcp-platform.git
cd mcp-platform

# 3. Run the installer
chmod +x install.sh
./install.sh

Open http://YOUR_SERVER_IP:18100 — login: admin / admin

Updating to a newer version

git pull
docker compose up -d --build mcp-platform mcp-platform-operator

Note: --force-recreate alone does not rebuild images from updated source code.
Always use --build after git pull.

Rebuilding images manually (after local code changes)

# Rebuild control plane only
docker compose up -d --build mcp-platform

# Rebuild operator only
docker compose up -d --build mcp-platform-operator

# Rebuild runtime images (shell / http-gateway)
docker compose --profile build-only build
# Then redeploy running runtimes via the UI: Runtime → Deploy

# Rebuild everything at once
docker compose build && docker compose up -d

Quick Start

Requirements: Docker 24+, Docker Compose v2, Linux

git clone https://github.com/YOUR_USERNAME/mcp-platform.git
cd mcp-platform
chmod +x install.sh
./install.sh

Open http://localhost:18100 — login: admin / admin


Manual Setup

# 1. Copy and edit configuration
cp .env.example .env
# Edit MCP_HOST_DATA_PATH to the absolute path of the data/ folder

# 2. Build runtime images
docker compose --profile build-only build

# 3. Start the platform
docker compose up -d

# 4. Open the UI
open http://localhost:18100

Architecture

┌─────────────────────────────────────────────────┐
│                   MCP Platform UI                │
│            (FastAPI · SQLite · port 18100)        │
└────────────────────┬────────────────────────────┘
                     │ manages
         ┌───────────▼──────────┐
         │   Operator (worker)   │
         │   Docker SDK          │
         └───────────┬──────────┘
                     │ creates/stops
     ┌───────────────┼───────────────────┐
     ▼               ▼                   ▼
┌─────────┐   ┌─────────────┐   ┌──────────────┐
│ Shell   │   │ HTTP Gateway│   │ Custom Image │
│ Runtime │   │ Runtime     │   │ Runtime      │
│ /mcp    │   │ /mcp        │   │ /mcp         │
└─────────┘   └─────────────┘   └──────────────┘
     ▲               ▲
     │ calls         │ calls
┌────┴───────────────┴──────┐
│  AI Client                │
│  Continue / OpenWebUI     │
└───────────────────────────┘
Component Description
control-plane Web UI + REST API — manages runtimes, tools, policies
operator Background worker — creates/stops Docker containers
runtime-shell Shell runtime — executes CLI commands (curl, psql, oc, ping…)
runtime-http-gateway HTTP runtime — calls external REST APIs

Base Runtime Images

Every MCP runtime container must use one of the two platform base images (or a custom image built on top of them). These images contain the built-in MCP server (FastAPI + uvicorn) that handles /mcp, /tools/{name}, /openwebui and /health endpoints.

mcp-runtime-shell:latest

Built from runtime-shell/ during docker compose build.

Base: python:3.12-slim (Debian Bookworm Slim)

Included tools:

Tool Purpose
curl, jq HTTP requests and JSON parsing
oc, kubectl OpenShift and Kubernetes CLI
ping Network diagnostics
ssh Remote server access
FastAPI + uvicorn MCP server on port 8080

Use for: shell tools — curl, oc, kubectl, psql, ping, ssh, any CLI command

mcp-runtime-http-gateway:latest

Built from runtime-http-gateway/ during docker compose build.

Base: python:3.12-slim (Debian Bookworm Slim)

Included:

Component Purpose
FastAPI + uvicorn MCP server on port 8080
httpx Async HTTP client for calling external REST APIs

Use for: HTTP tools — calling external REST APIs, webhooks, integrations

Building a custom image

If you need tools not available in the base images (e.g. psql, terraform, awscli), use the Image Builder in the UI or write your own Dockerfile:

# ALWAYS start from a platform base image — never from a raw OS image
FROM mcp-runtime-shell:latest

RUN apt-get update && apt-get install -y postgresql-client && rm -rf /var/lib/apt/lists/*

⚠️ Raw OS images will NOT work.
ubuntu:24.04, debian:bookworm-slim, alpine etc. do not contain the MCP server.
The container starts with bash, exits immediately, and enters a restart loop.


Creating your first MCP server

Option A — Use an example package

  1. Go to Tool Packages → Import Package JSON
  2. Upload a file from examples/ (e.g. curl-http-toolkit.json)
  3. Click Create MCP → name it → Deploy
  4. Copy the endpoint URL → paste into Continue or OpenWebUI

Option B — Build from scratch

  1. Tool Packages → + Generate Package
  2. Fill in name, choose runtime type (Shell or HTTP)
  3. Add tools with commands/URLs and input parameters
  4. Install → Create MCP Server → Deploy

See docs/jak-stworzyc-mcp-server.md for full step-by-step guide.

Option C — Let AI create it for you (Platform Manager)

MCP Platform includes a built-in Platform Manager MCP server — a meta-MCP that lets AI models create other MCP servers automatically.

  1. Go to Quick Start → deploy MCP Platform Manager
  2. Add credential: PLATFORM_URL = http://mcp-platform:8080
  3. Deploy → connect to your AI client
  4. Tell the AI what you need:
"Create an MCP server for monitoring MikroTik router at 192.168.88.1 with login admin and password test123"

The AI will:

  • Read platform instructions (get_instructions)
  • Generate the package JSON with tools, policy, and credentials
  • Call create_mcp_server to deploy it automatically

Available tools in Platform Manager:

Tool Description
get_instructions Returns full documentation on how to create MCP servers
create_mcp_server Creates + deploys a server from package JSON in one call
list_servers Lists all running MCP servers
list_packages Lists available template packages
server_details Shows details of a specific server
deploy_server Starts a stopped server
stop_server Stops a running server

Built-in template packages

Package Tools Description
curl-http-toolkit 3 HTTP GET, POST, status check via curl
openshift-readonly 7 oc get, describe, logs, events, status, top
mikrotik-readonly 7 MikroTik REST API — interfaces, DHCP, routes, firewall, logs
minio-readonly 5 MinIO S3 — list buckets, objects, download files
mssql-readonly 4 MSSQL SELECT queries, list tables/databases
trino-readonly 5 Trino SQL — catalogs, schemas, tables, queries
git-readonly 6 Git log, diff, show, status, branches, blame
platform-manager 7 Meta-MCP — AI creates and manages other MCP servers

Connect to Continue

{
  "mcpServers": {
    "my-server": {
      "url": "http://localhost:PORT/mcp",
      "transport": "streamable-http"
    }
  }
}

OpenWebUI Integration

MCP Platform has native integration with OpenWebUI.
Each deployed MCP server automatically exposes three integration endpoints:

Each runtime serves a full OpenAPI spec at /openwebui/openapi.json.
OpenWebUI discovers all tools automatically.

  1. OpenWebUI → Admin Panel → Tools → Tool Servers → Add
  2. Enter URL: http://YOUR_IP:PORT/openwebui
  3. Save — all tools from the MCP server appear instantly

OpenWebUI automatically appends /openapi.json — enter the base URL only.

Each runtime generates a ready-to-import Python tool file.

  1. Open the runtime detail page → Podłącz tab → copy the Python Tool link
  2. OpenWebUI → Workspace → Tools → Import from URL → paste the link
  3. The tool appears in your workspace with full function signatures

Option 3 — RAGHybrid filter pipeline

If you run RAGHybrid alongside MCP Platform, use the auto-context filter:

  • Automatically injects RAG context into prompts when the tool is active
  • Configurable top_k, retrieval mode, and source filtering

Example Packages

File Description
examples/curl-http-toolkit.json HTTP GET, POST, status check via curl
examples/psql-readonly.json PostgreSQL SELECT queries
examples/openshift-readonly.json oc get / describe / logs

Configuration

Variable Default Description
MCP_PLATFORM_PORT 18100 UI port
MCP_HOST_DATA_PATH (required) Absolute path to data/ on host
MCP_RUNTIME_PUBLIC_BASE_URL http://localhost Base URL for runtime endpoints
MCP_RUNTIME_PUBLIC_PORT_BASE 19000 Starting port for runtime containers

License

Copyright © 2026 — All Rights Reserved.
See LICENSE MIT

View the full README on GitHub

Install

This server does not publish a one-line install command.

Open the repository installation guide New to MCP? Start with the mcpskill.org guide →

Configuration

{ "mcpServers": { "my-server": { "url": "http://localhost:PORT/mcp", "transport": "streamable-http" } } }