Ir al contenido principal

Cómo programar flujos de trabajo de MCP de Cryptohopper con cron, el Programador de tareas y GitHub Actions

Aprende a programar flujos de trabajo MCP de Cryptohopper con cron, Programador de Tareas de Windows o GitHub Actions.

Escrito por Isaac

Requisitos previos


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)

  1. 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)

  1. 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)

  1. Crea un repositorio de GitHub para tus flujos de trabajo programados

    Añade tu script al repositorio. No confirmes secretos.

  2. 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.

  3. 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.


¿Ha quedado contestada tu pregunta?