list_jobsLABSCO SUMMARY
The Hangfire dashboard's job-triage half, reachable from where you are already debugging.
Because it reads the database rather than the dashboard, it can hand back a failed job's arguments and exception alongside its state history — enough to diagnose without switching windows. Auto-discovery from appsettings means the usual setup is pointing it at the workspace and nothing else.
What it is
An MCP server for Hangfire, the .NET background job scheduler. It reads the Hangfire SQL Server database directly, so an assistant can see what failed and why, retry it, and pause or trigger recurring jobs without opening the dashboard. Connection strings are discovered from your project's appsettings files.
What you get
- list_jobs and get_job — jobs by state (Enqueued, Processing, Succeeded, Failed and the rest), and one job's arguments and exception detail
- get_job_history — the state history behind a job, so you can see how it got there
- retry_job, requeue_job and delete_job — retry a failure, move a job back to its queue, or remove it
- list_recurring_jobs and get_recurring_job — every recurring job with its cron schedule, and one job's detail
- trigger_recurring_job, pause_recurring_job and resume_recurring_job — run a scheduled job now, or stop and restart its schedule
- get_stats, list_queues and list_servers — succeeded, failed and processing counts, queues with pending totals, and the active Hangfire servers
- configure — set the connection string for the current workspace
Requirements
Python 3.11 or newer, a SQL Server instance holding the Hangfire database, and ODBC Driver 17 for SQL Server or compatible — it uses pyodbc, so the connection string must be ODBC format, not ADO.NET. Clients run uvx hangfire-mcp over stdio with --workspace pointing at your project. The connection string is taken from --connection-string, then HANGFIRE_CONNECTION_STRING, then any appsettings*.json under the workspace, then a saved user config, then the configure tool.
Setup effort
One command — pip install hangfire-mcp
USE CASES
Working out why a nightly job failed
List the failed jobs, read the exception and arguments on the one that matters, and follow its state history.
Clearing a backlog after a fix
Retry the failures or push them back onto their queue, then check the counts came down.
Running a scheduled job out of band
Find the recurring job by its cron schedule and trigger it immediately.
Stopping a job during a maintenance window
Pause the schedule, then resume it when the window closes.
Checking the workers are alive
Read the active servers and the pending depth on each queue.
15 tools
Listed in project docs. Your client may show a different list.
get_jobget_job_historyretry_jobdelete_jobrequeue_joblist_recurring_jobsget_recurring_jobtrigger_recurring_jobpause_recurring_jobresume_recurring_jobget_statslist_queueslist_serversconfigureBEFORE YOU INSTALL
What to know first
Tools you get
15 tools named in the project's documentation.
Requires
- uvx on PATH
- Python 3.11+
- SQL Server with your Hangfire database
- ODBC Driver 17 for SQL Server (or compatible)
Optional
HANGFIRE_CONNECTION_STRING in your environment
Where it runs
Both documented setups run the server on your machine.
INSTALLATION
Connect your client
Server setup
pip install hangfire-mcpMCP Clients
VS Code — global, per project
{
"servers": {
"hangfire-mcp": {
"command": "uvx",
"args": [
"hangfire-mcp",
"--workspace",
"${workspaceFolder}"
]
}
}
}You may not need to set a connection string: the server takes it from --connection-string, then HANGFIRE_CONNECTION_STRING, then any appsettings*.json under the workspace, then its saved user config — or you can set one with the configure tool. It must be in ODBC format, not ADO.NET.