Model Context Protocol server for BullMQ job queue management
The BullMQ MCP server has 16 well-defined tools with generally clear naming conventions following verb_noun patterns (connect, disconnect, get_jobs, add_job, etc.). Tool descriptions are present and informative, ranging 60-180 characters. Input schemas are complete with type definitions and parameter descriptions. However, several critical gaps reduce the score: (1) Output schemas are not documented, the code does not show what each tool returns, forcing LLMs to infer structure; (2) Error handling is minimal, no recovery guidance, actionable error messages, or error categorization visible; (3) No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk classification in the metadata; (4) Some parameter descriptions lack constraints (e.g., 'Job data (JSON object)' is vague, what shape? Required fields?); (5) Default parameter values present potential for unintended side effects (e.g., clean_queue defaults to status='completed' with limit=1000, which could be surprising). Overall, the server is competent but missing production polish in output documentation and error guidance.
Add a new job to the queue
Add a log entry to a job
Clean jobs from queue
Connect to Redis instance. Can use REDIS_URL environment variable if set. When running in Docker, localhost will automatically redirect to host.docker.internal.
Disconnect from current Redis instance
Get a specific job by ID
Get logs for a job
Output schemas not documented. Code does not show what any tool returns; LLMs cannot predict response structure or chain tools effectively.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Server metadata clearly marks tools as READ_ONLY, WRITE, or DESTRUCTIVE, but these are not reflected in tool definitions via the current MCP annotation schema.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 57 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 24 | - | v1 |
Get jobs from queue by status
List all saved connections
Pause queue processing
Promote a delayed job
Remove a job from the queue
Resume queue processing
Retry a failed job
Get queue statistics
Switch to a different connection
Minimal error handling and no recovery guidance. Source code does not show error messages that tell LLMs what to do next (e.g., 'User not found. Try search_users() with a partial name.'). Raw errors or missing exception handling.
Parameter descriptions lack constraints and format specs. 'Job data (JSON object)' does not specify required fields, structure, or constraints. 'Grace period in milliseconds' lacks min/max bounds. LLMs cannot validate input without explicit constraints.
Default parameter values risk unintended side effects. clean_queue defaults to status='completed' and limit=1000, an LLM omitting these parameters may unexpectedly clean a large batch. Remove defaults for destructive operations or document the risks explicitly.
No pagination or result-limiting guidance in tools that return collections (get_jobs, list_connections). Large result sets could exhaust context. Descriptions should clarify limits and pagination strategy.