Diagnoses pg-boss and graphile-worker job queues: retry storms, stuck workers, missed schedules.
MCPpedia last refreshed this data
io.github.ethanasm/mcp-queue-doctor is an MCP server that diagnoses pg-boss and graphile-worker job queues: retry storms, stuck workers, missed schedules. Its tool list has not been published yet over stdio, sse and http, requires no API key, and scores 85/100 on MCPpedia's security, maintenance and efficiency rubric.
Config is the same across clients — only the file and path differ.
{
"mcpServers": {
"queue-doctor": {
"env": {
"QUEUE_DOCTOR_DATABASE_URL": "postgres://readonly:pw@localhost:5432/app"
},
"command": "mcp-queue-doctor"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
An MCP server that diagnoses Postgres job queues — pg-boss and graphile-worker. Retry storms, stuck workers, missed schedules, expiry overruns: what is broken, why, and the safest
Run this in your terminal to verify the server starts. Then let us know if it worked — your result helps other developers.
npx -y 'mcp-queue-doctor' 2>&1 | head -1 && echo "✓ Server started successfully"
After testing, let us know if it worked:
Five weighted categories — click any category to see the underlying evidence.
No known CVEs.
Checked mcp-queue-doctor against OSV.dev.
Click any tool to inspect its schema.
Be the first to review
Have you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Others in other
Transport for TMCP using STDIO
The graph based agentic IDE
Compress tool outputs, logs, files, and RAG chunks before they reach the LLM. 60-95% fewer tokens, same answers. Library, proxy, MCP server.
Buddhist canon tools: search, passages, cross-canon parallels, dictionaries — all URN-cited.
MCP Security Weekly
Get CVE alerts and security updates for io.github.ethanasm/mcp-queue-doctor and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
An MCP server that diagnoses Postgres job queues — pg-boss and graphile-worker. Retry storms, stuck workers, missed schedules, expiry overruns: what is broken, why, and the safest way to recover.
❌ "3 jobs in enrichment/corpus-fill are in state 'failed'."
✅ "enrichment/corpus-fill failed 140 times over 3m, peaking at 50 failures in a
single minute. 91% share one error, which looks like an upstream rate limit.
This is one fault reproduced many times, not many separate faults — so the fix
belongs at the source, and retrying the jobs individually will reproduce it.
Recovery, safest first:
1. Stop enqueuing to this queue — every new job feeds the same failure.
2. Confirm when the upstream quota resets; treat that as the time to resume.
3. Add a cooldown gate after N consecutive 429s.
⚠ Do NOT bulk-retry yet — the upstream is still limited.
Evidence: 140 failures, 91% 'HTTP 429 Too Many Requests (daily quota
exceeded)', peak 50/min, busiest minutes [...], 12 other errors [...]"
The second answer is the product. Every finding carries the evidence it was drawn from, so you — or an agent — can check the reasoning instead of trusting it.
The rules are extracted from a morning health check that has run daily in production since April 2026 against a pg-boss instance driving ~30 cron queues. Every threshold was tuned by a real false positive or a real missed failure, and each rule below names the incident that motivated it. That provenance is the point: these are not heuristics invented for a README.
npm install -g mcp-queue-doctor
{
"mcpServers": {
"queue-doctor": {
"command": "mcp-queue-doctor",
"env": {
"QUEUE_DOCTOR_DATABASE_URL": "postgres://readonly:pw@localhost:5432/app"
}
}
}
}
Then ask: "Is anything wrong with my job queue?"
Want to see it work first? examples/demo spins up a
throwaway Postgres and manufactures seven failures in about a minute. It also
plants a graphile-worker instance in the same database, where four of the seven
rules go deliberately silent — the clearest way to see what capability
declaration actually buys you.
The server speaks stdio, so every MCP client starts it as a subprocess. The only thing that varies is where the config lives — and whether that process can reach your database.
Claude Desktop — ~/Library/Application Support/Claude/claude_desktop_config.json
on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows. Use the
mcpServers block above, then restart the app.
Desktop launches its subprocesses from the app bundle, not a login shell, so
PATH is minimal and a bare mcp-queue-doctor or npx often fails to resolve.
Give it an absolute path — which mcp-queue-doctor after a global install, or
the absolute path to npx with ["-y", "mcp-queue-doctor"] as its args.
Claude Code — one command, no file editing:
claude mcp add queue-doctor -e QUEUE_DOCTOR_DATABASE_URL=postgres://... -- npx -y mcp-queue-doctor
Add -s project to write a checked-in .mcp.json at the repo root instead of
your personal config, so everyone working in that repo gets the tool.
Cloud / remote sessions (Claude Code on the web, and any other headless
runner) — a checked-in .mcp.json is the only mechanism that works, because
nobody is there to answer an approval prompt. Reference the connection string
rather than committing it; Claude Code expands ${VAR} and ${VAR:-default}
in .mcp.json:
{
"mcpServers": {
"queue-doctor": {
"command": "npx",
"args": ["-y", "mcp-queue-doctor"],
"env": { "QUEUE_DOCTOR_DATABASE_URL": "${QUEUE_DOCTOR_DATABASE_URL}" }
}
}
}
Project-scoped servers still need to be trus