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-httptransport, 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
dockergroup, otherwiseinstall.shand alldockercommands 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 sudoIf 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-recreatealone does not rebuild images from updated source code.
Always use--buildaftergit 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,alpineetc. do not contain the MCP server.
The container starts withbash, exits immediately, and enters a restart loop.
Creating your first MCP server
Option A — Use an example package
- Go to Tool Packages → Import Package JSON
- Upload a file from
examples/(e.g.curl-http-toolkit.json) - Click Create MCP → name it → Deploy
- Copy the endpoint URL → paste into Continue or OpenWebUI
Option B — Build from scratch
- Tool Packages → + Generate Package
- Fill in name, choose runtime type (Shell or HTTP)
- Add tools with commands/URLs and input parameters
- 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.
- Go to Quick Start → deploy MCP Platform Manager
- Add credential:
PLATFORM_URL=http://mcp-platform:8080 - Deploy → connect to your AI client
- 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_serverto 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:
Option 1 — Tool Server (recommended, multiple tools at once)
Each runtime serves a full OpenAPI spec at /openwebui/openapi.json.
OpenWebUI discovers all tools automatically.
- OpenWebUI → Admin Panel → Tools → Tool Servers → Add
- Enter URL:
http://YOUR_IP:PORT/openwebui - Save — all tools from the MCP server appear instantly
OpenWebUI automatically appends
/openapi.json— enter the base URL only.
Option 2 — Python Tool (import from link)
Each runtime generates a ready-to-import Python tool file.
- Open the runtime detail page → Podłącz tab → copy the Python Tool link
- OpenWebUI → Workspace → Tools → Import from URL → paste the link
- 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
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"
}
}
}