Requisitos previos
Un flujo de trabajo de MCP funcional que se pueda expresar como un script: el script debe ejecutar el prompt de MCP, capturar la salida y entregarla. Consulta cómo enviar informes de MCP de Cryptohopper a Telegram, Discord o correo electrónico.
Una clave API de MCP de Cryptohopper almacenada como variable de entorno o secreto. Nunca la codifiques directamente en el script; consulta las mejores prácticas de seguridad de claves API.
El patrón base
Los tres sistemas de programación envuelven el mismo script. La estructura es siempre: ejecutar el prompt de MCP → capturar la salida → entregarla. Asegúrate de que las variables de entorno estén configuradas y que la salida se capture en un registro (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:
# Llamada a tu biblioteca cliente de MCP aquí — produciendo el texto del informe.
...
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)
Configuración — cron (macOS / Linux)
Prueba el script manualmente primero
export CRYPTOHOPPER_MCP_KEY="..."
export TELEGRAM_BOT_TOKEN="..."
export TELEGRAM_CHAT_ID="..."
python3 /home/you/scripts/daily_digest.py
2. Edita tu crontab
Ejecuta crontab -e y añade la siguiente entrada. Cron no hereda el entorno de tu shell; declara las variables al principio del crontab.
CRYPTOHOPPER_MCP_KEY=tu_clave
TELEGRAM_BOT_TOKEN=tu_token
TELEGRAM_CHAT_ID=tu_chat_id
PATH=/usr/local/bin:/usr/bin:/bin
# Diariamente a las 08:00 hora local
0 8 * * * /usr/bin/python3 /home/you/scripts/daily_digest.py >> /home/you/logs/daily.log 2>&1
3. Verifica
Después de la hora programada, revisa el log. Un log vacío significa que cron no ejecutó el script. Los errores en el log significan que se ejecutó, pero falló.
bashtail -50 /home/you/logs/daily.log
Configuración — Programador de tareas (Windows)
Prueba el script desde Powershell
$env:CRYPTOHOPPER_MCP_KEY = "..."
$env:TELEGRAM_BOT_TOKEN = "..."
$env:TELEGRAM_CHAT_ID = "..."
python C:\Users\you\scripts\daily_digest.py
2. Establece un desencadenador
En Desencadenadores, configura la programación (diaria a las 08:00, semanal, etc.).
3. Configura la acción
En Acciones: Programa o script → python (o la ruta completa a python.exe). Añadir argumentos → C:\Users\you\scripts\daily_digest.py. Iniciar en → C:\Users\you\scripts.
4. Gestiona las variables de entorno
Dos opciones: establécelas como variables globales del sistema a través de Panel de control → Sistema → Variables de entorno, o cárgalas desde un archivo .env utilizando la biblioteca python-dotenv.
5. Verifica
Comprueba el Resultado de la última ejecución de la tarea en el Programador de tareas. 0x0 significa éxito; cualquier otra cosa es un error.
Configuración — Acciones de GitHub (alojado en la nube)
Crea un repositorio de GitHub para tus flujos de trabajo programados
Añade tu script al repositorio. No confirmes secretos.
Añade secretos del repositorio
Ve a Configuración → Secretos y variables → Acciones y añade:
CRYPTOHOPPER_MCP_KEY,TELEGRAM_BOT_TOKEN,TELEGRAM_CHAT_ID.
Crea el archivo de flujo de trabajo
# .github/workflows/daily_digest.yml
name: Resumen diario
on:
schedule:
- cron: "0 7 * * *" # 07:00 UTC diario
workflow_dispatch: # permite el desencadenador 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: Ejecutar resumen
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
La programación de Acciones de GitHub usa UTC; convierte tu hora local en consecuencia. Monitoriza las ejecuciones en la pestaña Acciones del repositorio; GitHub te enviará un correo electrónico cuando una ejecución programada falle.
Elegir dónde programar
Opción | Mejor para | Desventaja |
cron | Flujos de trabajo locales/personales en una máquina siempre encendida | Se detiene cuando tu portátil entra en suspensión |
Programador de tareas | Flujos de trabajo personales en Windows | Interfaz de usuario tosca, gestión de variables de entorno complicada |
Acciones de GitHub | Fiable, alojado en la nube, gratuito para la mayoría de usos personales | Las ejecuciones pueden retrasarse durante la congestión de GitHub |
VPS + systemd/cron | Fiabilidad de grado de producción | Tú gestionas el servidor |
Para la mayoría de los usuarios, Acciones de GitHub es la opción predeterminada correcta: gratuita, fiable y los registros son recuperables cuando algo falla.
Resolución de problemas
El trabajo de Cron no se dispara
Comprueba grep CRON /var/log/syslog (Linux) o log show --predicate 'process == "cron"' (macOS). La causa más común es un PATH faltante o variables de entorno faltantes — cron se ejecuta en un entorno mínimo.
Cron se ejecuta, pero el script falla inmediatamente
Casi siempre una variable de entorno faltante. Haz que el script imprima un error claro y salga temprano si falta una variable de entorno requerida; no dejes que falle silenciosamente dentro de la llamada MCP.
La tarea programada se ejecuta a una hora diferente a la esperada
Zonas horarias. Cron usa la zona horaria local de la máquina; Acciones de GitHub usa UTC. Prueba la programación a una hora predecible antes de establecer el ritmo real.
El archivo de registro está vacío aunque el script se ejecuta
La redirección no está capturando stderr. Usa >> log 2>&1 — la doble flecha añade; una sola > sobrescribe cada ejecución y se pierden las salidas anteriores.
Se saltan las ejecuciones programadas de Acciones de GitHub
GitHub limita los flujos de trabajo programados durante cargas altas y ocasionalmente salta ejecuciones. Para flujos de trabajo que deben ejecutarse de forma fiable, usa un segundo mecanismo de programación como copia de seguridad o paga por un ejecutor dedicado. Para la mayoría de los flujos de trabajo, los saltos ocasionales son tolerables.
Las ejecuciones programadas consumen tu cuota más rápido de lo esperado
Cada ejecución tiene un coste. Monitoriza el uso a través de cómo monitorizar tu gasto de MCP de Cryptohopper. Una comprobación de suma semanal desde el endpoint de uso de MCP detecta rápidamente los programas descontrolados.
Quieres precisión de programación sub-minuto
Ninguno de estos programadores proporciona una precisión sub-minuto fiable, y rara vez lo necesitas realmente. Si crees que sí, da un paso atrás; el flujo de trabajo probablemente se diseñaría mejor como una webhook basada en eventos.
