manage_itemsLABSCO SUMMARY
The guardrails are in the server, so an agent cannot talk its way past them.
A prompt that says "write the requirements before you start" is advice; here it is a failed tool call that names the missing note. That difference matters most across sessions and across sub-agents, where nobody is reading the transcript — a new agent calls get_context once, gets the blocked items and the stalled ones with their gaps, and the record of who wrote what survives the conversation that produced it.
What it is
An MCP server holding a persistent, hierarchical work-item graph in SQLite, with 14 tools for building it, querying it, and moving items through phases. What separates it from a prompt-based framework is where the rules live: if a required note is empty or an upstream dependency is unfinished, the transition call fails at the server rather than relying on the model to comply.
What you get
- A work breakdown created in one atomic call, with typed dependency edges between the children — when an item reaches terminal its dependents unblock automatically, and a parent cascades once its children are done —
create_work_tree,manage_dependencies,complete_tree - Phase gates defined in YAML: each note carries
required, adescription, aguidancestring surfaced at the moment the agent fills it, and an optionalskillthe agent must invoke first —advance_itemreturns exactly which notes are missing - Traits that attach cross-cutting note requirements to a schema or to a single item, so a task touching authentication picks up a security review that a CSS cleanup does not
- Actor attribution on every transition and note, with an auditing mode that rejects writes from an agent that will not identify itself; query responses carry the full delegation chain
- One-call session recovery returning active items, recent transitions, blocked items, stalled items with their missing notes, and ancestor chains —
get_context - Relevance-ranked full-text search across items and notes, scopable to a subtree or filtered by status or tag —
query_items,query_notes - Metadata-only note queries (
includeBody=false) so an agent can check what documentation exists without paying to read it - Atomic find-and-claim for fleets of agents working the same queue —
get_next_item,claim_item,get_blocked_items
Requirements
Docker, running. The image is ghcr.io/jpicklyk/task-orchestrator:latest; server.json publishes version 3.2.0 over stdio. The simplest path is a per-session container over stdio; the multi-project path runs one persistent container with MCP_TRANSPORT=http and API_ENABLED=true on port 3001, which the README insists you publish loopback-only (-p 127.0.0.1:3001:3001) because API_AUTH_MODE=none gives anyone who reaches the port full read/write/delete. DATABASE_PATH, AGENT_CONFIG_DIR, USE_FLYWAY and LOG_LEVEL are all optional. Without a schema file all 14 tools still work — schema-free, no gates.
Setup effort
One command — docker pull ghcr.io/jpicklyk/task-orchestrator:latest
USE CASES
Picking up work in a fresh session with no context
One call returns what is in flight, what is blocked, what stalled and on which missing note, plus the ancestor chain for each item — no transcript replay.
Stopping implementation from starting before the spec exists
Define the queue-phase note as required in .taskorchestrator/config.yaml; the start transition fails with the note key named until it is filled.
Laying out a feature and its ordering in one shot
Create the root and its children with dependency edges in a single call, so the schema task must finish before the API task can start.
Working out afterwards which agent did what
Turn on actor authentication and read the delegation chain off the transition history — which orchestrator dispatched which sub-agent, and who wrote each note.
Running several agents against one backlog
Each agent asks for the next unblocked item and claims it atomically, so two agents never take the same task.
14 tools
Listed in project docs. Your client may show a different list.
query_itemscreate_work_treecomplete_treemanage_notesquery_notesmanage_dependenciesquery_dependenciesadvance_itemget_next_statusget_contextget_next_itemget_blocked_itemsclaim_itemBEFORE YOU INSTALL
What to know first
Tools you get
14 tools named in the project's documentation.
Requires
docker on PATH
INSTALLATION
Connect your client
Server setup
docker pull ghcr.io/jpicklyk/task-orchestrator:latestMCP Clients
Claude Code — Docker
{
"mcpServers": {
"mcp-task-orchestrator": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-v",
"mcp-task-data:/app/data",
"ghcr.io/jpicklyk/task-orchestrator:latest"
]
}
}
}Claude Code — plugin
/plugin marketplace add https://github.com/jpicklyk/task-orchestrator
/plugin install task-orchestrator@task-orchestrator-marketplace