Передумови
Працюючий робочий процес MCP, виражений у вигляді скрипта. Скрипт повинен запускати запит MCP, захоплювати вивід і доставляти його. Див.: як надсилати звіти MCP Cryptohopper до Telegram, Discord чи електронної пошти.
API-ключ Cryptohopper MCP, збережений як змінна оточення або секрет. Ніколи не закодовуйте його безпосередньо в скрипті. Див: кращі практики безпеки 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. Налаштуй триґер
У розділі Triggers налаштуй розклад (щодня о 08:00, щотижня тощо).
3. Налаштуй дію
У розділі Actions: Program/script → python (або повний шлях до python.exe). Add arguments → C:\Users\you\scripts\daily_digest.py. Start in → C:\Users\you\scripts.
4. Обробка змінних оточення
Два варіанти: встановити їх як загальносистемні змінні через Control Panel → System → Environment Variables, або завантажити їх з файлу .env за допомогою бібліотеки python-dotenv.
5. Перевір
Перевір Last Run Result завдання у планувальнику завдань. 0x0 означає успіх; будь-що інше — це помилка.
Налаштування — GitHub Actions (хмарний хостинг)
Створи репозиторій GitHub для своїх запланованих робочих процесів
Додай свій скрипт до репо. Не коміть секрети.
Додай секрети репозиторію
Перейди до Settings → Secrets and variables → 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 надішле тобі листа, коли запланований запуск завершиться з помилкою.
Вибір місця для планування
Варіант | Найкраще для | Недолік |
cron | Локальні/особисті робочі процеси на машині, яка завжди увімкнена | Зупиняється, коли твій ноутбук засинає |
Task Scheduler | Особисті робочі процеси на 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 обмежує заплановані робочі процеси під час високого навантаження та іноді пропускає запуски. Щоб робочі процеси спрацьовували надійно, використовуй другий механізм планування як резервний або плати за виділений runner. Для більшості робочих процесів випадкові пропуски є прийнятними.
Заплановані запуски споживають твою квоту швидше, ніж очікувалося
Кожен запуск — це витрати. Відстежуй використання через як відстежувати витрати на Cryptohopper MCP. Щотижнева перевірка суми з кінцевої точки використання MCP швидко виявить неконтрольовані розклади.
Тобі потрібна точність планування менше хвилини
Жоден з цих планувальників не забезпечує надійної точності менше хвилини, і вона тобі рідко дійсно потрібна. Якщо ти думаєш, що вона тобі потрібна, відступи — робочий процес, ймовірно, краще розробити як подію, керовану веб-хуком.
