NeuroDock Task Fractionator

io.github.tlennon-iePublished by GitHub account tlennon-iev0.1.0Updated Oct 24, 2026

Decompose a vague goal into atomic 5-90 minute tasks and surface the next safe action.

VerifiedSTDIODesktop onlyProductivity & WorkflowAI & ML

Overview

AI-generated overview

Breaks a vague goal into atomic 5-90 minute tasks and picks the single next action to take.

What you can do
Exposes two tools over stdio. decompose(goal, time_budget?) turns a plain-language goal into atomic 5-90 minute tasks, each with an acceptance criterion, a dependency-sorted sequence number and tags; it is stateless and returns the list without persisting it. next_one(project) returns exactly one task with a short rationale and a confidence score between 0 and 1, choosing the lowest sequence whose dependencies are already complete. Decomposition is local-heuristic; no LLM call is made inside the server.
When to use it
Useful when a large or vague initiative needs to be turned into concrete, time-boxed steps and the user wants a single unambiguous next action rather than a full plan. Suited to local, single-user workflows where the caller stores the resulting tasks itself.
Requirements
Runs locally as a Python package over stdio, launched with uvx. No authentication, environment variables or headers are declared. The next_one tool reads pending tasks from a pluggable source; the default in-memory source must be seeded by the caller, and the graph-backed source is a stub that always fails. An optional NEURODOCK_TASK_SOURCE variable selects memory or graph.
Before you install
next_one depends on a pending-task source: the default in-memory source holds tasks only in process memory and must be seeded before use, and the graph-backed option always raises COGNITIVE_GRAPH_UNAVAILABLE in this version. decompose is stateless, so nothing is saved unless the caller persists it. Goal text and project names are treated as sensitive and are not logged, but the server is a developer preview (v0.0.3) with a documented in-memory-only caveat.

Installation

In SourceWeft

  1. Open NeuroDock Task Fractionator in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

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

bash
# From the repo rootuv syncuv 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:

    python
    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

bash
# Lint + format checkuv run ruff check packages/mcp-task-fractionator/uv run ruff format --check packages/mcp-task-fractionator/
# Strict type checkuv run mypy --strict packages/mcp-task-fractionator/src/
# Testsuv 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).

Source: packages/mcp-task-fractionator/README.md at commit 2d9cac6

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.0LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts