nod-mcp
OfficialA git-native project management MCP server that lets agents read and write Nod work items and inspect plan views.
Project info –
project_getreturns project-level metadata.List work items –
work_item_listwith optionalcycle,module, andstatusfilters.Read one item –
work_item_getbyidentifier.Create work items –
work_item_createwith a requiredtitle, plus optionaltype,module,cycle,estimate,priority, anddescription.Update work items –
work_item_updatecan changetitle,description(replace ordescription_append),status,priority,branch,module, andcycle.Kanban board –
boardgrouped by status, filterable bymoduleorcycle.Timeline –
timelineshows cycles over time with estimates.Dependency graph –
dependency_graphrenders item prerequisites.
Notably absent: delete operations, dependency creation, module/cycle management, and the README's parent-epic, due-date, plan/memory, and orphaned-item features.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@nod-mcpadd a task to build the note editor in vault, 3h estimate"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Nod
Git-native project management for humans and coding agents.
Nod lives in your repository: project state is stored in .nod/nod.db at
the root of the main checkout, so the plan travels with the code. Every git
worktree and subdirectory shares that one database; set NOD_DB to use a
different file. Humans drive it through a focused CLI, coding agents drive
the same state through an MCP server.
Install
# released version from PyPI (both nod and nod-mcp on PATH)
pipx install nod-cli
# bleeding edge, straight from main
pipx install git+https://github.com/neatnettech/nod.gitAfter a PyPI release, update with pipx upgrade nod-cli. For git installs,
run pipx reinstall nod-cli to pick up new commits.
Related MCP server: MCP Project Manager
Quick start
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
mkdir demo && cd demo
git init
nod initConcepts
Modules group work by area:
nod module add "Vault"Cycles are timeboxed plans:
nod cycle add "Sprint 1" --start 2026-10-01 --end 2026-10-14Work items are epics, stories, tasks, and bugs:
nod task add "Seed categories" --module vault --cycle sprint-1 --estimate 2hEpics group work that ships together:
nod task add "Slice" --parent OSS-110ornod task set OSS-133 --parent OSS-110(--no-parentdetaches). The parent must be an epic, never the item itself, never a loop.nod task list --parent OSS-110lists the children andnod task show OSS-110shows them. Closing an epic leaves children alone.Dependencies order the work:
nod depends OSS-2 OSS-1Branch flow says where the work lives and goes:
--branchplus optional--from-branch(the branch or tag it is cut from) and--to-branch(where it merges), for examplenod task set OSS-2 --from-branch chore/ground --to-branch mainfor a long lived branch that lands on main laterDue dates are optional per item:
--due 2026-10-16ontask addandtask set(an empty value clears it); an open item past its date shows as OVERDUE innod task listandnod graphAgent context points an item at the plan and memory files an LLM wrote for it:
nod task set NOD-3 --plan ~/.claude/plans/x.md --memory .claude/memory/nod.md(an empty value clears it), so a fresh session can pick the work back up
Views
nod task list # tabular work items
nod module list # modules
nod cycle list # cycles
nod board # kanban grouped by status
nod timeline # cycles over time with estimates
nod cycle report sprint-1 --open # printable HTML sprint report (--out path)
nod graph # ASCII dependency diagramboard, graph and task list cut by area or release with --module <slug> and
--cycle <slug> (an unknown slug is an error). A filtered graph still names the
prerequisites it does not draw (needs NOD-7 outside this view). Items not yet
placed in a module or a cycle are flagged ORPHANED, and --orphaned shows only them.
On the board each item's ID takes its module's colour and its title ends with its
cycle's letter ([A], [B], in date order); a legend under the board explains the
colours and letters shown. nod board --json names each item's module and cycle.
The dependency graph renders as a tree of prerequisite arrows with status glyphs and branch names:
OSS-1 StateBadge component ✓ DONE ⎇ feat/oss-1-statebadge
OSS-3 Seed categories ○ TODO
├─► OSS-4 Vault home ◐ IN_PROGRESS (depends on this)
└─► OSS-6 Note editor ○ TODO (depends on this)Every view accepts --json for scripting and agents.
Agents
nod-mcp exposes the same state as MCP tools: work item create/update/list,
project info, the board, the timeline, and the dependency graph. Work item
create/update take a parent epic (an empty value detaches), list filters by it,
and get returns the item's children. Point your
MCP client at nod-mcp from inside the repository.
Development
pip install -e ".[dev]"
pytestSchema changes ship as append only MIGRATIONS in
src/nod/infrastructure/database.py, tracked by SQLite's user_version, so an
existing .nod/nod.db upgrades in place on its next command.
Releases: tag a version (v0.1.0-rc.1, then v0.1.0) and push it. The
publish workflow builds the version from the tag and publishes to PyPI via
trusted publishing. Requires Python 3.13+.
Available Tools
8 toolsboardD
| Name | Required | Description | Default |
|---|---|---|---|
| cycle | No | ||
| module | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dependency_graphD
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_getD
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timelineD
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
work_item_createD
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | task | |
| cycle | No | ||
| title | Yes | ||
| module | No | ||
| estimate | No | ||
| priority | No | medium | |
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
work_item_getD
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
work_item_listD
| Name | Required | Description | Default |
|---|---|---|---|
| cycle | No | ||
| module | No | ||
| status | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
work_item_updateD
| Name | Required | Description | Default |
|---|---|---|---|
| cycle | No | ||
| title | No | ||
| branch | No | ||
| module | No | ||
| status | No | ||
| priority | No | ||
| identifier | Yes | ||
| description | No | ||
| description_append | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
8 tool updates
v0.1.0- First observed
board - First observed
dependency_graph - First observed
project_get - First observed
timeline - First observed
work_item_create - First observed
work_item_get - First observed
work_item_list - First observed
work_item_update
TDQS
Scored across 8 tools
Most tools have distinct resource+action names (e.g., work_item_list vs work_item_get), but 'board' is a bare noun with unclear scope and could overlap with work_item_list or timeline. The three view-like tools (board, timeline, dependency_graph) are conceptually separate but lack descriptions to clarify boundaries.
Five tools follow a consistent resource_verb pattern (project_get, work_item_list, work_item_get, work_item_create, work_item_update), but 'board', 'timeline', and 'dependency_graph' break that pattern as bare nouns. The mix is readable but not uniform.
Eight tools is a well-scoped number for a project management server, falling comfortably within the ideal 3–15 range. Each tool appears to cover a distinct operation or view without excessive redundancy.
The surface covers create, read (list/get), and update for work items, but lacks a delete operation and any create/list/update for projects (only project_get is present). Board and timeline tools are read-only, which may be acceptable but leaves lifecycle gaps.
Related MCP Connectors
Repositories, work items with typed criteria, merge requests, specs and wikis
Track stories, organize sprints, and manage project workflows across your team
Track issues, projects and dependencies with your agent in a workspace you control.
Durable, shareable and governed project memory with smart triage and explicit project composition.
Related MCP Servers
- AlicenseBqualityBmaintenanceProvides comprehensive tools for managing GitHub projects, milestones, tasks, and sprints. This server integrates deeply with GitHub Projects V2, offering features like automated kanban workflows, sprint planning, and custom field management.211,137 npm105MIT
- AlicenseNot gradedqualityDmaintenanceProvides project management capabilities through terminal, web UI, or MCP stdio, including plans, code analysis, and filesystem-safe operations.6 npmMIT
- FlicenseNot gradedqualityAmaintenanceEnables MCP clients to read a project's Git-backed kickoff, acceptance criteria, handoff package, progress, and next step, and to append validated, audited progress events as project records. It provides short-lived scoped credentials and fail-closed tool allowlisting for safe, resumable AI-assisted development.-
- FlicenseNot gradedqualityAmaintenanceEnables Codex and MCP clients to read a project's kickoff card, acceptance criteria, AGENTS rules, handoff package, progress, Git trail, and next step, and to append validated, audited, idempotent progress events tied to project-record Git commits.-