Python port of jpicklyk/task-orchestrator — MCP server for AI agent work management
Project description
task-orchestrator-py
Python port of jpicklyk/task-orchestrator — an MCP server that gives AI agents a persistent work item graph with workflow enforcement.
Why
AI agents lose track of complex work across sessions. This server provides persistent state: items flow through queue → work → review → done with dependency enforcement, note-based documentation, and optional schema gates.
Quick Start
# Run directly (no install needed)
uvx task-orchestrator-py
# Or install
pip install task-orchestrator-py
MCP Client Configuration
{
"mcpServers": {
"task-orchestrator": {
"command": "uvx",
"args": ["task-orchestrator-py"],
"env": {
"TASK_ORCHESTRATOR_DB": "/path/to/tasks.db"
}
}
}
}
If TASK_ORCHESTRATOR_DB is not set, defaults to ~/.task-orchestrator/tasks.db.
Tools (14)
Hierarchy & CRUD
| Tool | Description |
|---|---|
manage_items |
Create, update, or delete work items |
query_items |
Get by ID, search with filters, children, overview |
create_work_tree |
Atomically create root + children + dependencies |
complete_tree |
Batch-complete descendants in topological order |
Workflow
| Tool | Description |
|---|---|
advance_item |
Trigger-based transitions with gate enforcement |
get_next_status |
Read-only transition preview before advancing |
get_context |
Session resume dashboard or item detail with gate info |
get_next_item |
Priority-ranked next actionable item |
get_blocked_items |
Items blocked by deps or explicit block |
Notes
| Tool | Description |
|---|---|
manage_notes |
Upsert or delete notes on items |
query_notes |
Get notes with optional include_body=false for token efficiency |
Dependencies
| Tool | Description |
|---|---|
manage_dependencies |
Add/remove edges, pattern shortcuts (linear, fan-out, fan-in) |
query_dependencies |
Direct neighbors or full BFS graph traversal |
Schemas
| Tool | Description |
|---|---|
manage_schemas |
List, inspect, check gates, reload config |
Workflow
queue → work → review → done
↘ ↘ ↘
→ blocked (block trigger) → resume → previous status
Triggers: start, complete, block, resume, cancel, reopen
Note Schemas
Optional YAML config for gate enforcement. Required notes must be filled before phase transitions.
# .taskorchestrator/config.yaml
work_item_schemas:
task:
lifecycle: auto # auto | manual | auto-reopen | permanent
notes:
- key: requirements
role: queue
required: true
description: "Acceptance criteria before starting"
- key: done-criteria
role: work
required: true
description: "What does done look like?"
Lifecycle modes:
- auto: skip review if no review-phase notes defined
- manual: all phases required (default)
- auto-reopen: terminal items reopen when notes are updated
- permanent: cannot be cancelled
Dependencies
# Linear chain: A → B → C
manage_dependencies(operation="pattern", item_ids="id_a,id_b,id_c", pattern="linear")
# Fan-out: A → B, A → C
manage_dependencies(operation="pattern", item_ids="id_a,id_b,id_c", pattern="fan-out")
# Custom unblock threshold (unblock when blocker reaches 'work', not 'done')
manage_dependencies(operation="add", from_id="...", to_id="...", unblock_at="work")
MCP Prompts (7)
Reusable workflow skills: work_summary, create_item_from_context, quick_start, status_progression, dependency_manager, batch_complete, session_start.
Environment Variables
| Variable | Default | Description |
|---|---|---|
TASK_ORCHESTRATOR_DB |
~/.task-orchestrator/tasks.db |
SQLite database path |
TASK_ORCHESTRATOR_CONFIG |
.taskorchestrator/config.yaml |
Schema config path |
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file task_orchestrator_py-0.5.0.tar.gz.
File metadata
- Download URL: task_orchestrator_py-0.5.0.tar.gz
- Upload date:
- Size: 60.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
025bf4d4a81b40cba672b3725407ccd5a6fec56e5e2eeb7df219fbc0afa2f0be
|
|
| MD5 |
e4a1b1526b208adbb7b485faa20cfb2a
|
|
| BLAKE2b-256 |
a587ea06970a4ce500816b86c58bc024257c6067f0afff721bcd2f686cf17fb2
|
File details
Details for the file task_orchestrator_py-0.5.0-py3-none-any.whl.
File metadata
- Download URL: task_orchestrator_py-0.5.0-py3-none-any.whl
- Upload date:
- Size: 21.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
26e37b0a114de6fcb29b2969aeaebad00afc00b1947866aba2087b3815d22cb1
|
|
| MD5 |
f44252f5dc9b8b6169a3f374419cbb0f
|
|
| BLAKE2b-256 |
6d7b55cd4436cb0fb482ddffee1868bf00ba128600e8a3c5ff6b0e888a5f9942
|