사전 요구 사항
스크립트로 표현 가능한 작동하는 MCP 워크플로 — 스크립트는 MCP 프롬프트를 실행하고, 출력을 캡처하고, 전달해야 합니다. MCP 보고서를 Telegram, Discord 또는 이메일로 보내는 방법을 참조하세요.
환경 변수 또는 비밀로 저장된 Cryptohopper MCP API 키. 스크립트에 직접 입력하지 마세요 — 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. 트리거 설정
트리거에서 일별 08:00, 주별 등 스케줄을 구성하세요.
3. 작업 구성
작업: 프로그램/스크립트 → python (또는 python.exe의 전체 경로). 인수 추가 → C:\Users\you\scripts\daily_digest.py. 시작 위치 → C:\Users\you\scripts.
4. 환경 변수 처리
두 가지 옵션: 제어판 → 시스템 → 환경 변수를 통해 전역 변수로 설정하거나 python-dotenv 라이브러리를 사용하여 .env 파일에서 로드합니다.
5. 확인
작업 스케줄러에서 작업의 마지막 실행 결과(Last Run Result)를 확인하세요. 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 * * *" # 매일 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 | 항상 켜져 있는 기기에서 로컬/개인 워크플로 | 노트북이 절전 모드로 전환되면 중지됨 |
작업 스케줄러 | Windows의 개인 워크플로 | UI가 번거롭고, env-var 처리가 까다로움 |
GitHub Actions | 신뢰할 수 있고, 클라우드 호스팅되며, 대부분 개인에게 무료 | GitHub 혼잡 시 실행이 지연될 수 있음 |
VPS + systemd/cron | 프로덕션 등급의 안정성 | 서버를 직접 관리해야 함 |
대부분의 사용자에게 GitHub Actions가 적합한 기본 선택입니다: 무료, 안정적이고, 문제가 발생했을 때 로그를 검색하기 쉽습니다.
문제 해결
Cron 작업이 실행되지 않음
grep CRON /var/log/syslog (Linux) 또는 log show --predicate 'process == "cron"' (macOS)를 확인하세요. 가장 흔한 원인은 PATH 또는 env 변수 누락입니다 — cron은 최소한의 환경에서 실행됩니다.
Cron은 실행되지만 스크립트가 즉시 오류 발생
거의 항상 환경 변수 누락 때문입니다. 스크립트가 필수 env 변수가 없을 경우 명확한 오류 메시지를 출력하고 조기에 종료되도록 하세요 — MCP 호출 내부에서 오류가 조용히 실패하게 하지 마세요.
예약된 작업이 예상과 다른 시간에 실행됨
시간대. Cron은 기기의 로컬 시간대를 사용하고, GitHub Actions는 UTC를 사용합니다. 실제 빈도를 설정하기 전에 예측 가능한 시간에 스케줄을 테스트하세요.
스크립트가 실행되는데도 로그 파일이 비어 있음
리디렉션이 stderr를 캡처하지 못했습니다. >> log 2>&1을 사용하세요 — 이중 화살표는 추가하고, 단일 >는 각 실행을 덮어쓰고 이전 출력을 잃게 됩니다.
GitHub Actions 스케줄이 건너뛰어지고 있습니다
GitHub는 트래픽이 많을 때 예약된 워크플로의 속도를 제한하고 때때로 실행을 건너뜁니다. 안정적으로 실행되어야 하는 워크플로의 경우, 백업으로 두 번째 예약 메커니즘을 사용하거나 전용 러너를 유료로 사용하세요. 대부분의 워크플로에서는 가끔 건너뛰는 것은 허용 가능합니다.
예약된 실행이 예상보다 더 빠르게 할당량을 소모함
모든 실행에는 비용이 발생합니다. how to monitor your Cryptohopper MCP spend를 통해 사용량을 모니터링하세요. MCP 사용량 엔드포인트에서 주간 합계 확인은 문제가 되는 일정을 빠르게 식별합니다.
분 단위 미만의 예약 정확도가 필요함
이러한 스케줄러 중 어느 것도 신뢰할 수 있는 분 단위 미만의 정확도를 제공하지 않으며, 실제로 거의 필요하지 않습니다. 만약 필요하다고 생각한다면, 한 발 물러서세요 — 워크플로는 이벤트 기반 웹훅으로 설계하는 것이 더 나을 수 있습니다.
