Labsco
MCP SERVER

MCP Task Orchestrator

by jpicklyk

A work-item graph for AI agents where the rules are enforced by the server — an agent that skips the required design note gets an error, not a warning.

Project & Task Management
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`, a `description`, a `guidance` string surfaced at the moment the agent fills it, and an optional `skill` the agent must invoke first — `advance_item` returns 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