- Go 76.4%
- TypeScript 17.1%
- HTML 4.2%
- CSS 1%
- SCSS 0.8%
- Other 0.5%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
|
||
| cmd/mcp-scheduler | ||
| docs | ||
| internal | ||
| .dockerignore | ||
| .gitignore | ||
| .golangci.yml | ||
| .woodpecker.yml | ||
| Dockerfile | ||
| Dockerfile.ci | ||
| example-config.yaml | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| README.md | ||
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.