前提条件
MCPワークフローがスクリプトとして表現されたもの — スクリプトはMCPプロンプトを実行し、出力をキャプチャし、配信する必要があります。MCPレポートをTelegram、Discord、またはメールに送信する方法を参照してください。
環境変数またはシークレットとして保存されたCryptohopper MCP APIキー。スクリプトにハードコーディングしないでください — APIキーのセキュリティに関するベストプラクティスを参照してください。
基本パターン
3つのスケジューリングシステムすべてが同じスクリプトをラップします。構造は常に: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
# ローカル時間の午前8時に毎日
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. トリガーを設定する
トリガーの下で、スケジュール(毎日午前8時、毎週など)を設定します。
3. アクションを設定する
アクションの下:プログラム/スクリプト → python(またはpython.exeのフルパス)。引数を追加 → C:\Users\you\scripts\daily_digest.py。開始場所 → C:\Users\you\scripts。
4. 環境変数を処理する
2つのオプション:コントロールパネル → システム → 環境変数からシステム全体で設定するか、python-dotenvライブラリを使用して.envファイルからロードします。
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 * * *" # UTC午前7時、毎日
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 | 常にオンになっているマシンでのローカル/個人ワークフロー | ラップトップがスリープすると無効になる |
タスクスケジューラ | Windowsでの個人ワークフロー | 使いにくいUI、環境変数処理が面倒 |
GitHub Actions | 信頼性が高く、クラウドホスト、ほとんどの個人利用は無料 | GitHubの混雑時には実行が遅れることがある |
VPS + systemd/cron | 本番レベルの信頼性 | サーバーを自分で管理する必要がある |
ほとんどのユーザーにとって、GitHub Actionsが適切なデフォルトです:無料、信頼性が高く、問題が発生したときのログが確認できます。
トラブルシューティング
cronジョブが実行されない
`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は高負荷時にスケジュールされたワークフローをスロットルし、時折実行をスキップします。確実に実行する必要があるワークフローの場合は、バックアップとして2番目のスケジューリングメカニズムを使用するか、専用ランナーの料金を支払ってください。ほとんどのワークフローでは、時折のスキップは許容範囲内です。
スケジュールされた実行が予想よりも早くクォータを消費している
すべての実行にはコストがかかります。Cryptohopper MCPの支出を監視する方法で、使用状況を監視してください。MCP使用量エンドポイントからの週次合計チェックは、暴走したスケジュールを迅速に検出します。
1分未満のスケジューリング精度が必要である
これらのスケジューラはいずれも信頼性の高い1分未満の精度を提供しておらず、実際にはめったに必要ありません。必要だと考える場合は、一歩戻って、ワークフローはイベント駆動型Webhookとして設計する方が良いでしょう。
