- Go 99.6%
- Dockerfile 0.4%
|
All checks were successful
ci/woodpecker/tag/woodpecker Pipeline was successful
- update_trigger теперь поддерживает params (раньше поле молча отбрасывалось) - create_trigger/update_trigger валидируют params против input_schema функции (required, enum) — мягко, если сервер недоступен; понятная ошибка сразу - новый инструмент run_trigger — мгновенный тестовый запуск триггера - тесты: валидация, update params, run_trigger, счётчик инструментов 11->12 - документация: README, ARCHITECTURE, ROADMAP |
||
|---|---|---|
| cmd/mcp-scheduler | ||
| docs | ||
| internal | ||
| .gitignore | ||
| .golangci.yml | ||
| .woodpecker.yml | ||
| Dockerfile | ||
| 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/ROADMAP.md.