Skip to main content
Glama

MCP Hub — All-in-One-MCP-Server- und Connector-Ökosystem

Selbst gehosteter Hub, der MCP-Connectors (Model Context Protocol) in einem einzigen Endpunkt für Ihre KI-Clients bündelt – mit einer App-Store-ähnlichen Weboberfläche, Ein-Klick-Installationen, Live-Logs und Health-Monitoring.

Claude Desktop / Cursor ──Bearer key──▶  ┌─────────────────────┐
                                        │   MCP Hub (:3000)    │──▶ github (npx)
                                        │  /mcp   /api  Web UI │──▶ postgres (npx)
Web browser ──session cookie──▶         └─────────┬───────────┘──▶ slack (npx) …
                                                  ▼
                                            PostgreSQL 16

Quick start

A. Lokal / einfaches Docker

cp .env.example .env
# edit .env — set POSTGRES_PASSWORD (and optionally MASTER_ENCRYPTION_KEY / SESSION_SECRET)
docker compose up -d --build

B. Portainer (Web-Editor)

  1. Stacks → Add stack → Web editor und fügen Sie portainer-stack.yml ein.

  2. Fügen Sie eine Umgebungsvariable POSTGRES_PASSWORD hinzu (unter Umgebungsvariablen), bevor Sie bereitstellen.

  3. Bereitstellen – das Image wird von Docker Hub (xeniak10/mcp-hub:latest) gezogen, kein Build erforderlich.

Öffnen Sie http://:3000 – beim ersten Besuch werden Sie aufgefordert, das Administratorkonto zu erstellen (Bootstrap). Dann:

  1. Gehen Sie zu Marketplace, installieren Sie z. B. GitHub, fügen Sie ein Token ein → der untergeordnete Prozess des Connectors startet im Hintergrund.

  2. Gehen Sie zu Settings → erstellen Sie einen API-Schlüssel.

  3. Richten Sie Ihren KI-Client auf den Hub aus:

{
  "mcpServers": {
    "hub": {
      "url": "http://localhost:3000/mcp",
      "headers": { "Authorization": "Bearer mcp_YOUR_KEY" }
    }
  }
}

Alle Connector-Tools erscheinen mit Namensraum wie github__create_issue, postgres__query, …

Related MCP server: open-connector-pro

Was Sie bekommen

  • Marketplace — 71 integrierte Connectors für Entwickler (GitHub, GitLab, Postgres, Kubernetes, Sentry…) und Business-Teams – CRM (Salesforce, HubSpot, Pipedrive), ERP/Buchhaltung (Odoo, QuickBooks, Xero), Helpdesk (Zendesk, Freshdesk, ServiceNow), Kommunikation (Microsoft 365, E-Mail IMAP/SMTP, Twilio, Slack, Teams-Dateien), Produktivität (Google Sheets, Notion, Airtable) und Observability (Dynatrace). Ein-Klick-Installation, schema-basiertes Konfigurationsformular, Hintergrund-Start von Abhängigkeiten über npx/uvx im Hub-Container. Suche, Kategoriefilter und Sortierung (offizielle zuerst / am häufigsten installiert / Name).

  • Community-Connector-Repos – fügen Sie eine öffentliche GitHub-Repo-URL im Marketplace ein (Abschnitt „Community repos“) und jedes gültige Connector-Manifest darin wird abgerufen, validiert und in Ihren Katalog übernommen (mit Namensraum community:owner/repo/<id>, offline im Datenvolumen zwischengespeichert). Eine index.json im Repo-Stammverzeichnis listet Dateien explizit auf; andernfalls werden *.json auf Stammebene geprüft. Neue Einträge erscheinen nach einem Hub-Neustart.

  • Benutzerdefinierte Connectors – legen Sie ein JSON-Manifest in ./connectors/ (oder das connectors-Volume) und es erscheint nach einem Neustart im Marketplace. Siehe connectors/example.json.example.

  • Dashboard – Live-Status-Badges (läuft / startet / Fehler / gestoppt), Statistik-Kacheln, Instanzsuche, Bulk-Restart all / Stop all mit Bestätigung.

  • Connector-Detail – Instanzen inline umbenennen, visueller Konfigurationseditor, Live-Tool-Vorschau (tools/list über den laufenden Prozess) mit Klick-zum-Kopieren von Toolnamen, Echtzeit-Log-Viewer (WebSocket-Tail) mit Level-/Textfiltern, Follow-Modus und Log-Download.

  • Helles & dunkles Design – Umschalter in der Seitenleiste; wird pro Browser gespeichert.

  • Tastaturkürzel – / fokussiert die Suche · g d Dashboard · g m Marketplace · g s Einstellungen · Esc schließt Dialoge/entfokussiert die Suche.

  • PWA-bereit – installierbares Manifest + SVG-Favicon.

  • Backup & Wiederherstellung – Ein-Klick-Export aller installierten Connectors + Konfigurationen in eine JSON-Datei; Import stellt sie auf einer frischen Instanz wieder her (Einstellungen-Seite).

  • Kontoverwaltung – Passwort ändern (meldet alle anderen Geräte ab), aktive Sitzungen mit IP/User-Agent auflisten, beliebige Sitzung widerrufen.

  • Fehlerbenachrichtigungen – setzen Sie ERROR_WEBHOOK_URL und der Hub sendet eine JSON-Benachrichtigung, sobald ein Connector in den Fehlerzustand wechselt (funktioniert mit Slack, Discord, Teams, generischen Empfängern; 5-Minuten-Cooldown pro Connector).

  • Watchdog – abgestürzte Prozesse starten mit exponentiellem Backoff neu; Health-Ping alle 30 s; Boot-Wiederherstellung stellt alles wieder her, was vor dem Neustart aktiviert war.

  • Updates – Einstellungen zeigt Ihre aktuelle Version und prüft GitHub-Releases / Docker-Hub-Tags alle 6 Stunden (oder bei Check now). Wenn eine neue Version veröffentlicht wird, erhalten Sie per Klick eine Kopie des genauen Upgrade-Befehls für Ihren Bereitstellungstyp.

  • Optionale Auto-Updates – aktivieren Sie den Watchtower-Sidecar mit docker compose --profile autoupdate up -d: Er zieht stündlich neuere xeniak10/mcp-hub-Images und erstellt nur den App-Container neu (er ist label-basiert, berührt also nie Ihre Datenbank).

  • Monitoring & Betrieb – nicht authentifiziertes GET /healthz für Uptime-Probes; GET /api/meta meldet Version + Git-Commit (in der Fußzeile der Einstellungen angezeigt); API-Key-Traffic auf /mcp ist auf 120 Anfragen/min pro Schlüssel begrenzt.

  • Sicherheit – AES-256-GCM-verschlüsselte Konfigurationen im Ruhezustand, argon2id-Passwörter, Cookie-Sitzungen, gehashte API-Schlüssel, Login-Rate-Limiting, Audit-Log.

Konfiguration

Variable

Erforderlich

Beschreibung

POSTGRES_PASSWORD

✅

Passwort für das gebündelte PostgreSQL

MASTER_ENCRYPTION_KEY

–

openssl rand -hex 32. Wird bei Leerheit automatisch nach /app/data/master.key generiert

SESSION_SECRET

–

Leer = zufällig pro Start (Benutzer werden bei Neustart abgemeldet)

APP_PORT

–

Host-Port (Standard 3000)

LOG_RETENTION_LINES

–

Ringpuffergröße pro Connector (Standard 5000)

LOG_RETENTION_DAYS

–

Log-Altersgrenze (Standard 7)

ERROR_WEBHOOK_URL

–

URL zum Senden von JSON-Benachrichtigungen, wenn ein Connector in den Fehlerzustand wechselt

Volumes: pgdata (Datenbank), app-data (Master-Schlüssel + Zustand), npx-cache (Connector-Abhängigkeits-Cache – hält Neustarts schnell).

Aktualisierung

Der Hub kann seinen eigenen Container nicht ersetzen, daher sind Updates ein Einzeiler auf dem Host:

docker compose pull app && docker compose up -d --no-deps --force-recreate app

(Einstellungen → Updates kopiert dies für Sie, wenn eine neue Version verfügbar ist. Bei Portainer verwenden Sie Stack → Pull and redeploy.) Möchten Sie es völlig automatisch?

docker compose --profile autoupdate up -d

Das startet Watchtower neben dem Hub; jede Stunde prüft es Docker Hub und erstellt den App-Container neu, wenn ein neueres Image existiert (--cleanup entfernt alte Images). Ihre Daten liegen in Volumes, daher sind Updates verlustfrei.

Entwicklung

npm install
npm run dev        # server (watch) + web (vite dev server on :5173, proxied /api + /mcp)
npm run typecheck  # all workspaces
npm run build      # shared → server → web

Stack: npm workspaces · Fastify 5 · @modelcontextprotocol/sdk · PostgreSQL 16 · Vite + React 18 + Tailwind CSS v4 + TanStack Query.

Layout

packages/
  shared/   types shared by server & web (manifests, API DTOs, WS events)
  server/   Fastify app: auth, registry (connector manifests), ConnectorManager,
            unified /mcp proxy, log pipeline, SQL migrations
  web/      React SPA served statically by the server in production

Hinzufügen eines Connectors

Ohne Neubau (empfohlen): Kopieren Sie connectors/example.json.example nach connectors/<your-id>.json, füllen Sie das Manifest aus (Befehls-argv mit {env.NAME}-Platzhaltern + JSON-Schema-Konfigurationsformular) und starten Sie den Hub neu. Ungültige Dateien werden mit einer Warnung in den Logs übersprungen; benutzerdefinierte IDs, die mit integrierten kollidieren, werden ignoriert.

Aus einem GitHub-Repo: Marketplace → Community repos → fügen Sie owner/repo (oder eine vollständige github.com-URL) ein. Der Hub ruft eine index.json aus dem Repo-Stammverzeichnis ab (Array von Dateipfaden) oder fällt auf *.json-Dateien auf Stammebene zurück, validiert jede gegen dasselbe Schema wie Volume-Manifeste und speichert sie unter community:owner/repo/<id>-IDs – so können sie niemals integrierte überschatten und funktionieren nach dem ersten Abruf offline weiter. Verwalten/Entfernen Sie Repos im selben Abschnitt; Änderungen gelten beim nächsten Neustart.

Integriert: Erstellen Sie packages/server/src/registry/connectors/<id>.ts, das ein ConnectorManifest exportiert, und registrieren Sie es in src/registry/index.ts. Es erscheint sofort nach dem Neubau im Marketplace.

REST-API-Übersicht

Endpunkt

Authentifizierung

Beschreibung

GET /healthz

–

Liveness-Probe (nur DB-Ping, keine Details)

POST /api/auth/bootstrap · login · logout

–/session

Erststart-Konto, An-/Abmeldung

GET /api/meta

session

{version, commit} des laufenden Builds

POST /api/auth/change-password

session

Passwort ändern; widerruft alle anderen Sitzungen

GET /api/auth/sessions · DELETE /:id

session

Aktive Sitzungen auflisten/widerrufen

GET /api/marketplace

session

Katalogeinträge mit Installationszahlen

GET/POST /api/community/repos · DELETE /:repo

session

Community-Connector-Repos verwalten

POST /api/connectors · PUT/DELETE /:id

session

Installieren / umbenennen / deinstallieren

PUT /api/connectors/:id/config

session

Verschlüsselte Konfiguration speichern

POST /api/connectors/:id/enable·disable·restart

session

Lebenszyklus

POST /api/connectors/restart-all · stop-all

session

Massenoperationen

GET /api/connectors/:id/tools

session

Live-Tool-Liste aus dem laufenden Prozess

GET /api/logs/:id?after= + WS stream

session

Log-Tail

GET/POST /api/keys · DELETE /:id

session

API-Schlüsselverwaltung

GET /api/backup · POST /api/backup/restore

session

Konfiguration exportieren/importieren

POST /mcp

Bearer-Schlüssel oder Sitzung

Einheitlicher MCP-Endpunkt (120 Anfragen/min pro Schlüssel)

Alle mutierenden Endpunkte schreiben in das Audit-Log.

Hinweise

  • Connectors laufen als untergeordnete Prozesse im Hub-Container (npx -y pkg@version oder uvx). Es ist kein Docker-Socket eingebunden. Python-basierte Connectors benötigen uvx – es ist im Laufzeit-Image installiert.

  • Der MCP-Endpunkt ist zustandsloses Streamable HTTP (/mcp) – jeder HTTP-MCP-Client funktioniert.

  • Ressourcen werden unter connector://<slug>/<original-uri> bereitgestellt.

Related MCP Connectors

Related MCP Servers