Hangfire MCP

Servidor MCP para gestionar trabajos en segundo plano de Hangfire

Documentación

Hangfire MCP Server

License: MIT Python 3.11+ PyPI

Un servidor de Model Context Protocol (MCP) para gestionar trabajos en segundo plano de Hangfire directamente desde VS Code Copilot y otros clientes compatibles con MCP. Supervisa colas de trabajos, reintenta trabajos fallidos, gestiona tareas recurrentes y visualiza estadísticas en tiempo real, todo sin salir de tu editor.

Características

  • Gestión de trabajos: Listar, ver, reintentar, eliminar y reencolar trabajos
  • Trabajos recurrentes: Listar, ver, activar, pausar y reanudar trabajos recurrentes
  • Estadísticas: Ver estadísticas del servidor, colas y servidores activos
  • Descubrimiento automático: Encuentra automáticamente cadenas de conexión desde appsettings.json
  • Panel web: Interfaz web integrada con estadísticas en tiempo real y gestión de trabajos

Inicio rápido (Configuración con un clic)

# Clone the repo
git clone https://github.com/inansen/hangfire-mcp.git
cd hangfire-mcp

# Run cross-platform setup (Windows, macOS, Linux)
python setup.py

El script de configuración hará lo siguiente:

  1. Crear un entorno virtual
  2. Instalar todas las dependencias (incluido el panel)
  3. Solicitar tu cadena de conexión de SQL Server (o leerla desde .vscode/mcp.json)
  4. Crear la configuración de MCP de VS Code
  5. Probar la conexión
  6. Opcionalmente, iniciar el panel

Instalación

pip install hangfire-mcp

O con uvx:

uvx hangfire-mcp

Configuración

VS Code (Configuración global)

Añade a tu configuración de VS Code (settings.json):

{
  "mcp": {
    "servers": {
      "hangfire-mcp": {
        "command": "uvx",
        "args": ["hangfire-mcp", "--workspace", "${workspaceFolder}"]
      }
    }
  }
}

VS Code (Por proyecto)

Crea .vscode/mcp.json en tu proyecto:

{
  "servers": {
    "hangfire-mcp": {
      "command": "uvx",
      "args": ["hangfire-mcp", "--workspace", "${workspaceFolder}"]
    }
  }
}

Con cadena de conexión explícita

Usa cadenas de conexión de estilo ODBC:

{
  "servers": {
    "hangfire-mcp": {
      "command": "python",
      "args": ["-m", "hangfire_mcp", "--workspace", "${workspaceFolder}"],
      "env": {
        "HANGFIRE_CONNECTION_STRING": "Driver={ODBC Driver 17 for SQL Server};Server=localhost;Database=Hangfire;UID=sa;PWD=yourpassword;Encrypt=no;"
      }
    }
  }
}

Nota: Este proyecto usa pyodbc y requiere cadenas de conexión en formato ODBC, no en formato ADO.NET.

Descubrimiento de cadena de conexión

El servidor encuentra cadenas de conexión en este orden de prioridad:

  1. Argumento CLI --connection-string
  2. Variable de entorno HANGFIRE_CONNECTION_STRING
  3. Descubrimiento automático desde ${workspaceFolder}/**/appsettings*.json
  4. Configuración de usuario en ~/.config/hangfire-mcp/connections.json (Linux/macOS) o %APPDATA%\hangfire-mcp\connections.json (Windows)
  5. Usa la herramienta configure para configurarla manualmente

Herramientas disponibles

Herramientas de trabajos

ToolDescription
list_jobsListar trabajos por estado (Enqueued, Processing, Succeeded, Failed, etc.)
get_jobObtener información detallada del trabajo, incluidos argumentos y detalles de excepciones
get_job_historyObtener el historial de estados de un trabajo
retry_jobReintentar un trabajo fallido
delete_jobEliminar un trabajo
requeue_jobVolver a poner un trabajo en la cola

Herramientas de trabajos recurrentes

ToolDescription
list_recurring_jobsListar todos los trabajos recurrentes con horarios cron
get_recurring_jobObtener detalles de trabajos recurrentes
trigger_recurring_jobEjecutar un trabajo recurrente inmediatamente
pause_recurring_jobPausar ejecuciones programadas
resume_recurring_jobReanudar un trabajo pausado

Herramientas de estadísticas

ToolDescription
get_statsEstadísticas del servidor (conteos de exitosos, fallidos, en procesamiento)
list_queuesListar colas con conteos de trabajos pendientes
list_serversListar servidores Hangfire activos

Herramienta de configuración

ToolDescription
configureEstablecer cadena de conexión para el espacio de trabajo actual

Ejemplos de uso

En VS Code Copilot Chat:

User: Show me failed jobs
Agent: [calls list_jobs(state="Failed")]
      Found 3 failed jobs:
      | ID | State | Job Type | Created | Reason |
      |----|-------|----------|---------|--------|
      | 123 | Failed | OrderSyncJob.Execute | 2026-03-17 10:30 | Connection timeout |
      | 124 | Failed | EmailJob.Send | 2026-03-17 10:45 | SMTP error |

User: Retry job 123
Agent: [calls retry_job(job_id=123)]
      Job 123 has been requeued to 'default' queue.

User: When did CacheRefreshJob last run?
Agent: [calls get_recurring_job(job_id="CacheRefreshJob")]
      Recurring Job: CacheRefreshJob
      - Cron: 0 */5 * * * (every 5 minutes)
      - Last Run: 2026-03-17 12:55:00
      - Queue: default

User: Trigger CacheRefreshJob now
Agent: [calls trigger_recurring_job(job_id="CacheRefreshJob")]
      CacheRefreshJob has been triggered. New job ID: 456

Panel web

El paquete incluye un panel web integrado para la gestión visual de trabajos.

Instalación

pip install hangfire-mcp[dashboard]

Ejecutar el panel

# Windows
.\scripts\run-dashboard.ps1

# macOS / Linux
chmod +x scripts/run-dashboard.sh
./scripts/run-dashboard.sh

# Or manually (any platform)
export HANGFIRE_CONNECTION_STRING="Driver={ODBC Driver 17 for SQL Server};Server=localhost;Database=Hangfire;..."
python -m uvicorn hangfire_mcp.dashboard:app --host 127.0.0.1 --port 8080

Abre http://127.0.0.1:8080 en tu navegador.

Características del panel

  • Estadísticas en tiempo real: Conteos de Succeeded, Failed, Processing, Enqueued, Scheduled
  • Lista de trabajos: Ver todos los trabajos con filtrado por estado
  • Acciones de trabajo: Reintentar, eliminar, ver detalles con un clic
  • Trabajos recurrentes: Pausar, reanudar, activar trabajos recurrentes
  • Estado del servidor: Estado en línea/inactivo/fuera de línea según el latido
  • Actualización automática: Se actualiza cada 10 segundos

Requisitos

  • Python 3.11+
  • SQL Server con base de datos Hangfire
  • Controlador ODBC 17 para SQL Server (o compatible)

Desarrollo

# Clone the repository
git clone https://github.com/inansen/hangfire-mcp.git
cd hangfire-mcp

# Install all dependencies
pip install -e ".[dev]"

# Run tests
pytest

Contribuciones

  1. Haz un fork del repositorio
  2. Crea una rama de características (git checkout -b feature/my-feature)
  3. Haz commit de tus cambios (git commit -am 'Add my feature')
  4. Haz push a la rama (git push origin feature/my-feature)
  5. Abre una solicitud de extracción

Licencia

MIT