<!-- mcp-name: io.github.RohitYajee8076/backburner -->
<div align="center">
<img src="docs/banner.png" alt="backburner β background tasks for AI agents" />
<br/> <br/>
Put your AI agent's slow work on the back burner. Keep cooking.
<b>Background Tasks β¦ Zero Infrastructure β¦ Survives Restarts β¦ Windows & Unix</b>
<br/>
π¦ PyPI β’ ποΈ MCP Registry β’ π Issues β’ π MIT
</div>
---
π’ Updates
- v0.2.1 β output with non-ASCII characters (β, emoji, any non-English text) no
longer crashes tasks on Windows.
- v0.2.0 β
exit_codeis no longer reported for cancelled/timed-out tasks
(it was an artifact of the kill, not a real result); new animated demo below.
- v0.1.x β first release: 5 tools, task timeouts, command allow/deny policy.
Listed on the official MCP Registry as io.github.RohitYajee8076/backburner.
---
backburner is an MCP server that gives any AI assistant (Claude, and any other MCP client) the ability to run long shell commands as background tasks β start a test suite, a build, a scrape, a batch job β then keep working and check back for the results, instead of sitting frozen until it finishes.
π₯ Why
AI agents are bad at waiting. A tool call that takes 10 minutes blocks the whole conversation β or times out and loses the work entirely. The MCP specification is formalizing a Tasks pattern for exactly this problem (extension finalized in the 2026-07-28 spec release); backburner brings that workflow to every client today via plain tools, with first-class Tasks-extension support on the roadmap.
π§° Tools
| Tool | What it does | |------|--------------| | start_task(command, cwd?, timeout_seconds?) | Run a shell command in the background, returns a task id immediately | | task_status(task_id) | working / completed / failed / cancelled / timed_out / interrupted | | task_result(task_id, tail_lines?) | Captured output β works mid-run too, so you can peek at progress | | cancel_task(task_id) | Kill the task and its whole process tree | | list_tasks(limit?) | Recent tasks, newest first |
β¨ Features
- Survives restarts β tasks are tracked in SQLite under
~/.backburner/;
output is captured to per-task log files. If the server dies mid-task, orphaned tasks are honestly marked interrupted, never silently lost.
- Real cancellation β kills the full process tree (worker processes
included), on Windows and Unix.
- Peek at live progress β
task_resulton a running task returns the
output so far.
- Timeouts β pass
timeout_secondsand a runaway task is killed and
honestly marked timed_out instead of hanging forever.
- Command policy β restrict what the AI may run with environment
variables (regexes, comma-separated; deny always wins):
BACKBURNER_ALLOW="^pytest,^npm (test|run build)" # only these may run
BACKBURNER_DENY="rm -rf,shutdown,format" # these never run
- Zero infrastructure β stdlib only (SQLite, subprocess, threads).
No Redis, no Celery, no Docker.
- Tested β a pytest suite covers the full job lifecycle: completion,
failure, cancellation, timeouts, crash recovery, and the command policy.
π Install
pip install backburner-mcp
Claude Code
claude mcp add backburner -- python -m backburner.server
Claude Desktop / other clients
{
"mcpServers": {
"backburner": {
"command": "python",
"args": ["-m", "backburner.server"]
}
}
}
π Security note
backburner executes the shell commands the AI sends it, with your user's permissions. That is its job β but treat it like giving your agent a terminal. Run it only with clients whose tool-use you review/approve, prefer permission modes that require confirmation for start_task, and use BACKBURNER_ALLOW / BACKBURNER_DENY to scope what may run.
πΊοΈ Roadmap
- [x] Task timeouts and max-runtime limits
- [x] Allowlist/denylist for commands
- [x] PyPI release β
pip install backburner-mcp - [x] Listed on the official MCP Registry
- [ ] MCP Tasks extension support (spec 2026-07-28) β native
tasks/get,
tasks/cancel alongside the plain tools
- [ ] Local web dashboard β watch tasks live in the browser
- [ ] Structured progress reporting (parse % / step markers from output)
π License
MIT






