Hangfire MCP
Servidor MCP para gestionar trabajos en segundo plano de Hangfire
Documentación
Hangfire MCP Server
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:
- Crear un entorno virtual
- Instalar todas las dependencias (incluido el panel)
- Solicitar tu cadena de conexión de SQL Server (o leerla desde
.vscode/mcp.json) - Crear la configuración de MCP de VS Code
- Probar la conexión
- 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
pyodbcy 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:
- Argumento CLI
--connection-string - Variable de entorno
HANGFIRE_CONNECTION_STRING - Descubrimiento automático desde
${workspaceFolder}/**/appsettings*.json - Configuración de usuario en
~/.config/hangfire-mcp/connections.json(Linux/macOS) o%APPDATA%\hangfire-mcp\connections.json(Windows) - Usa la herramienta
configurepara configurarla manualmente
Herramientas disponibles
Herramientas de trabajos
| Tool | Description |
|---|---|
list_jobs | Listar trabajos por estado (Enqueued, Processing, Succeeded, Failed, etc.) |
get_job | Obtener información detallada del trabajo, incluidos argumentos y detalles de excepciones |
get_job_history | Obtener el historial de estados de un trabajo |
retry_job | Reintentar un trabajo fallido |
delete_job | Eliminar un trabajo |
requeue_job | Volver a poner un trabajo en la cola |
Herramientas de trabajos recurrentes
| Tool | Description |
|---|---|
list_recurring_jobs | Listar todos los trabajos recurrentes con horarios cron |
get_recurring_job | Obtener detalles de trabajos recurrentes |
trigger_recurring_job | Ejecutar un trabajo recurrente inmediatamente |
pause_recurring_job | Pausar ejecuciones programadas |
resume_recurring_job | Reanudar un trabajo pausado |
Herramientas de estadísticas
| Tool | Description |
|---|---|
get_stats | Estadísticas del servidor (conteos de exitosos, fallidos, en procesamiento) |
list_queues | Listar colas con conteos de trabajos pendientes |
list_servers | Listar servidores Hangfire activos |
Herramienta de configuración
| Tool | Description |
|---|---|
configure | Establecer 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
- Haz un fork del repositorio
- Crea una rama de características (
git checkout -b feature/my-feature) - Haz commit de tus cambios (
git commit -am 'Add my feature') - Haz push a la rama (
git push origin feature/my-feature) - Abre una solicitud de extracción
Licencia
MIT