No description
  • Go 76.4%
  • TypeScript 17.1%
  • HTML 4.2%
  • CSS 1%
  • SCSS 0.8%
  • Other 0.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
ymnuk 4685595f40
All checks were successful
ci/woodpecker/tag/woodpecker Pipeline was successful
fix: CI
2026-09-20 23:12:11 +03:00
cmd/mcp-scheduler fix: REST /api/v1/* отвечал корректирующим 307-редиректом вместо JSON 2026-09-20 13:33:29 +03:00
docs fix: CI 2026-09-20 23:08:45 +03:00
internal fix: CI 2026-09-20 23:08:45 +03:00
.dockerignore fix: CI 2026-09-20 23:08:45 +03:00
.gitignore fix: CI 2026-09-20 23:08:45 +03:00
.golangci.yml feat: Webhook и MQTT-триггеры, PostgreSQL, тесты и CI 2026-08-18 09:36:12 +03:00
.woodpecker.yml fix: CI 2026-09-20 23:12:11 +03:00
Dockerfile fix: CI 2026-09-20 23:08:45 +03:00
Dockerfile.ci fix: CI 2026-09-20 23:08:45 +03:00
example-config.yaml feat: кастомные токены (opaque), REST API, статические токены триггеров и каркас Angular WebUI 2026-09-19 21:50:28 +03:00
go.mod update: Обновление модулей Go 2026-09-19 18:08:07 +03:00
go.sum update: Обновление модулей Go 2026-09-19 18:08:07 +03:00
LICENSE first commit 2026-08-17 12:17:32 +03:00
README.md docs: фиксация дизайна WebUI + REST API + кастомных токенов (WEBUI_DESIGN.md) и Фаз 14-17 в ROADMAP 2026-09-19 19:07:57 +03:00

MCP Scheduler

MCP-сервер-планировщик: позволяет создавать триггеры (cron, webhook, MQTT), которые при срабатывании вызывают функции подключённых MCP-серверов.

Возможности

  • Триггеры: cron (5- или 6-полевые выражения), HTTP webhook, MQTT (wildcard-подписки).
  • Инструменты MCP: create_trigger, update_trigger, delete_trigger, list_triggers, get_trigger, toggle_trigger, get_trigger_status, list_mcp_servers, get_server_functions, list_trigger_runs, get_trigger_run, run_trigger.
  • История запусков: каждый срабатывание записывается в trigger_runs (статус, параметры, результат, ошибка, длительность) — LLM может отлаживать триггеры через list_trigger_runs / get_trigger_run. Ретенция настраивается (runs.keep, по умолчанию 10000).
  • Проверка параметров: create_trigger / update_trigger валидируют params против input_schema целевой функции (обязательные поля, enum) — ошибка возвращается сразу, а не через N минут в cron.
  • Тестовый запуск: run_trigger выполняет триггер немедленно и возвращает результат/run_id — удобно проверять параметры, не дожидаясь расписания.
  • Базы данных: SQLite (pure Go, без cgo, WAL-режим), PostgreSQL (GORM, авто-миграция). Пул соединений: SQLite — 1, PostgreSQL — до 10.
  • Подключения к MCP-серверам: stdio (subprocess) и httpstreamable (SSE) с опциональным JWT и переподключением.
  • Аутентификация: JWT (skip/reject режимы), user_id в контексте запросов.
  • Сборка: статический бинарник — CGO_ENABLED=0 go build ./cmd/mcp-scheduler.

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

go build ./cmd/mcp-scheduler
./mcp-scheduler --config example-config.yaml

По умолчанию сервер работает в stdio-режиме; для HTTP используйте mode: "httpstreamable" в конфиге.

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

Путь к файлу конфигурации задаётся через --config <path> или переменную окружения CONFIG_FILE (приоритет: CLI > env). Параметры можно переопределять через env MCP_SCHEDULER_* и CLI-флаги (см. --help).

./mcp-scheduler --config config.yaml
CONFIG_FILE=config.yaml ./mcp-scheduler

См. example-config.yaml — секции server, database, auth, mcp_servers, mqtt, logging, runs.

Тестирование

go test ./... -coverprofile=coverage.out
go tool cover -func=coverage.out
golangci-lint run ./...

Проект включает E2E-тесты (internal/e2e) с in-process MCP-сервером и встроенным MQTT-брокером, а также тесты всех внутренних пакетов. Покрытие ~75%.

Подробнее об архитектуре и планах — в docs/ARCHITECTURE.md, docs/WEBUI_DESIGN.md (дизайн web-интерфейса, REST API и кастомных токенов) и docs/ROADMAP.md.