Persiapan
Workflow MCP yang berfungsi yang dapat diekspresikan sebagai skrip — skrip harus menjalankan prompt MCP, menangkap output, dan mengirimkannya. Lihat cara mengirim laporan MCP Cryptohopper ke Telegram, Discord, atau email.
Kunci API MCP Cryptohopper yang disimpan sebagai variabel lingkungan atau rahasia. Jangan pernah mengkodekannya langsung di skrip — lihat praktik terbaik keamanan kunci API.
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)
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)
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)
Buat repositori GitHub untuk alur kerja terjadwal Anda
Tambahkan skrip Anda ke repo. Jangan menyimpan rahasia.
Tambahkan rahasia repositori
Buka Settings → Secrets and variables → Actions dan tambahkan:
CRYPTOHOPPER_MCP_KEY,TELEGRAM_BOT_TOKEN,TELEGRAM_CHAT_ID.
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.
