MCP server intelligence profile

Project MCP Server

Intent-based project documentation server that automatically maps natural language queries to the right sources (plans, todos, roadmap, docs) and provides comprehensive task management with dependency tracking, backlog promotion, and archival workflows

Local Onlypouyanafisi
Awaiting current scanNpm · 3.3.0

The selected current version does not yet have completed public verification. Unknown does not mean clean or vulnerable.

1Distribution channel
42Independently observed tools
0Linked remote endpoints
AvailableVersion intelligence

Detailed security scan evidence is not public for this MCP yet. Public identity, registry metadata, and independently observed protocol inventory remain available.

Install and connect

Installation and connection instructions are shown only when supported by retained package, repository, or endpoint evidence.

Install project-mcp from npm

Version 3.3.0 declares 1 executable entrypoint.

npm install --save-exact project-mcp@3.3.0
npx -y -p project-mcp@3.3.0 project-mcp
MCP client configuration example
{
  "mcpServers": {
    "project-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "-p",
        "project-mcp@3.3.0",
        "project-mcp"
      ]
    }
  }
}

Identity

Canonical slugproject-mcp-de5a4abcDeploymentLocal Only
Canonical packagenpm:project-mcpRepositorypouyanafisi/project-mcp
First publishedLatest release
Last security verificationClassification confidence90%
PublicationDraftOfficial distributionNot verified

Distributions

ChannelIdentifierCurrent versionVersionsSource
npmproject-mcp3.3.01Repository

Current release

PackageVersionPublished / observedInventorySecurity scan
npmproject-mcp3.3.0CurrentSep 5, 202642 toolsPartial · 1 resources · 13 promptsEvidence restricted
Enterprise protection

Continuously monitor this MCP for security risk

Independently scan the exact version your agents use, receive alerts when its risk changes, and investigate every finding with retained version evidence.

  • Independent exact-version security scans
  • Continuous release and vulnerability monitoring
  • Risk-change alerts with capability context
  • Historical evidence and API exports
Custom pricingContact salesTailored to your organization, integrations, data needs, and support requirements.

Current version evidence

No public current-version evidence is available yet.

Current protocol inventory

2025-06-18Negotiated protocol
project-mcpServer-reported name
3Capability groups
Aug 17, 2026Observed

Tools 42

ToolCategoryAnnotationsRisk
add_decisionAdds a single architecture decision record (ADR) to DECISIONS.md. Creates a structured entry with title, context, decision, and consequences sections.
Input schema
{
  "type": "object",
  "properties": {
    "title": {
      "type": "string",
      "description": "Title of the decision (e.g., \"Use PostgreSQL for primary database\")."
    },
    "context": {
      "type": "string",
      "description": "The context and problem statement that led to this decision."
    },
    "decision": {
      "type": "string",
      "description": "The decision that was made."
    },
    "consequences": {
      "type": "string",
      "description": "The positive and negative consequences of the decision."
    },
    "status": {
      "type": "string",
      "description": "Status of the decision. Default: \"accepted\".",
      "enum": [
        "proposed",
        "accepted",
        "deprecated",
        "superseded"
      ],
      "default": "accepted"
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Tags for categorization (e.g., [\"database\", \"infrastructure\"])."
    }
  },
  "required": [
    "title",
    "decision"
  ]
}
add_roadmap_milestoneAdds a milestone or phase to ROADMAP.md. Creates a structured entry with title, description, target date, and deliverables.
Input schema
{
  "type": "object",
  "properties": {
    "title": {
      "type": "string",
      "description": "Milestone title (e.g., \"v1.0 Release\", \"Q1 2025\")."
    },
    "description": {
      "type": "string",
      "description": "Description of the milestone."
    },
    "target_date": {
      "type": "string",
      "description": "Target date (e.g., \"2025-03-01\", \"Q1 2025\")."
    },
    "deliverables": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "List of deliverables for this milestone."
    },
    "status": {
      "type": "string",
      "description": "Status of the milestone. Default: \"planned\".",
      "enum": [
        "planned",
        "in_progress",
        "completed",
        "delayed"
      ],
      "default": "planned"
    }
  },
  "required": [
    "title"
  ]
}
add_to_backlogAdds a single item to BACKLOG.md. Use this for quick task creation without bulk import. Items are added to the specified priority section and can later be promoted to active work.
Input schema
{
  "type": "object",
  "properties": {
    "title": {
      "type": "string",
      "description": "The task title/description."
    },
    "project": {
      "type": "string",
      "description": "Project prefix for the task ID (e.g., \"AUTH\", \"API\")."
    },
    "priority": {
      "type": "string",
      "description": "Priority level. Default: \"P2\".",
      "enum": [
        "P0",
        "P1",
        "P2",
        "P3"
      ],
      "default": "P2"
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Optional tags for categorization."
    },
    "phase": {
      "type": "string",
      "description": "Optional phase/milestone this task belongs to."
    },
    "subtasks": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Optional subtasks to include."
    }
  },
  "required": [
    "title",
    "project"
  ]
}
archive_taskArchives a completed task by moving it from todos/ to archive/. Keeps the active task queue small and focused. Archived tasks are preserved for history but excluded from get_next_task.
Input schema
{
  "type": "object",
  "properties": {
    "task_id": {
      "type": "string",
      "description": "The task ID to archive (e.g., \"AUTH-001\"). Must have status \"done\"."
    },
    "force": {
      "type": "boolean",
      "description": "Archive even if not marked done. Default: false.",
      "default": false
    }
  },
  "required": [
    "task_id"
  ]
}
archive_thoughtArchives a processed thought file by moving it to .project/thoughts/todos/.archive/. Use this after you've created tasks from a thought file to keep the active thoughts folder clean. Also logs the archive action with timestamp and created task IDs.
Input schema
{
  "type": "object",
  "properties": {
    "file": {
      "type": "string",
      "description": "The thought file to archive (e.g., \"my-ideas.md\")."
    },
    "created_tasks": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Array of task IDs that were created from this thought (e.g., [\"AUTH-001\", \"AUTH-002\"])."
    },
    "notes": {
      "type": "string",
      "description": "Optional notes about the processing (e.g., \"Consolidated 5 items into 2 tasks\")."
    }
  },
  "required": [
    "file"
  ]
}
check_project_stateChecks the current state of project management files. Returns which files exist (.project/index.md, ROADMAP.md, TODO.md, STATUS.md, DECISIONS.md) and provides a summary of project state. Use this before making changes to understand what exists.
Input schema
{
  "type": "object",
  "properties": {}
}
create_or_update_decisionsCreates or updates the DECISIONS.md file in .project/ directory. Use this when documenting architecture decisions, trade-offs, or rationale. Helps maintain a decision log for the project.
Input schema
{
  "type": "object",
  "properties": {
    "content": {
      "type": "string",
      "description": "The decision content to add. Should include the decision, context, trade-offs, and rationale."
    },
    "decisionTitle": {
      "type": "string",
      "description": "Optional: Title for the decision entry. If not provided, will extract from content or use a timestamp."
    },
    "replace": {
      "type": "boolean",
      "description": "If true, replaces the entire file. If false (default), merges with existing content.",
      "default": false
    }
  },
  "required": [
    "content"
  ]
}
create_or_update_indexCreates or updates the index.md file in .project/ directory. This is the contract file that defines how agents should interpret sources. Use this when setting up project structure or updating source mappings.
Input schema
{
  "type": "object",
  "properties": {
    "content": {
      "type": "string",
      "description": "The contract content to add. Should define source mappings and how agents should interpret different queries."
    },
    "replace": {
      "type": "boolean",
      "description": "If true, replaces the entire file. If false (default), merges with existing content.",
      "default": false
    }
  },
  "required": [
    "content"
  ]
}
create_or_update_roadmapCreates or updates the ROADMAP.md file in .project/ directory. Use this when planning future work, milestones, or phases. If the file exists, intelligently merges new content with existing roadmap.
Input schema
{
  "type": "object",
  "properties": {
    "content": {
      "type": "string",
      "description": "The roadmap content to add. Can be a new section, milestone, or phase. The tool will merge with existing content if the file exists."
    },
    "section": {
      "type": "string",
      "description": "Optional: The section to add to (e.g., \"Q1 2025\", \"Phase 1\", \"Future Considerations\"). If not provided, will append to appropriate section or create new."
    },
    "replace": {
      "type": "boolean",
      "description": "If true, replaces the entire file. If false (default), merges with existing content.",
      "default": false
    }
  },
  "required": [
    "content"
  ]
}
create_or_update_statusCreates or updates the STATUS.md file in .project/ directory. Use this when updating project health, recent changes, metrics, or current phase. Automatically updates the "Last Updated" timestamp.
Input schema
{
  "type": "object",
  "properties": {
    "content": {
      "type": "string",
      "description": "The status update content. Can include current phase, health status, recent changes, metrics, risks, or next milestone."
    },
    "updateType": {
      "type": "string",
      "description": "Optional: Type of update: \"phase\", \"health\", \"changes\", \"metrics\", \"risks\", \"milestone\", \"general\". Helps organize the update appropriately.",
      "enum": [
        "phase",
        "health",
        "changes",
        "metrics",
        "risks",
        "milestone",
        "general",
        ""
      ]
    },
    "replace": {
      "type": "boolean",
      "description": "If true, replaces the entire file. If false (default), merges with existing content.",
      "default": false
    }
  },
  "required": [
    "content"
  ]
}
create_or_update_todoCreates or updates the TODO.md file in .project/ directory. Use this when adding tasks, marking items complete, or updating task status. Intelligently organizes tasks into sections (In Progress, Next Up, Blocked, Completed).
Input schema
{
  "type": "object",
  "properties": {
    "content": {
      "type": "string",
      "description": "The task or todo item to add. Can be a single task or multiple tasks. Use markdown checkbox format: \"- [ ] Task description\"."
    },
    "section": {
      "type": "string",
      "description": "Optional: The section to add to: \"in_progress\", \"next_up\", \"blocked\", \"completed\". If not provided, defaults to \"next_up\".",
      "enum": [
        "in_progress",
        "next_up",
        "blocked",
        "completed",
        ""
      ]
    },
    "markComplete": {
      "type": "string",
      "description": "Optional: Task description to mark as complete. Will move from current section to \"Completed\" section."
    },
    "replace": {
      "type": "boolean",
      "description": "If true, replaces the entire file. If false (default), merges with existing content.",
      "default": false
    }
  },
  "required": [
    "content"
  ]
}
create_taskCreates a new task with YAML frontmatter metadata. Uses Jira-like IDs (e.g., AUTH-001, API-042) for stable references. Supports dependencies, priorities, estimates, due dates, and tags. Agents can determine execution order by checking dependencies and priorities.
Input schema
{
  "type": "object",
  "properties": {
    "title": {
      "type": "string",
      "description": "The title of the task (e.g., \"Implement OAuth authentication\", \"Fix login bug\")."
    },
    "project": {
      "type": "string",
      "description": "Project/Epic identifier used in the task ID (e.g., \"AUTH\", \"API\", \"FRONTEND\"). Will be uppercased. The task ID will be {PROJECT}-{NNN}."
    },
    "description": {
      "type": "string",
      "description": "Detailed description of the task. Can include markdown formatting."
    },
    "owner": {
      "type": "string",
      "description": "Who is responsible for this task (e.g., \"cursor\", \"john-doe\", \"backend-team\")."
    },
    "priority": {
      "type": "string",
      "description": "Priority level: \"P0\" (critical/blocker), \"P1\" (high), \"P2\" (medium/default), \"P3\" (low).",
      "enum": [
        "P0",
        "P1",
        "P2",
        "P3"
      ],
      "default": "P2"
    },
    "status": {
      "type": "string",
      "description": "Current status: \"todo\" (not started), \"in_progress\" (being worked on), \"blocked\" (waiting on something), \"review\" (needs review), \"done\" (completed).",
      "enum": [
        "todo",
        "in_progress",
        "blocked",
        "review",
        "done"
      ],
      "default": "todo"
    },
    "depends_on": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Array of task IDs this task depends on (e.g., [\"AUTH-001\", \"AUTH-002\"]). Task cannot start until dependencies are done."
    },
    "blocked_by": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Array of task IDs or external blockers (e.g., [\"AUTH-003\", \"waiting-on-api-key\"]). Different from depends_on - these are blockers that prevent progress."
    },
    "estimate": {
      "type": "string",
      "description": "Time estimate (e.g., \"2h\", \"1d\", \"3d\", \"1w\"). Use h=hours, d=days, w=weeks."
    },
    "due": {
      "type": "string",
      "description": "Due date in YYYY-MM-DD format (e.g., \"2025-01-15\")."
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Array of tags for categorization (e.g., [\"security\", \"urgent\", \"tech-debt\", \"feature\"])."
    },
    "subtasks": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Array of subtask descriptions. Will be rendered as a checklist in the task."
    }
  },
  "required": [
    "title",
    "project"
  ]
}
delete_taskPermanently deletes a task from todos/. Use with caution - this cannot be undone. Consider using archive_task instead for completed tasks.
Input schema
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "The task ID to delete (e.g., \"AUTH-001\")."
    },
    "confirm": {
      "type": "boolean",
      "description": "Must be true to confirm deletion. Default: false.",
      "default": false
    }
  },
  "required": [
    "id"
  ]
}
get_backlogReads and returns the current backlog contents with optional filtering. Shows tasks organized by priority with counts and summary.
Input schema
{
  "type": "object",
  "properties": {
    "priority": {
      "type": "string",
      "description": "Filter by priority level.",
      "enum": [
        "P0",
        "P1",
        "P2",
        "P3",
        ""
      ]
    },
    "project": {
      "type": "string",
      "description": "Filter by project prefix."
    },
    "include_promoted": {
      "type": "boolean",
      "description": "Include already-promoted items. Default: false.",
      "default": false
    }
  }
}
get_decisionReads a specific architecture decision by ADR ID. Returns the full decision content including context, decision, and consequences.
Input schema
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "The ADR ID to retrieve (e.g., \"ADR-001\", \"001\", or just \"1\")."
    }
  },
  "required": [
    "id"
  ]
}
get_docGet the full content of a specific file. Supports files from .project/, root-level, or docs/. Use the path as returned from search results.
Input schema
{
  "type": "object",
  "properties": {
    "path": {
      "type": "string",
      "description": "Path to the file. Can be relative to project root (e.g., \".project/index.md\", \"README.md\", \"docs/architecture/ARCHITECTURE_SPEC.md\")."
    }
  },
  "required": [
    "path"
  ]
}
get_doc_structureGet the complete documentation directory structure with file paths and descriptions. Useful for understanding the organization of documentation.
Input schema
{
  "type": "object",
  "properties": {}
}
get_next_taskReturns the next task(s) that should be worked on. Considers: dependencies (only returns tasks whose dependencies are done), priority (P0 first), status (excludes done/blocked), and optionally filters by owner or project. This is the key tool for agentic execution - call this to know what to do next.
Input schema
{
  "type": "object",
  "properties": {
    "owner": {
      "type": "string",
      "description": "Filter by owner. Only return tasks assigned to this owner."
    },
    "project": {
      "type": "string",
      "description": "Filter by project. Only return tasks from this project."
    },
    "include_blocked": {
      "type": "boolean",
      "description": "Include blocked tasks in results. Default: false.",
      "default": false
    },
    "limit": {
      "type": "number",
      "description": "Maximum number of tasks to return. Default: 5.",
      "default": 5
    }
  }
}
get_roadmapReads the current roadmap content from ROADMAP.md. Returns milestones, phases, and planned work.
Input schema
{
  "type": "object",
  "properties": {
    "section": {
      "type": "string",
      "description": "Optional: Return only a specific section/milestone."
    }
  }
}
get_taskReads and returns a specific task by ID. Shows all metadata including frontmatter, description, subtasks, and notes.
Input schema
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "The task ID to read (e.g., \"AUTH-001\")."
    }
  },
  "required": [
    "id"
  ]
}
get_thoughtReads a specific thought file and returns its raw content for review.
Input schema
{
  "type": "object",
  "properties": {
    "file": {
      "type": "string",
      "description": "The thought file to read (e.g., \"my-ideas.md\")."
    },
    "category": {
      "type": "string",
      "description": "The category/subdirectory. Default: \"todos\".",
      "default": "todos"
    },
    "from_archive": {
      "type": "boolean",
      "description": "Read from archive instead of active thoughts. Default: false.",
      "default": false
    }
  },
  "required": [
    "file"
  ]
}
import_tasksParses a plan document and imports tasks to BACKLOG.md (not individual files). Use this to populate the backlog from a roadmap or requirements doc. Tasks stay in BACKLOG until promoted to active work via promote_task.
Input schema
{
  "type": "object",
  "properties": {
    "source": {
      "type": "string",
      "description": "Path to the source file to parse (e.g., \"ROADMAP.md\", \".project/ROADMAP.md\"). Can also be raw markdown content if source_type is \"content\"."
    },
    "source_type": {
      "type": "string",
      "description": "Type of source: \"file\" (path to file) or \"content\" (raw markdown). Default: \"file\".",
      "enum": [
        "file",
        "content"
      ],
      "default": "file"
    },
    "project": {
      "type": "string",
      "description": "Project prefix for task IDs (e.g., \"AUTH\", \"API\"). Required."
    },
    "phase": {
      "type": "string",
      "description": "Optional: Only import tasks from a specific phase/section."
    },
    "default_priority": {
      "type": "string",
      "description": "Default priority for tasks. Default: \"P2\".",
      "enum": [
        "P0",
        "P1",
        "P2",
        "P3"
      ],
      "default": "P2"
    },
    "dry_run": {
      "type": "boolean",
      "description": "If true, shows what would be imported without modifying BACKLOG.md. Default: false.",
      "default": false
    }
  },
  "required": [
    "source",
    "project"
  ]
}
init_projectInitializes the .project/ directory with all standard files following strict templates. Creates index.md (contract), TODO.md (dashboard), BACKLOG.md (prioritized work queue), ROADMAP.md, STATUS.md, DECISIONS.md, and todos/ directory. Use this to bootstrap a new project with proper structure.
Input schema
{
  "type": "object",
  "properties": {
    "project_name": {
      "type": "string",
      "description": "Name of the project. Used in headers and metadata."
    },
    "project_description": {
      "type": "string",
      "description": "Brief description of the project."
    },
    "overwrite": {
      "type": "boolean",
      "description": "If true, overwrites existing files. Default: false (skip existing).",
      "default": false
    }
  },
  "required": [
    "project_name"
  ]
}
lint_project_docsValidates project documentation against standards. Checks for required files, valid frontmatter, broken dependencies, missing fields, and formatting issues. Can auto-fix common problems. Run this before commits to ensure documentation quality.
Input schema
{
  "type": "object",
  "properties": {
    "fix": {
      "type": "boolean",
      "description": "If true, automatically fix issues that can be auto-corrected (missing timestamps, formatting, etc.). Default: false (report only).",
      "default": false
    },
    "strict": {
      "type": "boolean",
      "description": "If true, enforce stricter rules (all tasks must have estimates, due dates, descriptions). Default: false.",
      "default": false
    },
    "scope": {
      "type": "string",
      "description": "What to lint: \"all\" (everything), \"tasks\" (only task files), \"docs\" (only documentation files). Default: \"all\".",
      "enum": [
        "all",
        "tasks",
        "docs"
      ],
      "default": "all"
    }
  }
}
list_archived_tasksLists tasks in the archive/ directory. Shows completed work history with optional filtering by project or date.
Input schema
{
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "description": "Filter by project prefix."
    },
    "limit": {
      "type": "number",
      "description": "Maximum number of tasks to return. Default: 20.",
      "default": 20
    }
  }
}
list_archived_thoughtsLists all archived thought files with their processing history. Shows what thoughts were processed, when, and what tasks were created.
Input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "type": "number",
      "description": "Maximum number of archived thoughts to show. Default: 20.",
      "default": 20
    }
  }
}
list_decisionsLists all architecture decisions from DECISIONS.md with optional filtering by status or tag.
Input schema
{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "description": "Filter by status.",
      "enum": [
        "proposed",
        "accepted",
        "deprecated",
        "superseded",
        ""
      ]
    },
    "tag": {
      "type": "string",
      "description": "Filter by tag."
    }
  }
}
list_docsList all available documentation files organized by category. Use this to discover what documentation is available or to get an overview of the documentation structure.
Input schema
{
  "type": "object",
  "properties": {
    "category": {
      "type": "string",
      "description": "Optional: Filter by category. Options: product, architecture, operations, api, guides, reference, or leave empty for all.",
      "enum": [
        "product",
        "architecture",
        "operations",
        "api",
        "guides",
        "reference",
        ""
      ]
    }
  }
}
list_tasksLists all tasks with optional filtering. Returns a summary view of tasks organized by status and priority.
Input schema
{
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "description": "Filter by project."
    },
    "owner": {
      "type": "string",
      "description": "Filter by owner."
    },
    "status": {
      "type": "string",
      "description": "Filter by status.",
      "enum": [
        "todo",
        "in_progress",
        "blocked",
        "review",
        "done",
        ""
      ]
    },
    "priority": {
      "type": "string",
      "description": "Filter by priority.",
      "enum": [
        "P0",
        "P1",
        "P2",
        "P3",
        ""
      ]
    },
    "tag": {
      "type": "string",
      "description": "Filter by tag."
    }
  }
}
list_thoughtsLists all thought files in the .project/thoughts/ directory structure. Shows available brain dump files organized by category.
Input schema
{
  "type": "object",
  "properties": {
    "category": {
      "type": "string",
      "description": "Optional: Filter by thought category. Currently supported: \"todos\".",
      "enum": [
        "todos",
        ""
      ]
    },
    "include_archived": {
      "type": "boolean",
      "description": "Include archived thoughts in the listing. Default: false.",
      "default": false
    }
  }
}
manage_project_fileSmart tool that automatically determines which project file to create or update based on context. Use this when making changes to the project - it will check project state and determine if index.md, ROADMAP.md, TODO.md, STATUS.md, or DECISIONS.md should be created/updated. This is the primary tool for managing project documentation during development.
Input schema
{
  "type": "object",
  "properties": {
    "action": {
      "type": "string",
      "description": "The action being performed: \"planning\" (creates/updates ROADMAP), \"task\" (creates/updates TODO), \"status_change\" (creates/updates STATUS), \"decision\" (creates/updates DECISIONS), \"contract\" (creates/updates index), \"auto\" (automatically determines based on content).",
      "enum": [
        "planning",
        "task",
        "status_change",
        "decision",
        "contract",
        "auto"
      ]
    },
    "content": {
      "type": "string",
      "description": "The content to add or update. For \"auto\" mode, describe what you're doing and the tool will determine the appropriate file."
    },
    "fileType": {
      "type": "string",
      "description": "Optional: Force a specific file type. If not provided and action is \"auto\", the tool will determine automatically.",
      "enum": [
        "roadmap",
        "todo",
        "status",
        "index",
        "decisions",
        ""
      ]
    }
  },
  "required": [
    "action",
    "content"
  ]
}
process_thoughtsReads brain dump markdown files from .project/thoughts/todos/ and returns the content along with project context for analysis. This tool gathers: 1. **Raw thought content** - The unstructured brain dump as written 2. **Project context** - Existing tasks, roadmap milestones, decisions for reference 3. **Task format guide** - The YAML structure for creating tasks YOU (the LLM) should then analyze the content to: - Understand the user's intent (explicit, shadow/underlying, practical) - Identify logical task groupings (consolidate related items) - Determine appropriate priorities based on context - Create well-structured tasks using create_task - **After creating tasks, use archive_thought to archive the processed file** The tool does NOT automatically create tasks - it provides you with everything needed to make intelligent decisions about task creation.
Input schema
{
  "type": "object",
  "properties": {
    "file": {
      "type": "string",
      "description": "Specific thought file to process (e.g., \"my-ideas.md\"). If not provided, processes all files in thoughts/todos/."
    },
    "project": {
      "type": "string",
      "description": "Project prefix for task IDs when you create tasks (e.g., \"AUTH\", \"API\")."
    }
  },
  "required": [
    "project"
  ]
}
promote_taskPromotes a task from BACKLOG.md to an active YAML task file in todos/. Use this when starting work on a backlog item. Creates a full task file with YAML frontmatter, dependencies, and metadata.
Input schema
{
  "type": "object",
  "properties": {
    "task_id": {
      "type": "string",
      "description": "The task ID to promote from backlog (e.g., \"AUTH-001\")."
    },
    "owner": {
      "type": "string",
      "description": "Who will work on this task. Default: \"unassigned\".",
      "default": "unassigned"
    },
    "priority": {
      "type": "string",
      "description": "Priority override. If not set, uses priority from backlog.",
      "enum": [
        "P0",
        "P1",
        "P2",
        "P3",
        ""
      ]
    },
    "depends_on": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Task IDs this depends on (e.g., [\"AUTH-002\"]). Only active tasks can be dependencies."
    },
    "estimate": {
      "type": "string",
      "description": "Time estimate (e.g., \"2h\", \"1d\", \"3d\")."
    },
    "due": {
      "type": "string",
      "description": "Due date in YYYY-MM-DD format."
    }
  },
  "required": [
    "task_id"
  ]
}
remove_from_backlogRemoves an item from BACKLOG.md without promoting it. Use for tasks that are no longer needed or were added by mistake.
Input schema
{
  "type": "object",
  "properties": {
    "task_id": {
      "type": "string",
      "description": "The task ID to remove (e.g., \"AUTH-001\")."
    },
    "reason": {
      "type": "string",
      "description": "Optional reason for removal (for logging)."
    }
  },
  "required": [
    "task_id"
  ]
}
search_docsSearch only the docs/ directory for reference documentation. Use this when the user specifically asks for "docs" or "documentation". Returns relevant documentation chunks with file paths and content snippets.
Input schema
{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Search query. Can be a single word, multiple words, or a phrase. The search is semantic and will find relevant content even with partial matches."
    },
    "category": {
      "type": "string",
      "description": "Optional: Filter by documentation category. Options: product, architecture, operations, api, guides, reference, or leave empty for all.",
      "enum": [
        "product",
        "architecture",
        "operations",
        "api",
        "guides",
        "reference",
        ""
      ]
    },
    "maxResults": {
      "type": "number",
      "description": "Maximum number of results to return. Default is 10, maximum is 50.",
      "default": 10,
      "minimum": 1,
      "maximum": 50
    }
  },
  "required": [
    "query"
  ]
}
search_projectSearch across project sources with smart intent detection. IMPORTANT: "project docs" means APPLICATION documentation (docs/ + DECISIONS.md), NOT project management. Use intent "project_docs" when user says "project docs/documents/documentation" to search application documentation. Use intent "plan" for project management (status, todos, roadmap, backlog).
Input schema
{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Search query. Can be a single word, multiple words, or a phrase. The search is semantic and will find relevant content even with partial matches."
    },
    "intent": {
      "type": "string",
      "description": "Intent type to map to sources. \"project_docs\" searches docs/ + DECISIONS.md (application documentation). \"docs\" searches only docs/. \"plan/todos/roadmap/status/operational\" searches .project/ (project management). \"project\" searches everything. \"decisions\" searches only DECISIONS.md.",
      "enum": [
        "project",
        "project_docs",
        "docs",
        "decisions",
        "plan",
        "todos",
        "roadmap",
        "status",
        "operational",
        ""
      ]
    },
    "maxResults": {
      "type": "number",
      "description": "Maximum number of results to return. Default is 10, maximum is 50.",
      "default": 10,
      "minimum": 1,
      "maximum": 50
    }
  },
  "required": [
    "query"
  ]
}
search_tasksSearch tasks by keyword in title, description, or content. Returns matching tasks with relevance ranking.
Input schema
{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Search query (matches title, description, content)."
    },
    "project": {
      "type": "string",
      "description": "Filter by project."
    },
    "status": {
      "type": "string",
      "description": "Filter by status.",
      "enum": [
        "todo",
        "in_progress",
        "blocked",
        "review",
        "done",
        ""
      ]
    },
    "include_archived": {
      "type": "boolean",
      "description": "Include archived tasks in search. Default: false.",
      "default": false
    },
    "limit": {
      "type": "number",
      "description": "Maximum results to return. Default: 10.",
      "default": 10
    }
  },
  "required": [
    "query"
  ]
}
sync_todo_indexSyncs the parent TODO.md file with all tasks. Generates a dashboard view with tasks organized by status, priority counts, dependency graph, and execution order. This provides a bird's eye view of all work.
Input schema
{
  "type": "object",
  "properties": {
    "format": {
      "type": "string",
      "description": "Output format: \"dashboard\" (default, visual overview), \"table\" (compact table), \"kanban\" (by status columns).",
      "enum": [
        "dashboard",
        "table",
        "kanban"
      ],
      "default": "dashboard"
    }
  }
}
unarchive_taskRestores a task from archive/ back to todos/ for further work. Use when a completed task needs to be reopened.
Input schema
{
  "type": "object",
  "properties": {
    "task_id": {
      "type": "string",
      "description": "The task ID to unarchive (e.g., \"AUTH-001\")."
    },
    "status": {
      "type": "string",
      "description": "Status to set on restore. Default: \"todo\".",
      "enum": [
        "todo",
        "in_progress",
        "blocked",
        "review"
      ],
      "default": "todo"
    }
  },
  "required": [
    "task_id"
  ]
}
update_backlog_itemUpdates an item in BACKLOG.md. Can change priority, title, tags, or phase without promoting to active work.
Input schema
{
  "type": "object",
  "properties": {
    "task_id": {
      "type": "string",
      "description": "The task ID to update (e.g., \"AUTH-001\")."
    },
    "title": {
      "type": "string",
      "description": "New title for the task."
    },
    "priority": {
      "type": "string",
      "description": "New priority level (will move to new section).",
      "enum": [
        "P0",
        "P1",
        "P2",
        "P3"
      ]
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "New tags (replaces existing)."
    },
    "phase": {
      "type": "string",
      "description": "New phase/milestone."
    }
  },
  "required": [
    "task_id"
  ]
}
update_project_statusQuick status update for the project. Adds a timestamped entry to STATUS.md with the current status, changes, or notes.
Input schema
{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "description": "Current status summary (e.g., \"On track\", \"Blocked by API issues\")."
    },
    "health": {
      "type": "string",
      "description": "Project health indicator.",
      "enum": [
        "green",
        "yellow",
        "red"
      ]
    },
    "changes": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "List of recent changes or updates."
    },
    "blockers": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Current blockers or risks."
    },
    "next_milestone": {
      "type": "string",
      "description": "Next milestone or goal."
    }
  },
  "required": [
    "status"
  ]
}
update_taskUpdates an existing task by ID. Can update any field including status, priority, owner, dependencies, etc. Use this to transition tasks through workflow states.
Input schema
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "The task ID to update (e.g., \"AUTH-001\")."
    },
    "title": {
      "type": "string",
      "description": "New title for the task."
    },
    "description": {
      "type": "string",
      "description": "New description. Use \"append:TEXT\" to append to existing description."
    },
    "owner": {
      "type": "string",
      "description": "New owner for the task."
    },
    "priority": {
      "type": "string",
      "description": "New priority level.",
      "enum": [
        "P0",
        "P1",
        "P2",
        "P3"
      ]
    },
    "status": {
      "type": "string",
      "description": "New status. Transitioning to \"done\" will set completed date.",
      "enum": [
        "todo",
        "in_progress",
        "blocked",
        "review",
        "done"
      ]
    },
    "depends_on": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "New dependency list. Use \"add:ID\" or \"remove:ID\" to modify existing."
    },
    "blocked_by": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "New blocked_by list."
    },
    "estimate": {
      "type": "string",
      "description": "New time estimate."
    },
    "due": {
      "type": "string",
      "description": "New due date (YYYY-MM-DD)."
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "New tags list. Use \"add:TAG\" or \"remove:TAG\" to modify existing."
    },
    "add_subtask": {
      "type": "string",
      "description": "Add a new subtask to the task."
    },
    "complete_subtask": {
      "type": "string",
      "description": "Mark a subtask as complete (partial match on subtask text)."
    }
  },
  "required": [
    "id"
  ]
}

Resources 1

  • project-mcpproject://README.md

    > **Intent-based MCP server for project documentation** — Maps natural language

Resource templates 0

  • None observed.

Prompts 13

  • add_decisionadd_decision

    Record an architecture decision. Use when user says "record decision", "document decision", "ADR", or "architecture decision".

  • add_to_backlogadd_to_backlog

    Add a single item to the backlog. Use when user says "add to backlog", "queue this task", "backlog item", or "add future task".

  • get_backlogget_backlog

    View the current backlog. Use when user asks "show backlog", "what's in the queue", "backlog items", or "pending tasks".

  • get_next_taskget_next_task

    Find the next task to work on based on priorities and dependencies. Use when user asks "what should I do", "what's next", "what to work on", or "next task".

  • import_tasksimport_tasks

    Import tasks from a roadmap or plan document into BACKLOG.md. Use when user says "import tasks", "add tasks from roadmap", "populate backlog", or "convert plan to tasks".

  • init_projectinit_project

    Initialize a new project with standard documentation structure. Use when user says "start a project", "new project", "initialize project", or "set up project docs".

  • lint_projectlint_project

    Validate project documentation and check for issues. Use when user says "lint project", "check project files", "validate docs", or "project health check".

  • list_taskslist_tasks

    Show all tasks with their status. Use when user asks "show tasks", "list todos", "what tasks exist", or "task list".

  • project_overviewproject_overview

    Get an overview of the project, its status, and what work is in progress. Use when user asks "tell me about this project", "what is this project", "project status", or "what's going on".

  • promote_taskpromote_task

    Promote a task from backlog to active work. Use when user says "start task", "work on X", "begin task", or "activate task".

  • update_project_docsupdate_project_docs

    Update project documentation - the APPLICATION documentation that explains how the system works. Use when user says "update project docs", "update project documents", "update project documentation", "update application docs", or "document this". This is DIFFERENT from project management (status, todos, roadmap) - this updates the docs/ folder and DECISIONS.md which contain reference documentation about the application itself.

  • update_statusupdate_status

    Update project status. Use when user says "update status", "project status", "status update", or "how's the project".

  • update_taskupdate_task

    Update the status of a task. Use when user says "mark task done", "complete task", "task is blocked", or "start task".

Remote endpoints

EndpointTransportAuthenticationHealthObserved
No verified remote endpoint is linked.

Project MCP Server questions

How do I install Project MCP Server?

Install the selected package version with: npm install --save-exact project-mcp@3.3.0

What tools does Project MCP Server provide?

Project MCP Server exposed 42 tools during independent protocol observation, including add_decision, add_roadmap_milestone, add_to_backlog, archive_task, archive_thought, check_project_state, create_or_update_decisions, create_or_update_index, and others.

Is Project MCP Server secure?

The selected current version does not yet have completed public verification. Unknown does not mean clean or vulnerable.

Explore related MCP server guides

Curated product and capability guides containing this catalog record.

Official vs Community MCP Servers

Let’s talk about MCP security.

Share your details and our security team will contact you.