Ön Koşullar
Çalışan bir MCP iş akışı, betik olarak ifade edilebilir — betik MCP komut istemini çalıştırmalı, çıktıyı yakalamalı ve teslim etmelidir. MCP raporlarını Telegram, Discord veya e-postaya nasıl göndereceğinizi görün.
Ortam değişkeni veya gizli anahtar olarak saklanan bir Cryptohopper MCP API anahtarı. Asla betikte sabit kodlamayın — API anahtarı güvenliği en iyi uygulamalarına bakın.
Temel Kalıp
Her üç zamanlama sistemi de aynı betiği sarar. Yapı her zaman şöyledir: MCP komut istemini çalıştır → çıktıyı yakala → teslim et. Ortam değişkenlerinin ayarlandığından ve çıktının bir günlük dosyasına kaydedildiğinden emin olun.
# /home/senin/betikler/gunluk_ozet.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 istemci kütüphanesi çağrınız burada — rapor metnini üreterek.
...
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/senin/komut_istemi/gunluk_ozet.txt").read()
report = run_mcp_workflow(prompt)
send_telegram(report)
Kurulum — cron (macOS / Linux)
Önce betiği manuel olarak test edin
export CRYPTOHOPPER_MCP_KEY="..."
export TELEGRAM_BOT_TOKEN="..."
export TELEGRAM_CHAT_ID="..."
python3 /home/senin/betikler/gunluk_ozet.py
2. Crontab'ınızı düzenleyin
Crontab -e komutunu çalıştırın ve aşağıdaki girdiyi ekleyin. Cron, kabuğunuzun ortamını miras almaz — crontab'ın en üstünde değişkenleri bildirin.
CRYPTOHOPPER_MCP_KEY=senin_anahtarin
TELEGRAM_BOT_TOKEN=senin_tokenin
TELEGRAM_CHAT_ID=senin_chat_id'in
PATH=/usr/local/bin:/usr/bin:/bin
# Yerel saatle her gün 08:00'de
0 8 * * * /usr/bin/python3 /home/senin/betikler/gunluk_ozet.py >> /home/senin/loglar/gunluk.log 2>&1
3. Doğrulayın
Zamanlanmış zamandan sonra günlüğü kontrol edin. Boş bir günlük, cron'un betiği çalıştırmadığı anlamına gelir. Günlükteki hatalar, çalıştığı ancak başarısız olduğu anlamına gelir.
bashtail -50 /home/senin/loglar/gunluk.log
Kurulum — Görev Zamanlayıcısı (Windows)
Powershell'den betiği test edin
$env:CRYPTOHOPPER_MCP_KEY = "..."
$env:TELEGRAM_BOT_TOKEN = "..."
$env:TELEGRAM_CHAT_ID = "..."
python C:\Users\senin\betikler\gunluk_ozet.py
2. Bir tetikleyici ayarlayın
Tetikleyiciler altında, zamanlamayı (günlük 08:00'de, haftalık vb.) yapılandırın.
3. Eylemi yapılandırın
Eylemler altında: Program/betik → python (veya python.exe'nin tam yolu). Argümanlar ekle → C:\Users\senin\betikler\gunluk_ozet.py. Başlatılacak dizin → C:\Users\senin\betikler.
4. Ortam değişkenlerini işleyin
İki seçenek: Denetim Masası → Sistem → Ortam Değişkenleri aracılığıyla sistem genelinde değişkenler olarak ayarlayın veya python-dotenv kütüphanesini kullanarak bunları bir .env dosyasından yükleyin.
5. Doğrulayın
Görev Zamanlayıcısı'ndaki görevin Son Çalıştırma Sonucu'nu kontrol edin. 0x0 başarı anlamına gelir; başka bir şey hata demektir.
Kurulum — GitHub Actions (bulutta barındırılan)
Zamanlanmış iş akışlarınız için bir GitHub deposu oluşturun
Betikinizi depoya ekleyin. Gizli anahtarları işlemeyin.
Depo gizli anahtarlarını ekleyin
Ayarlar → Gizli Anahtarlar ve değişkenler → Actions'a gidin ve şunları ekleyin:
CRYPTOHOPPER_MCP_KEY,TELEGRAM_BOT_TOKEN,TELEGRAM_CHAT_ID.
İş akışı dosyasını oluşturun
# .github/workflows/gunluk_ozet.yml
name: Gunluk ozet
on:
schedule:
- cron: "0 7 * * *" # Gunde 07:00 UTC
workflow_dispatch: # Manuel tetiklemeye izin verir
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: Ozet calistirma
env:
CRYPTOHOPPER_MCP_KEY: ${{ secrets.CRYPTOHOPPER_MCP_KEY }}
TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }}
TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }}
run: python betikler/gunluk_ozet.py
GitHub Actions zamanlamaları UTC kullanır — yerel saatinizi buna göre dönüştürün. Deponun Actions sekmesinde çalışmaları izleyin; zamanlanmış bir çalışma başarısız olduğunda GitHub size e-posta gönderir.
Nereye zamanlanacağını seçme
Secenek | En iyi | Dezavantaji |
cron | Her zaman açık olan bir makinede yerel/kişisel iş akışları | Dizüstü bilgisayarınız uyku moduna geçtiğinde kapanır |
Gorev Zamanlayicisi | Windows'ta kişisel iş akışları | Kullanışsız kullanıcı arayüzü, ortam değişkeni yönetimi garip |
GitHub Actions | Güvenilir, bulutta barındırılan, çoğu kişisel kullanım için ücretsiz | GitHub tıkanıklığı sırasında çalışmalar gecikebilir |
VPS + systemd/cron | Üretim sınıfı güvenilirlik | Sunucuyu siz yönetirsiniz |
Çoğu kullanıcı için, GitHub Actions doğru varsayılan seçimdir: ücretsiz, güvenilir ve bir şeyler bozulduğunda günlükler bulunabilir.
Sorun Giderme
Cron işi tetiklenmiyor
Önce grep CRON /var/log/syslog (Linux) veya log show --predicate 'process == "cron"' (macOS) komutunu kontrol edin. En yaygın neden, eksik bir PATH veya eksik ortam değişkenleridir — cron minimal bir ortamda çalışır.
Cron çalışıyor ancak betik hemen hata veriyor
Neredeyse her zaman eksik bir ortam değişkenidir. Gerekli bir ortam değişkeni yoksa açık bir hata yazdırın ve erken çıkın — MCP çağrısı içinde sessizce başarısız olmasına izin vermeyin.
Zamanlanmış görev beklenenden farklı bir zamanda çalışıyor
Saat dilimleri. Cron, makinenin yerel saat dilimini kullanır; GitHub Actions UTC kullanır. Gerçek ritmi ayarlamadan önce zamanlamayı öngörülebilir bir zamanda test edin.
Günlük dosyası, betik tetiklense bile boş
Yönlendirme stderr'ı yakalamıyor. >> log 2>&1 kullanın — çift ok ekler; tek > her çalıştırmayı üzerine yazar ve önceki çıktıyı kaybetmenize neden olur.
GitHub Actions zamanlaması atlanıyor
GitHub yüksek yük sırasında zamanlanmış iş akışlarını sınırlar ve ara sıra çalışmaları atlar. Güvenilir bir şekilde tetiklenmesi gereken iş akışları için yedek olarak ikinci bir zamanlama mekanizması kullanın veya özel bir çalıştırıcı için ödeme yapın. Çoğu iş akışı için ara sıra atlamalar tolere edilebilir.
Zamanlanmış çalışmalar kotanızı beklenenden daha hızlı tüketiyor
Her çalıştırma bir maliyettir. MCP harcamalarınızı nasıl izleyeceğiniz aracılığıyla kullanımı izleyin. MCP kullanım uç noktasından haftalık bir toplu kontrol, hızla kontrolden çıkan zamanlamaları yakalar.
Dakika altı zamanlama hassasiyeti istiyorsunuz
Bu zamanlayıcıların hiçbiri dakikanın altındaki güvenilir hassasiyet sağlamaz ve buna nadiren gerçekten ihtiyacınız olur. Eğer öyle düşündüğünüze inanıyorsanız, geri adım atın — iş akışı muhtemelen bir olay güdümlü webhook olarak daha iyi tasarlanmıştır.
