Ruflo
Agent swarms with shared vector memory and task routing for Claude Code and other MCP clients
Run and manage bunqueue job queues, cron schedules and dead letter queues from an AI client
Official · Egeo Minotti TypeScript Local · stdio Developer toolsDevOps and monitoring
77 popularity score ★ 591 ↓ 7.4k/wk
Opens the app, which asks before it adds the server.
bun add -g bunqueue @modelcontextprotocol/sdkclaude mcp add bunqueue -- bunx --package bunqueue bunqueue-mcp{
"mcpServers": {
"bunqueue": {
"command": "bunx",
"args": [
"--package",
"bunqueue",
"bunqueue-mcp"
]
}
}
}{
"mcpServers": {
"bunqueue": {
"command": "bunx",
"args": [
"--package",
"bunqueue",
"bunqueue-mcp"
]
}
}
}{
"servers": {
"bunqueue": {
"type": "stdio",
"command": "bunx",
"args": [
"--package",
"bunqueue",
"bunqueue-mcp"
]
}
}
}[mcp_servers.bunqueue]
command = "bunx"
args = ["--package", "bunqueue", "bunqueue-mcp"]gemini mcp add --scope user bunqueue bunx -- --package bunqueue bunqueue-mcp| Set together: agent features | |
|---|---|
BUNQUEUE_MCP_PROFILE |
Optional: agent fills in dynamic toolsets and destructive-call confirmation when those two are unset; any other value stops startup. |
| Set together: embedded | |
DATA_PATH |
Optional: SQLite file to keep jobs in embedded mode; in memory when unset (BUNQUEUE_DATA_PATH and BQ_DATA_PATH take priority). |
| Set together: tcp | |
BUNQUEUE_MODE |
Optional: embedded or tcp to work on a running bunqueue server. |
BUNQUEUE_HOST |
Optional: bunqueue server host in TCP mode. |
BUNQUEUE_PORT |
Optional: bunqueue server TCP port; an invalid value stops startup. |
BUNQUEUE_TOKEN secret |
Optional: Auth token of the bunqueue server in TCP mode. |
| Set together: http | |
BUNQUEUE_MCP_TRANSPORT |
Optional: stdio or http (Streamable HTTP on 127.0.0.1:6791/mcp by default). |
BUNQUEUE_MCP_HTTP_TOKEN secret |
Optional: Comma-separated bearer tokens for the HTTP transport; needed when BUNQUEUE_MCP_HTTP_HOST is not loopback. |
BUNQUEUE_MCP_TOOLSETS |
Optional: all, a list of tool groups, or dynamic (optionally with groups to preload) to load groups on demand. |
BUNQUEUE_MCP_CONFIRM |
Optional: destructive to require confirmation before nine destructive tools (ten with workflow tools); off when unset. |
BUNQUEUE_MCP_DECISION_PROVIDER |
Optional: typesafe, cloudflare or systemone; needs BUNQUEUE_MCP_DECISION_API_KEY (typesafe, cloudflare) or _MODEL and _URL (systemone). |
BUNQUEUE_MCP_WORKFLOW_DB |
Optional: Path of an existing workflow Engine dataPath file; turns on the workflow tools. |
bunqueue is a job queue for the Bun runtime, and its npm package carries a second program, bunqueue-mcp, that exposes the queue to an MCP client. Through it an assistant can add jobs and flows, schedule cron jobs, pull and acknowledge work by hand, set rate and concurrency limits, inspect and retry failed jobs in the dead letter queue, manage webhooks, and read statistics, queue diagnoses or Prometheus metrics.
It runs in one of two modes. By default the queue lives inside the MCP process itself, in memory, or in a SQLite file when DATA_PATH is set. With BUNQUEUE_MODE=tcp it connects instead to a bunqueue server you already run (port 6789 by default) and works on the same queues your workers use, whether that server keeps them in SQLite or PostgreSQL. Since an assistant cannot run worker code, the register_handler tool lets it point a queue at a URL; the MCP process then makes that HTTP call for every job and stores the response as the result.
It speaks stdio by default and can serve Streamable HTTP for several clients at once. Opt-in settings change how the tools behave: tool groups loaded on demand to save context, a confirmation step before destructive calls, and an outside decision model that can veto destructive requests. The README's install command now sets BUNQUEUE_MCP_PROFILE=agent; per src/mcp/agentProfile.ts at v2.9.20 that preset only fills in BUNQUEUE_MCP_TOOLSETS=dynamic and BUNQUEUE_MCP_CONFIRM=destructive when those are unset, and any other value of it stops the server.
The docs count 79 primary tools; the tool policy file at v2.9.20 (src/mcp/toolPolicy.ts) maps 82, the extra three being workflow tools that appear only when BUNQUEUE_MCP_WORKFLOW_DB is set, plus the dynamic-discovery tools counted apart. Of the 82 it marks 35 read-only, so most tools change queue state. It also serves 5 read-only resources and 3 prompts.
| Runtime | Bun 1.4+ |
|---|---|
| Runs on | macOS, Windows, Linux |
| Also |
|
The MCP server and embedded mode run only on Bun 1.4.0 or newer. Since v2.8.1 the MCP SDK is an optional peer dependency that bunqueue does not install, so run `bun add -g bunqueue @modelcontextprotocol/sdk` first. TCP mode needs a running bunqueue server and its auth token if it has one. Workflow tools need an existing Engine dataPath file on the same machine; signalling runs also needs TCP mode. `bunqueue-mcp --doctor --json` checks the settings before connecting.
In the default embedded mode without DATA_PATH, jobs live in memory and are lost when the client session ends. HTTP handlers live in the MCP process, so under stdio they stop with the session and must be registered again. An assistant cannot run worker code itself; jobs stay waiting unless a handler or a Worker processes them. Handler calls time out after 30 s by default (1 to 120 s). The HTTP transport has no TLS, holds sessions in memory (lost on restart, closed after 30 idle minutes), allows 100 sessions and 4 MiB request bodies. bunqueue_signal_workflow is left out in embedded mode. The docs warn that SQLite on a network filesystem is not safe.
Suits teams already running bunqueue on Bun who want an assistant to inspect queues, retry failures and adjust schedules or limits on a live server through TCP mode, and anyone trying the queue locally with no setup. Since most tools write and some delete jobs for good, a shared or production server is better run with BUNQUEUE_MCP_PROFILE=agent or BUNQUEUE_MCP_CONFIRM=destructive and a narrowed BUNQUEUE_MCP_TOOLSETS list. It needs Bun on the machine running it, and works only on bunqueue's own queues.
27 only read, 24 change things, 9 can delete or overwrite.
bunqueue_get_capabilitiesbunqueue_add_job changesbunqueue_add_jobs_bulk changesbunqueue_get_jobbunqueue_get_job_statebunqueue_get_job_resultbunqueue_wait_for_jobbunqueue_observe_jobbunqueue_get_job_logsbunqueue_clear_job_logs deletesbunqueue_cancel_job deletesbunqueue_discard_job changesbunqueue_promote_job changesbunqueue_update_job_data deletesbunqueue_change_job_priority changesbunqueue_move_to_delayed changesbunqueue_pull_job changesbunqueue_pull_job_batch changesbunqueue_ack_job changesbunqueue_fail_job changesbunqueue_job_heartbeat changesbunqueue_list_queuesbunqueue_count_jobsbunqueue_get_jobsbunqueue_list_jobs_pagebunqueue_get_job_countsbunqueue_is_pausedbunqueue_pause_queue changesbunqueue_resume_queue changesbunqueue_drain_queue deletesbunqueue_clean_queue deletesbunqueue_obliterate_queue deletesbunqueue_get_dlqbunqueue_get_dlq_statsbunqueue_retry_dlq changesbunqueue_purge_dlq deletesbunqueue_retry_completed changesbunqueue_add_cron changesbunqueue_list_cronsbunqueue_get_cronbunqueue_delete_cron deletesbunqueue_set_rate_limit changesbunqueue_set_concurrency changesbunqueue_get_queue_limitsbunqueue_add_flow changesbunqueue_add_flow_chain changesbunqueue_get_flowbunqueue_get_children_valuesbunqueue_register_handler changesbunqueue_list_handlersbunqueue_register_worker changesbunqueue_list_workersbunqueue_add_webhook changesbunqueue_list_webhooksbunqueue_remove_webhook deletesbunqueue_get_statsbunqueue_diagnose_queuebunqueue_get_prometheus_metricsbunqueue_list_workflow_executionsbunqueue_signal_workflow changesbunqueue://statsbunqueue://queuesbunqueue://cronsbunqueue://workersbunqueue://webhooksbunqueue_health_reportbunqueue_debug_queuebunqueue_incident_response