Что нужно знать заранее
Рабочий MCP-воркфлоу, выраженный в виде скрипта — скрипт должен запускать MCP-промпт, захватывать вывод и доставлять его. Подробнее: как отправлять MCP-отчеты в Telegram, Discord или на email.
MCP API-ключ Cryptohopper, сохраненный как переменная окружения или секрет. Никогда не встраивайте его напрямую в скрипт — см. лучшие практики безопасности API-ключей.
Базовая схема
Все три системы планирования оборачивают один и тот же скрипт. Структура всегда одинакова: запуск MCP-промпта → захват вывода → его доставка. Убедитесь, что переменные окружения установлены, а вывод попадает в лог.
# /home/you/scripts/daily_digest.py
import os
import requests
API_KEY = os.environ["CRYPTOHOPPER_MCP_KEY"]
TELEGRAM_TOKEN = os.environ["TELEGRAM_BOT_TOKEN"]
TELEGRAM_CHAT_ID = os.environ["TELEGRAM_CHAT_ID"]
def run_mcp_workflow(prompt: str) -> str:
# Ваш вызов библиотеки клиента MCP здесь — генерация текста отчета.
...
def send_telegram(text: str) -> None:
requests.post(
f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage",
json={"chat_id": TELEGRAM_CHAT_ID, "text": text, "parse_mode": "Markdown"},
).raise_for_status()
if __name__ == "__main__":
prompt = open("/home/you/prompts/daily_digest.txt").read()
report = run_mcp_workflow(prompt)
send_telegram(report)
Настройка — cron (macOS / Linux)
Сначала протестируйте скрипт вручную
export CRYPTOHOPPER_MCP_KEY="..."
export TELEGRAM_BOT_TOKEN="..."
export TELEGRAM_CHAT_ID="..."
python3 /home/you/scripts/daily_digest.py
2. Отредактируйте свой crontab
Выполните команду crontab -e и добавьте запись ниже. Cron не наследует переменные окружения вашей оболочки — объявляйте их в начале crontab.
CRYPTOHOPPER_MCP_KEY=your_key
TELEGRAM_BOT_TOKEN=your_token
TELEGRAM_CHAT_ID=your_chat_id
PATH=/usr/local/bin:/usr/bin:/bin
# Ежедневно в 08:00 по местному времени
0 8 * * * /usr/bin/python3 /home/you/scripts/daily_digest.py >> /home/you/logs/daily.log 2>&1
3. Проверьте
После запланированного времени проверьте лог. Пустой лог означает, что cron не запустил скрипт. Ошибки в логе означают, что он запустился, но завершился с ошибкой.
bashtail -50 /home/you/logs/daily.log
Настройка — Планировщик заданий (Windows)
Протестируйте скрипт из Powershell
$env:CRYPTOHOPPER_MCP_KEY = "..."
$env:TELEGRAM_BOT_TOKEN = "..."
$env:TELEGRAM_CHAT_ID = "..."
python C:\Users\you\scripts\daily_digest.py
2. Настройте триггер
В разделе «Триггеры» настройте расписание (ежедневно в 08:00, еженедельно и т.д.).
3. Настройте действие
В разделе «Действия»: Программа/скрипт → python (или полный путь к python.exe). Добавить аргументы → C:\Users\you\scripts\daily_digest.py. Рабочая папка → C:\Users\you\scripts.
4. Работа с переменными окружения
Два варианта: установить их как системные переменные через Панель управления → Система → Переменные среды, либо загрузить из файла .env с помощью библиотеки python-dotenv.
5. Проверьте
Проверьте поле «Результат последнего выполнения» для задачи в Планировщике заданий. 0x0 означает успех; все остальное — ошибка.
Настройка — GitHub Actions (облачный хостинг)
Создайте репозиторий GitHub для ваших запланированных воркфлоу
Добавьте ваш скрипт в репо. Не коммитите секреты.
Добавьте секреты репозитория
Перейдите в «Настройки» → «Секреты и переменные» → «Actions» и добавьте:
CRYPTOHOPPER_MCP_KEY,TELEGRAM_BOT_TOKEN,TELEGRAM_CHAT_ID.
Создайте файл воркфлоу
# .github/workflows/daily_digest.yml
name: Daily digest
on:
schedule:
- cron: "0 7 * * *" # 07:00 UTC ежедневно
workflow_dispatch: # позволяет ручной запуск
jobs:
run:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- run: pip install -r requirements.txt
- name: Run digest
env:
CRYPTOHOPPER_MCP_KEY: ${{ secrets.CRYPTOHOPPER_MCP_KEY }}
TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }}
TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }}
run: python scripts/daily_digest.py
Планировщики GitHub Actions используют UTC — соответственно конвертируйте ваше местное время. Отслеживайте запуски на вкладке «Actions» репозитория; GitHub присылает уведомление по email при сбое запланированного запуска.
Выбор места для планирования
Вариант | Лучше всего для | Недостаток |
cron | Локальные/персональные воркфлоу на постоянно включенной машине | Отключается, когда ваш ноутбук засыпает |
Планировщик заданий | Персональные воркфлоу на Windows | Неудобный интерфейс, корявая работа с переменными окружения |
GitHub Actions | Надежность, облачный хостинг, бесплатно для большинства личного использования | Запуски могут задерживаться при высокой нагрузке на GitHub |
VPS + systemd/cron | Надежность уровня продакшена | Вы управляете сервером |
Для большинства пользователей GitHub Actions — отличный выбор по умолчанию: бесплатно, надежно, логи легко найти, если что-то сломается.
Устранение неполадок
Cron job не запускается
Проверьте grep CRON /var/log/syslog (Linux) или log show --predicate 'process == "cron"' (macOS). Самая частая причина — отсутствие PATH или переменных окружения — cron запускается в минимальном окружении.
Cron запускается, но скрипт сразу выдает ошибку
Почти всегда отсутствует переменная окружения. Сделайте так, чтобы скрипт выводил понятную ошибку и завершался раньше, если отсутствует необходимая переменная окружения — не дайте ему тихо упасть внутри вызова MCP.
Запланированное задание запускается в другое время, чем ожидалось
Часовые пояса. Cron использует локальный часовой пояс машины; GitHub Actions использует UTC. Протестируйте расписание в предсказуемое время, прежде чем устанавливать реальную частоту.
Файл лога пуст, хотя скрипт запускается
Перенаправление не захватывает stderr. Используйте >> log 2>&1 — двойная стрелка добавляет; одинарная > перезаписывает каждый запуск и теряет предыдущий вывод.
Расписание GitHub Actions пропускается
GitHub ограничивает запланированные воркфлоу при высокой нагрузке и иногда пропускает запуски. Для воркфлоу, которые должны выполняться надежно, используйте второй механизм планирования в качестве резерва или оплатите выделенный раннер. Для большинства воркфлоу редкие пропуски допустимы.
Запланированные запуски съедают вашу квоту быстрее, чем ожидалось
Каждый запуск — это стоимость. Отслеживайте использование через руководство по мониторингу затрат на Cryptohopper MCP. Еженедельная проверка суммы через endpoint использования MCP быстро выявит вышедшие из-под контроля расписания.
Вам нужна точность планирования до секунды
Ни один из этих планировщиков не обеспечивает надежной точности до секунды, и вам редко это действительно нужно. Если вы думаете, что это так, сделайте шаг назад — воркфлоу, скорее всего, лучше спроектировать как событийно-ориентированный вебхук.
