MCP server for hierarchical task management in deep research agent workflows.
Provides tools for creating, listing, and updating tasks organized into trees with dependency tracking. Tasks carry research context (decisions, facts, next steps, blockers) alongside their status.
# Storage modes
- **Session-scoped** (default via [`TasksMcp::new`]) -- Tasks are stored in a temporary directory that is automatically cleaned up after the server is dropped and outstanding operations finish.
- **Persistent** (via [`TasksMcp::new_persistent`] or `--dir` CLI flag) -- Tasks are stored in a specified directory and survive across sessions.
# Construction
```rust,ignore
use clap::Parser;
use mcp_servers::{TasksMcp, TasksMcpArgs};
// Session-scoped
let server = TasksMcp::new();
// Persistent, in /my/project/.aether-tasks
let server = TasksMcp::new_persistent("/my/project");
// From CLI args (e.g. --dir /path), with a relative --dir resolved against a base directory
let args = TasksMcpArgs::try_parse_from(["--dir", "."])?;
let server = TasksMcp::from_args(args, "/my/project".as_ref());
```
# Tools provided
- **`task_create`** -- Create a new root task tree with a subject and optional description.
- **`task_update`** -- Update a task's status, assignee, dependencies, or research fields.
- **`task_list`** -- List tasks with optional filters by status or assignee.
- **`task_get`** -- Get full details of a specific task by ID.
# See also
- [`Task`](crate::tasks::Task) -- The task data structure.
- [`TaskId`](crate::tasks::TaskId) -- Hierarchical task identifiers.
- [`TaskStatus`](crate::tasks::TaskStatus) -- `Pending`, `InProgress`, `Completed`, `Blocked`.
- [`TaskStore`](crate::tasks::TaskStore) -- Underlying JSONL persistence layer.