Skip to main content
Glama

MCP Hub — универсальная экосистема MCP-сервера и коннекторов

Самостоятельно размещаемый хаб, который объединяет коннекторы MCP (Model Context Protocol) в единую конечную точку для ваших ИИ-клиентов — с веб-интерфейсом в стиле App Store, установкой в один клик, живыми журналами и мониторингом состояния.

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

Быстрый старт

A. Локально / обычный Docker

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

B. Portainer (веб-редактор)

  1. Stacks → Add stack → Web editor и вставьте portainer-stack.yml.

  2. Добавьте переменную окружения POSTGRES_PASSWORD (в разделе Environment variables) перед развёртыванием.

  3. Разверните — образ загружается с Docker Hub (xeniak10/mcp-hub:latest), сборка не требуется.

Откройте http://:3000 — при первом посещении вам будет предложено создать учётную запись администратора (bootstrap). Затем:

  1. Перейдите в Marketplace, установите, например, GitHub, вставьте токен → дочерний процесс коннектора запускается в фоне.

  2. Перейдите в Settings → создайте API-ключ.

  3. Укажите вашему ИИ-клиенту на хаб:

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

Все инструменты коннекторов отображаются с пространством имён: github__create_issue, postgres__query, …

Related MCP server: CbetaMCP

Что вы получаете

  • Marketplace — 71 встроенный коннектор для разработчиков (GitHub, GitLab, Postgres, Kubernetes, Sentry…) и для бизнес-команд — CRM (Salesforce, HubSpot, Pipedrive), ERP/бухгалтерия (Odoo, QuickBooks, Xero), служба поддержки (Zendesk, Freshdesk, ServiceNow), коммуникации (Microsoft 365, Email IMAP/SMTP, Twilio, Slack, Teams files), продуктивность (Google Sheets, Notion, Airtable) и наблюдаемость (Dynatrace). Установка в один клик, форма конфигурации на основе схемы, фоновый запуск зависимостей через npx/uvx внутри контейнера хаба. Поиск, фильтры по категориям и сортировка (сначала официальные / самые устанавливаемые / по имени).

  • Репозитории сообщества коннекторов — вставьте URL публичного GitHub-репозитория в Marketplace (раздел "Community repos"), и каждый допустимый манифест коннектора в нём будет получен, проверен и объединён в ваш каталог (с пространством имён community:owner/repo/<id>, кэшируется офлайн в томе данных). index.json в корне репозитория явно перечисляет файлы; в противном случае проверяются корневые *.json. Новые записи появляются после перезапуска хаба.

  • Пользовательские коннекторы — поместите JSON-манифест в ./connectors/ (или в том connectors), и он появится в маркетплейсе после перезапуска. См. connectors/example.json.example.

  • Панель управления — живые статусные бейджи (работает / запускается / ошибка / остановлен), плитки статистики, поиск по экземплярам, массовые Restart all / Stop all с подтверждением.

  • Детали коннектора — переименование экземпляров на месте, визуальный редактор конфигурации, живой предпросмотр инструментов (tools/list через запущенный процесс) с копированием имён инструментов по клику, просмотр журналов в реальном времени (WebSocket tail) с фильтрами по уровню/тексту, режимом следования и загрузкой журнала.

  • Светлая и тёмная темы — переключатель в боковой панели; сохраняется для каждого браузера.

  • Горячие клавиши/ фокусирует поиск · g d панель управления · g m маркетплейс · g s настройки · Esc закрывает диалоги/снимает фокус с поиска.

  • Готовность к PWA — устанавливаемый манифест + SVG-фавиконка.

  • Резервное копирование и восстановление — экспорт всех установленных коннекторов и конфигураций в один JSON-файл; импорт восстанавливает их на новом экземпляре (страница Settings).

  • Управление учётной записью — смена пароля (выход на всех других устройствах), список активных сессий с IP/user-agent, отзыв любой сессии.

  • Оповещения об ошибках — задайте ERROR_WEBHOOK_URL, и хаб отправляет JSON-оповещение всякий раз, когда коннектор переходит в состояние ошибки (работает со Slack, Discord, Teams, универсальными приёмниками; период охлаждения 5 минут на коннектор).

  • Watchdog — упавшие процессы перезапускаются с экспоненциальной задержкой; проверка работоспособности каждые 30 секунд; восстановление при загрузке возвращает всё, что было включено до перезапуска.

  • Обновления — в Settings отображается текущая версия и проверяются релизы GitHub / теги Docker Hub каждые 6 часов (или по кнопке Check now). Когда выходит новая версия, вы получаете в один клик точную команду обновления для вашего типа развёртывания.

  • Необязательное автообновление — включите сайдкар Watchtower с помощью docker compose --profile autoupdate up -d: он ежечасно загружает новые образы xeniak10/mcp-hub и пересоздаёт только контейнер приложения (он ограничен метками, поэтому никогда не затрагивает вашу базу данных).

  • Мониторинг и эксплуатация — неаутентифицированный GET /healthz для проверок доступности; GET /api/meta сообщает версию + git-коммит (показывается в нижнем колонтитуле Settings); трафик по API-ключам на /mcp ограничен 120 запросами в минуту на ключ.

  • Безопасность — конфигурации зашифрованы AES-256-GCM в состоянии покоя, пароли argon2id, cookie-сессии, хешированные API-ключи, ограничение скорости входа, журнал аудита.

Конфигурация

Переменная

Обязательная

Описание

POSTGRES_PASSWORD

Пароль для встроенного PostgreSQL

MASTER_ENCRYPTION_KEY

openssl rand -hex 32. Автоматически генерируется в /app/data/master.key, если пусто

SESSION_SECRET

Пусто = случайный при каждой загрузке (пользователи выходят при перезапуске)

APP_PORT

Порт хоста (по умолчанию 3000)

LOG_RETENTION_LINES

Размер кольцевого буфера на коннектор (по умолчанию 5000)

LOG_RETENTION_DAYS

Лимит возраста журнала (по умолчанию 7)

ERROR_WEBHOOK_URL

URL для POST JSON-оповещений, когда коннектор переходит в состояние ошибки

Тома: pgdata (база данных), app-data (мастер-ключ + состояние), npx-cache (кэш зависимостей коннекторов — ускоряет перезапуски).

Обновление

Хаб не может заменить собственный контейнер, поэтому обновление — это одна команда на хосте:

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

(Settings → Updates копирует её для вас, когда доступна новая версия. В Portainer используйте Stack → Pull and redeploy.) Хотите полностью автоматически?

docker compose --profile autoupdate up -d

Это запускает Watchtower рядом с хабом; каждый час он проверяет Docker Hub и пересоздаёт контейнер приложения, когда существует более новый образ (--cleanup удаляет старые образы). Ваши данные хранятся в томах, поэтому обновления проходят без потерь.

Разработка

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

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

Структура

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

Добавление коннектора

Без пересборки (рекомендуется): скопируйте connectors/example.json.example в connectors/<your-id>.json, заполните манифест (argv команды с плейсхолдерами {env.NAME}

  • форма конфигурации JSON-schema) и перезапустите хаб. Недопустимые файлы пропускаются с предупреждением в журналах; пользовательские идентификаторы, конфликтующие со встроенными, игнорируются.

Из GitHub-репозитория: Marketplace → Community repos → вставьте owner/repo (или полный URL github.com). Хаб получает index.json из корня репозитория (массив путей к файлам) или возвращается к корневым *.json-файлам, проверяет каждый по той же схеме, что и манифесты в томах, и кэширует их под идентификаторами community:owner/repo/<id> — так они никогда не могут перекрыть встроенные и продолжают работать офлайн после первой загрузки. Управление/удаление репозиториев в том же разделе; изменения применяются при следующем перезапуске.

Встроенный: создайте packages/server/src/registry/connectors/<id>.ts, экспортирующий ConnectorManifest, и зарегистрируйте его в src/registry/index.ts. Он появится в маркетплейсе сразу после пересборки.

Сводка REST API

Endpoint

Auth

Описание

GET /healthz

Проверка работоспособности (только ping БД, без деталей)

POST /api/auth/bootstrap · login · logout

–/session

Учётная запись при первом запуске, вход/выход

GET /api/meta

session

{version, commit} текущей сборки

POST /api/auth/change-password

session

Смена пароля; отзывает все другие сессии

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

session

Список/отзыв активных сессий

GET /api/marketplace

session

Записи каталога с количеством установок

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

session

Управление репозиториями коннекторов сообщества

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

session

Установка / переименование / удаление

PUT /api/connectors/:id/config

session

Сохранение зашифрованной конфигурации

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

session

Жизненный цикл

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

session

Массовые операции

GET /api/connectors/:id/tools

session

Живой список инструментов из запущенного процесса

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

session

Хвост журнала

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

session

Управление API-ключами

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

session

Экспорт/импорт конфигурации

POST /mcp

Bearer key or session

Единая конечная точка MCP (120 запросов/мин на ключ)

Все изменяющие конечные точки записывают в журнал аудита.

Примечания

  • Коннекторы работают как дочерние процессы внутри контейнера хаба (npx -y pkg@version или uvx). Docker-сокет не монтируется. Коннекторы на Python требуют uvx — он установлен в образ времени выполнения.

  • Конечная точка MCP — это stateless Streamable HTTP (/mcp) — подходит любой HTTP MCP-клиент.

  • Ресурсы доступны по адресу connector://<slug>/<original-uri>.

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A modular, extensible FastAPI-based platform that aggregates multiple AI tools and microservices into a unified interface with standardized I/O formats, perfect for frontend integration or LLM system orchestration.
    4
    MIT
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Intelligent routing service that selects optimal AI models based on capability requirements and normalizes input/output formats across multiple providers like OpenAI, Anthropic, Google, and others.
  • F
    license
    Not graded
    quality
    D
    maintenance
    A unified local API gateway providing caching, rate limiting, and full Model Context Protocol compatibility for AI agent integration. It enables users to aggregate multiple API endpoints into a single gateway with built-in observability and customizable eviction strategies.

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/xeniak123/mcp-hub'

If you have feedback or need assistance with the MCP directory API, please join our Discord server