Planning System MCP Server
This MCP server enables AI agents to interact with a comprehensive planning system for project management through the following capabilities:
Plan Management Create, update, delete, and list plans with status tracking (draft, active, completed, archived). Retrieve full hierarchical structure or comprehensive summaries of plans.
Node Operations (Phases, Tasks, Milestones) Create nodes with rich metadata (title, description, type, status, due dates, agent instructions, acceptance criteria). Update, delete, move, and reorder nodes within the hierarchy. Get full node context (children, logs, artifacts) or ancestry path from root to a specific node. Batch update multiple nodes in a single operation.
Universal Search Query across global, plan, or node scopes with filters for type, status, and result limits.
Logging & Collaboration Add and retrieve log entries (progress, reasoning, challenge, decision, comment) with tagging and filtering support.
Artifact Management Add, get, search, list, and batch retrieve artifacts associated with nodes, including metadata and content type support.
Dependency Analysis Create dependency edges with cycle detection, list dependencies, analyze impact scenarios, and identify critical paths.
Progressive Context Loading Retrieve task context at configurable depth levels (1–4) with token budgeting for efficient agent context management, plus dependency-aware task suggestions.
RPI Chains Create structured Research→Plan→Implement task decompositions with automatic dependency wiring.
Transport Flexibility Supports stdio mode for local use and HTTP/SSE mode for remote or cloud deployment.
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., "@Planning System MCP Server search for all active tasks in the product launch plan"
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.
AgentPlanner MCP Server
MCP server for AgentPlanner — AI agent orchestration with planning, dependencies, knowledge graphs, and human oversight. Works with Claude Desktop, Claude Code, ChatGPT, Cursor, Windsurf, Cline, and any MCP-compatible client.
Prerequisites
An AgentPlanner account at agentplanner.io
An API token (Settings > API Tokens in the AgentPlanner UI)
Related MCP server: JJ Planner MCP Server
Setup
Claude Desktop — one-click install (.mcpb)
The fastest path. Download agent-planner.mcpb from the latest release, double-click it, and Claude Desktop will install the extension and prompt for your AgentPlanner API token. No Node.js setup, no JSON editing.
To build the bundle yourself:
npm run build:mcpb # produces agent-planner.mcpb
npm run validate:mcpb # schema-check manifest.jsonManual config (Claude Desktop, Claude Code, Cursor, etc.)
Add to your MCP client config (claude_desktop_config.json, .cursor/mcp.json, etc.):
{
"mcpServers": {
"agentplanner": {
"command": "npx",
"args": ["-y", "agent-planner-mcp"],
"env": {
"API_URL": "https://agentplanner.io/api",
"USER_API_TOKEN": "your_token_here"
}
}
}
}Thin local client (v1)
A lightweight CLI loop for task-driven workflows. No MCP client required — useful when an agent (Claude Code, OpenClaw, a script) just needs to read its current task as files and write status back.
Mental model
AgentPlanner (the API) is the source of truth.
.agentplanner/files are a regeneratable cache, written by the CLI for the agent to read.The agent works in the real repo. Status changes flow back via explicit writeback commands. There is no live sync.
Running locally? See agent-planner/LOCAL_QUICKSTART.md for the 5-minute path to a full local stack you can point this CLI at. Use
--api-url http://localhost:3000in theloginstep below.
The loop
# 1. Login — saves credentials and auto-selects a default plan
# (pass --plan-id to pick one, or it auto-selects if you have exactly one plan)
npx agent-planner-mcp login --token <token> --api-url https://agentplanner.io/api [--plan-id <id>]
# Localhost variant (after `docker compose -f docker-compose.local.yml up`):
npx agent-planner-mcp login --token <token> --api-url http://localhost:3000
# 2. See your task queue
npx agent-planner-mcp tasks [--plan-id <id>]
# 3. Pick the next task and pull context (claims it for 30 minutes)
npx agent-planner-mcp next [--plan-id <id>]
# Force a fresh recommendation even if you have active work:
npx agent-planner-mcp next --fresh
# 4. Or pull context for a specific plan/node (no claim, no status change)
npx agent-planner-mcp context --plan-id <plan-id> --node-id <node-id>
# If a default plan is set, --plan-id can be omitted:
npx agent-planner-mcp context --node-id <node-id>
# 5. Explicit writeback. No live sync.
npx agent-planner-mcp start # claim + mark in_progress
npx agent-planner-mcp blocked --message "Waiting on API decision"
npx agent-planner-mcp done --message "Implemented and verified"next resolution order
next is a smart picker. It resolves in this order:
Resume — if any task in scope is
in_progress, pick it. (Source:resume_in_progress.)Recommend — call
suggest_next_tasks(dependency- and RPI-aware) for a fresh pick. (Source:suggest_next_tasks.)Fallback — first
not_startedtask in your queue. (Source:my_tasks_fallback.)
tasks is the queue view; next is the smart picker; next --fresh skips step 1 and forces a fresh recommendation even when active work exists.
What start, blocked, done actually do
Command | Status | Claim | Log entry | Learning written to Graphiti |
|
| claim (30m TTL) | — | — |
|
| release |
| — |
|
| release |
| yes (entry_type: |
All hooks are best-effort: claim/release/learning failures do not block the status update. Claim collisions (another agent already holds the lease) are reported but not fatal.
What current-task.md surfaces
Beyond title, description, agent_instructions, and acceptance criteria, the generated current-task.md includes BDI signals from the API responses already being fetched:
Plan health —
quality_score, rationale,coherence_checked_at(or "never")Coherence warning — flagged when
node.coherence_statusiscontradiction_detectedorstale_beliefs, with concrete next-step pointers (check_contradictions,recall_knowledge)Detected contradictions — listed when present in the node context
Task mode — shown when not
free(RPI awareness forresearch/plan/implement)Linked goals, relevant knowledge (top 5), plan progress snapshot
When to use CLI vs MCP vs API skill
You want… | Use |
Zero-setup local task context for any coding agent (Claude Code, OpenClaw, scripts) | CLI (this thin client) |
Rich, structured tool access from inside an MCP-aware agent (Claude Desktop, Cursor, etc.) | MCP (run |
Direct programmatic integration from your own service | API (REST endpoints; same routes the MCP and CLI use) |
The CLI is intentionally thin: it covers the read context + writeback loop and nothing else. For decomposition, dependency creation, knowledge graph queries, RPI chains, coherence runs, and goal management, use the MCP server (or the API directly).
Agent Loop Facade
AgentPlanner API now exposes a narrow /agent/* facade for the main autonomous loop. MCP uses this facade when available and falls back to older domain endpoints for self-hosted older APIs.
Primary mappings:
MCP tool | Preferred API endpoint |
|
|
|
|
|
|
|
|
|
|
Validation:
npm run validate:mcp-loopThis checks that the MCP tools route through the facade for briefing, task claim/start, and session completion/blocking.
Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"agent-planner": {
"command": "npx",
"args": ["-y", "agent-planner-mcp"],
"env": {
"USER_API_TOKEN": "your-token",
"API_URL": "https://agentplanner.io/api"
}
}
}
}Config location: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) | %APPDATA%\Claude\claude_desktop_config.json (Windows)
Claude Code
claude mcp add agent-planner -- npx -y agent-planner-mcpThen set the env vars USER_API_TOKEN and API_URL=https://agentplanner.io/api.
ChatGPT
Settings > Apps > Advanced > Developer mode
Add MCP Server > URL:
https://agentplanner.io/mcpAuth type: API Key > enter your token from agentplanner.io Settings
Cursor
Add to .cursor/mcp.json in your project root:
{
"mcpServers": {
"agent-planner": {
"command": "npx",
"args": ["-y", "agent-planner-mcp"],
"env": {
"USER_API_TOKEN": "your-token",
"API_URL": "https://agentplanner.io/api"
}
}
}
}Windsurf
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"agent-planner": {
"command": "npx",
"args": ["-y", "agent-planner-mcp"],
"env": {
"USER_API_TOKEN": "your-token",
"API_URL": "https://agentplanner.io/api"
}
}
}
}Cline (VS Code)
Add the same JSON config to your Cline MCP settings in VS Code.
Any HTTP MCP Client
Endpoint:
https://agentplanner.io/mcpDiscovery:
https://agentplanner.io/.well-known/mcp.jsonAuth header:
Authorization: ApiKey <your-token>Transport: Streamable HTTP (MCP 2025-03-26)
Key Features
39 BDI-aligned tools for state, goals, committed actions, and workspace/blueprint management — no CRUD shapes, every tool answers a whole agentic question
Full mutation surface — agents and humans-via-agents can manage every plan/node/org property, plus workspaces and reusable blueprints, without leaving the conversation; UI is optional inspection
Draft-status seam — autonomous agent creation lands as drafts surfacing in the dashboard pending queue; human-directed creation defaults to active
Dependency graph — cycle detection, impact analysis, critical path
Progressive context — 4-layer context assembly with token budgeting
Knowledge graph — temporal knowledge via Graphiti (entities, facts, contradictions)
RPI chains — Research → Plan → Implement task decomposition (one-call shortcut)
Task claims — TTL-based locking for multi-agent coordination
Organizations — multi-tenant isolation with member management
Available Tools (v1.5)
Beliefs (read state)
briefing— bundled mission control state in one calllist_plans— list plans with optional status/visibility/text filters; returns ids, status, last update, and link counts so you can pick a plan without round-trippingbriefingtask_context— single task at progressive depth 1-4goal_state— single goal deep-dive (details + quality + progress + bottlenecks + gaps)recall_knowledge— knowledge graph query (facts, entities, episodes, contradictions)search— text search across plans/nodesplan_analysis— impact, critical path, bottlenecks, coherence
Desires (goals)
list_goals— goals with health rollupupdate_goal— atomic goal update (subsumes link/unlink/achievers)create_goal— create a new top-level goal (no parent)derive_subgoal— create a sub-goal under an existing parentrecord_criterion_progress— record the latest observed value of a goal's success criterion (e.g. a metric moved 40→72); the write that makes goal attainment real
Intentions — execution
claim_next_task— pick + claim + load context (one call)update_task— atomic status + log + claim release + learningrelease_task— explicit handoffqueue_decision— escalate to human (real decision queue)resolve_decision— pick up human's answer (atomically materializes anyproposed_subtasks)add_learning— record knowledge episode
Intentions — creation
form_intention— create plan + initial tree under a goal, atomicallyextend_intention— add children under an existing parent (lightweight)propose_research_chain— RPI triple with 2 blocking edges, in one call
Intentions — structural mutation
update_plan— edit any plan propertyupdate_node— edit any node property except statusmove_node— reparent within plan; cycle-safelink_intentions/unlink_intentions— manage dependency edgesdelete_plan/delete_node— soft-delete viastatus='archived'(recoverable)
Intentions — sharing & collaboration
share_plan— atomic visibility + add/remove collaboratorsinvite_member— add user to org (by user_id or email)update_member_role— owner-only role changeremove_member— owner/admin removes non-owner member
Workspaces & Blueprints
list_workspaces— list workspaces (goal/plan folders) in an organizationcreate_workspace— create a new workspace inside an organization (slug auto-generated and de-duped)list_blueprints— list blueprints visible to you (owned + public/unlisted), filterable by scope/visibilitysave_as_blueprint— snapshot a live plan as a reusable plan-scope blueprint (structure + agent_instructions + dependencies; excludes run-state)fork_blueprint— fork a plan-scope blueprint into a target workspace as a new plan (statuses reset, lineage recorded)delete_blueprint— hard-delete a blueprint you own (already-forked plans are unaffected)
Utility
get_started— dynamic reference for new agents
See SKILL.md for full descriptions, the human-steering scenarios (A/B/C), and status='draft' vs status='active' guidance.
LLM Skill Reference
See SKILL.md for a complete reference designed to be consumed by LLMs. Include it in system prompts or agent configurations to give any LLM full knowledge of how to use AgentPlanner tools effectively.
See AGENT_GUIDE.md for a quick reference card.
Transport Modes
stdio (default)
For local use with Claude Desktop, Claude Code, Cursor, Windsurf, Cline:
npx agent-planner-mcpHTTP/SSE
For remote access (ChatGPT, cloud deployments, multi-agent systems):
MCP_TRANSPORT=http npx agent-planner-mcp
# Listens on http://127.0.0.1:3100 (override with PORT)Transport is Streamable HTTP (MCP 2025-03-26); auth via Authorization: ApiKey <your-token>. Production endpoint: https://agentplanner.io/mcp (discovery at https://agentplanner.io/.well-known/mcp.json).
Local Development
git clone https://github.com/TAgents/agent-planner-mcp.git
cd agent-planner-mcp
npm install
npm run setup # Interactive setup wizard
npm run dev # Dev server with hot reloadEnvironment Variables
Variable | Description | Default |
| AgentPlanner API URL |
|
| API token (required) | — |
|
|
|
| HTTP mode port |
|
| Environment |
|
License
MIT License - see LICENSE for details.
Support
GitHub Releases for version history and release notes
Available Tools
37 toolsadd_learningA
Record a knowledge episode. Use after research, on decisions, or when discovering important context. Graphiti extracts entities/relationships automatically. Surfaces coherence_warnings if the new content contradicts existing facts.
Inputs: content (required), scope, entry_type, source_description.
briefingA
Mission control state in one call. Returns goal health summary, pending decisions, my tasks, recent activity, and a top recommendation. Use this as the single read for Cowork live artifacts and the autopilot's first call.
Inputs: scope, goal_id, plan_id, recent_window_hours.
claim_next_taskA
Pick the next task in scope, claim it, and return its context — all in one call. Resolution order: (1) resume any in_progress task, (2) suggest_next_tasks, (3) my_tasks fallback. Pass fresh:true to skip the resume step.
Inputs: scope (required), ttl_minutes, fresh, context_depth, +1 more.
create_goalA
Create a new top-level goal (no parent). Use this when a human asks you to set up a goal — agents create goals directly, no UI step required. For a goal that contributes to an existing one, use derive_subgoal instead. Defaults to status='active' (live immediately); pass status='draft' only if you want it to sit in the pending queue for review. Lands in the user's active organization's default workspace unless workspace_id is given.
Inputs: title (required), description, type, status, +3 more.
create_workspaceA
Create a new workspace inside an organization. Returns the new workspace row. The slug is auto-generated from the title and de-duplicated within the org.
Inputs: organization_id (required), title (required), description, icon, +1 more.
delete_nodeA
Soft-delete a node by setting status='archived'. Cascades to children by default. Recoverable via update_task({status: 'not_started'}).
Inputs: node_id (required), plan_id, reason, cascade_children.
delete_planA
Soft-delete a plan by setting status='archived'. Recoverable via update_plan({status: 'active', restore: true}). Hard delete is not agent-callable — use REST + admin token if absolutely needed.
Inputs: plan_id (required), reason.
derive_subgoalA
Create a sub-goal under an existing parent goal (parent_goal_id required). For a new top-level goal, use create_goal instead. Defaults to status='active'; pass status='draft' for autonomous loops so a human can review before promotion. Drafts surface in the dashboard pending queue.
Inputs: parent_goal_id (required), title (required), rationale (required), description, +4 more.
extend_intentionA
Add children under an existing phase or task. Use when an agent has implicit authority to decompose work (e.g., a parent task they have claimed). For high-stakes structural proposals, use queue_decision with proposed_subtasks instead. Defaults to status='active'.
Inputs: parent_id (required), rationale (required), children (required), plan_id.
fork_blueprintA
Fork a plan-scope blueprint into a target workspace. Creates a new plan inside that workspace with the blueprint's structure (nodes, dependencies, agent_instructions). All node statuses reset to 'not_started'. The new plan's forked_from_blueprint_id records lineage.
Inputs: blueprint_id (required), workspace_id (required), title.
form_intentionA
Create a plan that achieves a goal, including an initial phase/task tree, in one call. Declare execution order inline: give nodes a ref and list prerequisite refs/titles in depends_on to create 'blocks' edges in the same call — don't ship a bare hierarchy. The response returns a structure summary and warns (created_without_dependencies) when a multi-task plan has no edges. Defaults to status='active' for human-directed creation; pass status='draft' for autonomous loops so a human can review before promotion. Drafts surface in the dashboard pending queue and auto-promote to active when work begins on any node.
Inputs: goal_id (required), title (required), rationale (required), description, +3 more.
get_startedA
Onboarding for new agents. Returns the BDI tool surface map and recommended workflows: mission control loop (Cowork), single-task session (Code/CLI), multi-agent claiming (OpenClaw).
Inputs: user_role.
goal_stateA
Comprehensive single-goal read: details, quality assessment, progress, bottlenecks, knowledge gaps, pending decisions, recent activity. Replaces get_goal + goal_path + goal_progress + goal_knowledge_gaps + assess_goal_quality.
Inputs: goal_id (required).
invite_memberA
Add a user to an organization by user_id or email. Caller must be org owner or admin. If email is provided and the user doesn't exist, the API returns 404 (email-invite flow stays UI-only).
Inputs: organization_id (required), user_id, email, role.
link_intentionsA
Create a dependency edge between two existing tasks. Use to express discovered ordering constraints (e.g., agent realizes task B requires task A's output). Server rejects cycles. Both tasks must be in the same plan.
Inputs: from_task_id (required), to_task_id (required), rationale (required), relation.
list_blueprintsA
List blueprints visible to the user (owned + public/unlisted). Filter by scope ('plan' or 'workspace'), visibility, or owner_only=true.
Inputs: scope, visibility, owner_only.
list_goalsB
List goals with health rollup. Returns aggregate counts (on_track/at_risk/stale) plus per-goal summary.
Inputs: filter.
list_plansA
List plans with optional filters by status, visibility, or text query. Returns id, title, status, visibility, last update, and link counts so you can pick a plan to operate on without round-tripping briefing.
Inputs: filter.
list_workspacesA
List workspaces in an organization. A workspace is a folder that owns goals + plans. Returns archived workspaces only when include_archived=true.
Inputs: organization_id (required), include_archived.
move_nodeA
Reparent a node within the same plan. Cycle-safe (server rejects moves that would create a tree cycle). Optional position sets the order_index among siblings.
Inputs: node_id (required), new_parent_id (required), plan_id, position.
plan_analysisC
Advanced plan reads: impact analysis (delay/block/remove), critical path, bottleneck list, or coherence check.
Inputs: plan_id (required), type (required), node_id, scenario.
propose_research_chainA
Create a Research → Plan → Implement triple under an existing parent task or phase. The Research task feeds Plan; Plan feeds Implement (via 'blocks' dependency edges). Use when tackling work with significant unknowns. Defaults to status='active'.
Inputs: parent_id (required), research_question (required), implementation_target (required), rationale (required), +1 more.
queue_decisionA
Queue a decision for human review. Writes to the real decisions table (not the knowledge graph). Replaces the autopilot pattern of calling add_learning with entry_type=decision and a 'DECISION NEEDED:' title prefix. Resolves via resolve_decision.
Inputs: title (required), context (required), smallest_input_needed (required), plan_id, +6 more.
recall_knowledgeA
Universal knowledge graph query. Returns facts, entities, recent episodes, and contradictions in one shape. Use result_kind to control payload size. Replaces recall_knowledge legacy + find_entities + get_recent_episodes + check_contradictions.
Inputs: query, scope, since, entry_type, +3 more.
release_taskA
Release a claimed task without changing status. Use for explicit handoff or abandonment.
Inputs: task_id (required), plan_id, message.
remove_memberA
Remove a member from an organization. Caller must be org owner or admin (admins cannot remove other admins). Server rejects removing the org owner.
Inputs: organization_id (required), membership_id (required), reason.
resolve_decisionA
Resolve a pending decision. action is 'approve', 'defer', or 'reject'. Use this from Cowork artifact buttons or after a human responds in chat.
Inputs: decision_id (required), plan_id (required), action (required), message, +1 more.
save_as_blueprintA
Snapshot a live plan as a new plan-scope blueprint. Captures structure, agent_instructions, and dependencies. Excludes run-state (statuses, claims, knowledge episodes, logs, decisions, agent assignments).
Inputs: plan_id (required), title, description, visibility, +1 more.
searchB
Text search across plans, nodes, and content. Use for finding entities by title or fragment.
Inputs: query (required), scope, scope_id, filters.
task_contextA
Get progressive context for a task. Depth: 1 (task only), 2 (+ neighborhood), 3 (+ knowledge), 4 (+ extended plan/goals/transitive deps). For RPI implement tasks, automatically includes research+plan outputs from the chain.
Inputs: task_id (required), depth, token_budget.
unlink_intentionsC
Remove a dependency edge by id.
Inputs: dependency_id (required), plan_id (required), reason.
update_goalA
Atomic goal update. Subsumes update_goal + link_plan_to_goal + unlink_plan_from_goal + add_achiever + remove_achiever. All changes apply together.
Inputs: goal_id (required), changes (required).
update_member_roleA
Change a member's role within an organization. Caller must be org owner. Server rejects demoting the last admin.
Inputs: organization_id (required), membership_id (required), new_role (required).
update_nodeA
Edit any node property atomically: title, description, node_type, task_mode, agent_instructions, metadata. Status transitions belong on update_task (which handles claim/log side effects). Rejects node_type changes when the node has children.
Inputs: node_id (required), plan_id, title, description, +4 more.
update_planA
Edit any plan property atomically: title, description, status, visibility, GitHub linkage, metadata. Use status='archived' to soft-delete (recoverable via status='active' + restore=true). Hard delete stays REST-only with admin auth.
Inputs: plan_id (required), title, description, status, +3 more.
update_taskA
Atomic task state transition. Updates status, optionally appends a log entry, optionally releases the claim. Idempotent on identical inputs. Replaces quick_status + add_log + release_task fan-out.
Inputs: task_id (required), plan_id, status, log_message, +5 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 37 tools
Most tools have distinct purposes (e.g., create_goal vs derive_subgoal, update_task vs update_node), but some overlap exists (e.g., add_learning vs queue_decision for recording, briefing vs goal_state for read). Descriptions help differentiate, but with 37 tools, occasional confusion is possible.
All tools follow a consistent verb_noun pattern (e.g., create_goal, update_task, list_plans). Even compound verbs like claim_next_task and propose_research_chain fit the pattern. No mixing of conventions.
37 tools is quite high for a single server, covering goals, plans, tasks, workspaces, knowledge, decisions, and collaboration. While each tool serves a specific need, the number feels heavy and may overwhelm agents, though it is justified by the broad domain.
The toolset covers core CRUD for goals, plans, tasks, and workspaces, plus knowledge and decision management. However, gaps exist: no list_members (only invite/remove/update), no update_workspace, and no tool to view all pending decisions. These missing features may cause friction.
Maintenance
Related MCP Connectors
The plan your AI agents work from. Project management and customer feedback for agent teams.
One project plan that you, your team and each of your AIs read and write.
Create, read and live-edit visual boards, Kanban plans, Gantt timelines and diagrams with AI agents.
AI-native task management: list, create, update and archive tasks with rich context for AI agents
Related MCP Servers
- AlicenseCqualityDmaintenanceProvides comprehensive project management capabilities through the Helios-9 API, enabling AI agents to create and manage projects, tasks, initiatives, and documents with full hierarchy support and AI-optimized metadata.6520 npm2MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to manage projects, tasks, and schedules in JJ Planner through CRUD operations.5 npm-
- AlicenseNot gradedqualityDmaintenanceEnables AI orchestrators to manage hierarchical implementation roadmaps with phases, tasks, and plan-change tracking.Apache 2.0
- AlicenseNot gradedqualityBmaintenanceHelps AI agents decompose goals into costed execution plans, checkpoint progress with deviation tracking, and learn from past project data.31 npmMIT