mcpField
N
NeuroDock Task Fractionator

NeuroDock Task Fractionator

Local
neurodock.orgProductivity18Updated 18w ago

About NeuroDock Task Fractionator

NeuroDock Task Fractionator is a local-first MCP server that breaks goals into atomic tasks and selects one next action. It is aimed at people organizing projects; decomposition uses local heuristics, and task persistence is left to the caller.

Key features

  1. 01Break goals into 5–90 minute tasks
  2. 02Add acceptance criteria and dependency order
  3. 03Select exactly one next task
  4. 04Return reasoning and a confidence score
  5. 05Do not persist decomposed tasks

Use cases

  1. 01Turning a vague initiative into actionable tasks
  2. 02Choosing the next unblocked project task

MCP support

Exposes `decompose` and `next_one` as MCP tools. `next_one` reads pending tasks from a configurable source; the shipped graph-backed source is a stub.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"tlennon-ie-neurodock-mcp-task-fractionator": {
"command": "uvx",
"args": [
"neurodock-mcp-task-fractionator"
]
}
}
}
Run commanduvx neurodock-mcp-task-fractionator

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
pypineurodock-mcp-task-fractionator0.1.0

Tools

2

Saved tool list · updated 2w ago

ParameterTypeRequiredDescription
goalstringYes
time_budgetanyNoOptional total time budget as an ISO-8601 duration, e.g. 'PT2H' (2 hours) or 'PT90M' (90 minutes) — not prose like 'a couple of hours'.
max_chunk_sizeanyNoOptional neurotype knob (ADR 0011). Caps the NUMBER of tasks returned, below the normal 3-12 target / hard cap of 20. When the goal naturally needs more steps, the server keeps the lowest-sequence prefix (a valid sub-DAG with no dangling dependencies) and notes the truncation in the rationale rather than silently dropping steps. Omit for default behaviour.
motor_fatigue_awareanyNoOptional neurotype knob (ADR 0011). When true, the server echoes the preference and names it in the rationale so the client can act on it. The server has no view of actual motor activity and does NOT infer fatigue.
time_buffer_multiplieranyNoOptional neurotype knob (ADR 0011). When greater than 1.0, the server attaches an additive 'padded_minutes' to each task equal to round(estimated_minutes * multiplier). 'estimated_minutes' stays RAW so the figure is never padded twice. A value of 1.0 (or omitting it) produces no padding.

Details

From the project README

neurodock-mcp-task-fractionator

Local-first goal decomposition and single next-action selection, exposed as an MCP server.

Tools

decompose(goal, time_budget?)

Local-heuristic decomposition into atomic 5–90 minute tasks. Every task carries at least one acceptance criterion, a dependency-sorted sequence number, and a small bag of tags. Stateless: the server returns the list and does not persist it. Persistence is the caller's job via mcp-cognitive-graph.

  • goal — 5..500 character plain-language goal. Never logged.
  • time_budget — optional ISO 8601 duration (PT4H, P3D, PT2H30M). Unparseable input returns TIME_BUDGET_UNPARSEABLE. P3D is treated as 3 working blocks of 4 hours, not 72 hours, per ADR 0003 §3.

Errors: GOAL_REQUIRED, GOAL_TOO_LONG, TIME_BUDGET_UNPARSEABLE, BUDGET_INFEASIBLE, DEPENDENCY_CYCLE, ACCEPTANCE_CRITERIA_REQUIRED, DECOMPOSITION_UNAVAILABLE.

next_one(project)

Returns exactly one task — the single thing the user should do next — with a short reasoning paragraph and a confidence score in [0, 1].

  • project — 1..120 char project name (case-sensitive, no fuzzy match).
  • Pending tasks are read from a pluggable PendingTaskSource.
  • Selection: lowest sequence whose dependencies are all already complete in the pending set.

Errors: PROJECT_REQUIRED, NO_TASKS_AVAILABLE, ALL_TASKS_BLOCKED, COGNITIVE_GRAPH_UNAVAILABLE.

Quick start

# From the repo root
uv sync
uv run pytest packages/mcp-task-fractionator/tests/ -v

# Run the server over stdio (the MCP transport):
uv run neurodock-mcp-task-fractionator

In-memory-only next_one (v0.0.3 caveat)

next_one reads pending tasks from a PendingTaskSource. v0.0.3 ships two implementations:

  • InMemoryPendingTaskSource — default, used by tests. Holds tasks in process memory. Build the server explicitly with this source and seed it before calling next_one:

    from neurodock_mcp_task_fractionator import (
        InMemoryPendingTaskSource, build_server,
    )
    
    source = InMemoryPendingTaskSource()
    source.add("founding-scope-rfc", [task_1, task_2, task_3])
    server = build_server(source=source)
    
  • CognitiveGraphPendingTaskSource — Phase 2 stub. Always raises COGNITIVE_GRAPH_UNAVAILABLE. Real wiring lands once the mcp-cognitive-graph Python client ships.

Selection via env var: NEURODOCK_TASK_SOURCE=memory|graph (default memory). Unknown values fall back to memory rather than crashing.

Privacy

Per ADR 0003 §7 the goal text and project name are treated as sensitive user data:

  • No remote calls. No LLM call inside the server.
  • Goal text is never logged at any level.
  • Validation errors reference field names, not user content.
  • The rationale paragraph is built from recognised vocabulary tokens only; it never embeds the user's original goal text verbatim.

A test (test_decompose.py::test_rationale_does_not_contain_goal_text) encodes the privacy invariant.

Development gates

# Lint + format check
uv run ruff check packages/mcp-task-fractionator/
uv run ruff format --check packages/mcp-task-fractionator/

# Strict type check
uv run mypy --strict packages/mcp-task-fractionator/src/

# Tests
uv run pytest packages/mcp-task-fractionator/tests/ -v

All four must pass before a PR is mergeable.

Pointers

  • Architecture rationale: ADR 0003 — task-fractionator tool design.
  • The five-principles manifesto this server has to honour: MANIFESTO.md.
  • Sibling servers: mcp-chronometric (time, idle, breaks) and mcp-cognitive-graph (persistent state — where pending tasks will live).

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.