Lewati ke konten utama

Cara menjadwalkan alur kerja MCP Cryptohopper dengan cron, Task Scheduler, dan GitHub Actions

Belajar jadwalkan alur kerja MCP Cryptohopper pakai cron, Task Scheduler Windows, atau GitHub Actions. Ada panduan setup, tips env-var, & perbaikan umum.

Ditulis oleh Isaac

Persiapan


Pola Dasar

Ketiga sistem penjadwalan membungkus skrip yang sama. Strukturnya selalu: jalankan prompt MCP → tangkap output → kirimkan. Pastikan variabel lingkungan sudah diatur dan output ditangkap ke sebuah log.

# /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:
# Panggilan pustaka klien MCP Anda di sini — menghasilkan teks laporan.
...

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)

Setup — cron (macOS / Linux)

  1. Uji skrip secara manual terlebih dahulu

export CRYPTOHOPPER_MCP_KEY="..."
export TELEGRAM_BOT_TOKEN="..."
export TELEGRAM_CHAT_ID="..."
python3 /home/you/scripts/daily_digest.py

2. Edit crontab Anda

Jalankan crontab -e dan tambahkan entri di bawah ini. Cron tidak mewarisi lingkungan shell Anda — deklarasikan variabel di bagian atas crontab.

CRYPTOHOPPER_MCP_KEY=kunci_anda
TELEGRAM_BOT_TOKEN=token_anda
TELEGRAM_CHAT_ID=id_chat_anda
PATH=/usr/local/bin:/usr/bin:/bin

# Harian pukul 08:00 waktu setempat
0 8 * * * /usr/bin/python3 /home/you/scripts/daily_digest.py >> /home/you/logs/daily.log 2>&1

3. Verifikasi

Setelah waktu yang dijadwalkan, periksa log. Log kosong berarti cron tidak menjalankan skrip. Kesalahan di log berarti skrip berjalan tetapi gagal.

bashtail -50 /home/you/logs/daily.log

Setup — Task Scheduler (Windows)

  1. Uji skrip dari Powershell

$env:CRYPTOHOPPER_MCP_KEY = "..."
$env:TELEGRAM_BOT_TOKEN = "..."
$env:TELEGRAM_CHAT_ID = "..."
python C:\Users\you\scripts\daily_digest.py

2. Atur pemicu

Di bawah Triggers, konfigurasikan jadwal (harian pukul 08:00, mingguan, dll.).

3. Konfigurasikan tindakan

Di bawah Actions: Program/script → python (atau path lengkap ke python.exe). Tambahkan argumen → C:\Users\you\scripts\daily_digest.py. Mulai di → C:\Users\you\scripts.

4. Tangani variabel lingkungan
Dua opsi: atur sebagai variabel sistem-wide melalui Control Panel → System → Environment Variables, atau muat dari file .env menggunakan pustaka python-dotenv.

5. Verifikasi

Periksa Last Run Result tugas di Task Scheduler. 0x0 berarti sukses; apa pun selain itu adalah kesalahan.


Setup — GitHub Actions (dihosting di cloud)

  1. Buat repositori GitHub untuk alur kerja terjadwal Anda

    Tambahkan skrip Anda ke repo. Jangan menyimpan rahasia.

  2. Tambahkan rahasia repositori

    Buka Settings → Secrets and variables → Actions dan tambahkan: CRYPTOHOPPER_MCP_KEY, TELEGRAM_BOT_TOKEN, TELEGRAM_CHAT_ID.

  3. Buat file alur kerja

# .github/workflows/daily_digest.yml

name: Daily digest

on:
schedule:
- cron: "0 7 * * *" # Pukul 07:00 UTC setiap hari
workflow_dispatch: # memungkinkan pemicu manual

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

Penjadwalan GitHub Actions menggunakan UTC — konversi waktu lokal Anda sesuai kebutuhan. Pantau jalankan di tab Actions repo; GitHub akan mengirim email kepada Anda saat jadwal berjalan gagal.


Memilih Tempat untuk Menjadwalkan

Opsi

Terbaik untuk

Kelemahan

cron

Alur kerja lokal/pribadi di mesin yang selalu menyala

Mati saat laptop Anda tidur

Task Scheduler

Alur kerja pribadi di Windows

UI yang canggung, penanganan variabel lingkungan kikuk

GitHub Actions

Andal, dihosting di cloud, gratis untuk sebagian besar penggunaan pribadi

Jalankan dapat tertunda selama kepadatan GitHub

VPS + systemd/cron

Keandalan kelas produksi

Anda mengelola servernya

Untuk kebanyakan pengguna, GitHub Actions adalah pilihan default yang tepat: gratis, andal, dan log dapat ditemukan saat ada yang rusak.


Pemecahan Masalah

Cron job tidak aktif

Periksa grep CRON /var/log/syslog (Linux) atau log show --predicate 'process == "cron"' (macOS). Penyebab paling umum adalah PATH yang hilang atau variabel lingkungan yang hilang — cron berjalan di lingkungan minimal.

Cron berjalan tetapi skrip langsung error

Hampir selalu karena variabel lingkungan yang hilang. Biarkan skrip mencetak pesan kesalahan yang jelas dan keluar lebih awal jika variabel lingkungan yang diperlukan tidak ada — jangan biarkan skrip gagal tanpa suara di dalam panggilan MCP.

Tugas terjadwal berjalan pada waktu yang berbeda dari yang diharapkan

Zona waktu. Cron menggunakan zona waktu lokal mesin; GitHub Actions menggunakan UTC. Uji jadwal pada waktu yang dapat diprediksi sebelum mengatur irama yang sebenarnya.

File log kosong meskipun skrip aktif

Pengalihan tidak menangkap stderr. Gunakan >> log 2>&1 — panah ganda menambahkan; panah tunggal > akan menimpa setiap jalankan dan kehilangan output sebelumnya.

Jadwal GitHub Actions dilewati

GitHub membatasi alur kerja terjadwal selama beban tinggi dan sesekali melewati jalankan. Untuk alur kerja yang harus berjalan secara andal, gunakan mekanisme penjadwalan kedua sebagai cadangan atau bayar untuk runner khusus. Untuk sebagian besar alur kerja, melewati sesekali dapat ditoleransi.

Jalankan terjadwal menghabiskan kuota Anda lebih cepat dari yang diperkirakan

Setiap jalankan adalah biaya. Pantau penggunaan melalui cara memantau pengeluaran MCP Cryptohopper Anda. Pemeriksaan total mingguan dari endpoint penggunaan MCP dengan cepat menangkap jadwal yang tidak terkendali.

Anda menginginkan presisi penjadwalan sub-menit

Tidak ada penjadwal ini yang memberikan presisi sub-menit yang andal, dan Anda jarang benar-benar membutuhkannya. Jika Anda berpikir demikian, mundur — alur kerja kemungkinan lebih baik dirancang sebagai webhook yang digerakkan oleh peristiwa.


Apakah pertanyaan Anda terjawab?