project-mcp 3.0.0 โ†’ 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -14,58 +14,15 @@ not just directory names.
14
14
 
15
15
  ---
16
16
 
17
- ## Table of Contents
18
-
19
- - [project-mcp](#project-mcp)
20
- - [Table of Contents](#table-of-contents)
21
- - [โšก Quick Start](#-quick-start)
22
- - [Install](#install)
23
- - [Configure](#configure)
24
- - [๐ŸŽฏ Why project-mcp?](#-why-project-mcp)
25
- - [๐Ÿ› ๏ธ Available Tools](#๏ธ-available-tools)
26
- - [Search Tools](#search-tools)
27
- - [Project Management Tools](#project-management-tools)
28
- - [Task Management Tools](#task-management-tools)
29
- - [Quality Tools](#quality-tools)
30
- - [๐Ÿ“‹ Task Management System](#-task-management-system)
31
- - [Workflow](#workflow)
32
- - [Task File Format (Active Tasks)](#task-file-format-active-tasks)
33
- - [Agent Execution Loop](#agent-execution-loop)
34
- - [Key Features](#key-features)
35
- - [๐Ÿ—๏ธ Project Structure Guide](#๏ธ-project-structure-guide)
36
- - [Recommended Directory Structure](#recommended-directory-structure)
37
- - [What Goes Where?](#what-goes-where)
38
- - [`.project/` โ€” Operational Truth](#project--operational-truth)
39
- - [`docs/` โ€” Reference Truth](#docs--reference-truth)
40
- - [๐ŸŽจ Intent Mapping](#-intent-mapping)
41
- - [How It Works](#how-it-works)
42
- - [๐Ÿ“ Documentation Examples](#-documentation-examples)
43
- - [Example: `.project/index.md` (Contract File)](#example-projectindexmd-contract-file)
44
- - [Example: Task Creation](#example-task-creation)
45
- - [Example: Getting Next Task](#example-getting-next-task)
46
- - [Example: Initialize Project](#example-initialize-project)
47
- - [Example: Import Tasks to Backlog](#example-import-tasks-to-backlog)
48
- - [Example: Promote Task to Active Work](#example-promote-task-to-active-work)
49
- - [Example: Archive Completed Task](#example-archive-completed-task)
50
- - [โš™๏ธ Configuration](#๏ธ-configuration)
51
- - [Custom Documentation Directory](#custom-documentation-directory)
52
- - [Custom Working Directory](#custom-working-directory)
53
- - [๐Ÿงช Development](#-development)
54
- - [๐Ÿ“š Documentation](#-documentation)
55
- - [๐Ÿค Contributing](#-contributing)
56
- - [๐Ÿ“„ License](#-license)
57
-
58
- ---
59
-
60
- ## โšก Quick Start
17
+ # โšก Quick Start
61
18
 
62
- ### Install
19
+ ## Install
63
20
 
64
21
  ```bash
65
22
  npm install project-mcp
66
23
  ```
67
24
 
68
- ### Configure
25
+ ## Configure
69
26
 
70
27
  Add to `.mcp.json`:
71
28
 
@@ -88,6 +45,52 @@ Add to `.mcp.json`:
88
45
 
89
46
  ---
90
47
 
48
+ ## Table of Contents
49
+
50
+ - [project-mcp](#project-mcp)
51
+ - [โšก Quick Start](#-quick-start)
52
+ - [Install](#install)
53
+ - [Configure](#configure)
54
+ - [Table of Contents](#table-of-contents)
55
+ - [๐ŸŽฏ Why project-mcp?](#-why-project-mcp)
56
+ - [๐Ÿ› ๏ธ Available Tools (37)](#๏ธ-available-tools-37)
57
+ - [Search Tools](#search-tools)
58
+ - [Project Management Tools](#project-management-tools)
59
+ - [Backlog Tools](#backlog-tools)
60
+ - [Task Management Tools](#task-management-tools)
61
+ - [Archive Tools](#archive-tools)
62
+ - [Decision \& Status Tools](#decision--status-tools)
63
+ - [Quality Tools](#quality-tools)
64
+ - [๐Ÿ“‹ Task Management System](#-task-management-system)
65
+ - [Workflow](#workflow)
66
+ - [Task File Format (Active Tasks)](#task-file-format-active-tasks)
67
+ - [Agent Execution Loop](#agent-execution-loop)
68
+ - [Key Features](#key-features)
69
+ - [๐Ÿ—๏ธ Project Structure Guide](#๏ธ-project-structure-guide)
70
+ - [Recommended Directory Structure](#recommended-directory-structure)
71
+ - [What Goes Where?](#what-goes-where)
72
+ - [`.project/` โ€” Operational Truth](#project--operational-truth)
73
+ - [`docs/` โ€” Reference Truth](#docs--reference-truth)
74
+ - [๐ŸŽจ Intent Mapping](#-intent-mapping)
75
+ - [How It Works](#how-it-works)
76
+ - [๐Ÿ“ Documentation Examples](#-documentation-examples)
77
+ - [Example: `.project/index.md` (Contract File)](#example-projectindexmd-contract-file)
78
+ - [Example: Task Creation](#example-task-creation)
79
+ - [Example: Getting Next Task](#example-getting-next-task)
80
+ - [Example: Initialize Project](#example-initialize-project)
81
+ - [Example: Import Tasks to Backlog](#example-import-tasks-to-backlog)
82
+ - [Example: Promote Task to Active Work](#example-promote-task-to-active-work)
83
+ - [Example: Archive Completed Task](#example-archive-completed-task)
84
+ - [โš™๏ธ Configuration](#๏ธ-configuration)
85
+ - [Custom Documentation Directory](#custom-documentation-directory)
86
+ - [Custom Working Directory](#custom-working-directory)
87
+ - [๐Ÿงช Development](#-development)
88
+ - [๐Ÿ“š Documentation](#-documentation)
89
+ - [๐Ÿค Contributing](#-contributing)
90
+ - [๐Ÿ“„ License](#-license)
91
+
92
+ ---
93
+
91
94
  ## ๐ŸŽฏ Why project-mcp?
92
95
 
93
96
  **The Problem:** AI agents need to search project documentation, but:
@@ -108,7 +111,7 @@ automatically:
108
111
 
109
112
  ---
110
113
 
111
- ## ๐Ÿ› ๏ธ Available Tools
114
+ ## ๐Ÿ› ๏ธ Available Tools (37)
112
115
 
113
116
  ### Search Tools
114
117
 
@@ -133,18 +136,48 @@ automatically:
133
136
  | `create_or_update_decisions` | Create or update DECISIONS.md | Recording architecture decisions |
134
137
  | `check_project_state` | Check which project files exist | Before making changes |
135
138
 
139
+ ### Backlog Tools
140
+
141
+ | Tool | Description | Use When |
142
+ | --------------------- | ---------------------------------------------------- | ------------------------------- |
143
+ | `add_to_backlog` | Add single item to BACKLOG.md | Quick task creation |
144
+ | `get_backlog` | Read backlog with filtering/sorting | Viewing queued work |
145
+ | `update_backlog_item` | Update priority, title, tags, phase | Adjusting backlog items |
146
+ | `remove_from_backlog` | Delete item without promoting | Removing cancelled work |
147
+ | `import_tasks` | Parse plan/roadmap and bulk add to BACKLOG.md | Populating from roadmap |
148
+ | `promote_task` | Move task from BACKLOG to active work (creates YAML) | Starting work on a backlog item |
149
+
136
150
  ### Task Management Tools
137
151
 
138
- | Tool | Description | Use When |
139
- | ----------------- | ---------------------------------------------------- | ------------------------------- |
140
- | `import_tasks` | Parse plan/roadmap and add to BACKLOG.md | Populating the backlog |
141
- | `promote_task` | Move task from BACKLOG to active work (creates YAML) | Starting work on a backlog item |
142
- | `create_task` | Create active task directly (bypass backlog) | Urgent/immediate work |
143
- | `update_task` | Update any task field, transition status | Modifying existing tasks |
144
- | `get_next_task` | Get dependency-aware next task(s) to work on | Determining what to do next |
145
- | `list_tasks` | List/filter tasks with summary dashboard | Reviewing all tasks |
146
- | `archive_task` | Move completed task to archive/ | Cleaning up done work |
147
- | `sync_todo_index` | Generate TODO.md dashboard from active tasks | Updating the overview |
152
+ | Tool | Description | Use When |
153
+ | ----------------- | --------------------------------------------- | ------------------------ |
154
+ | `create_task` | Create active task directly (bypass backlog) | Urgent/immediate work |
155
+ | `get_task` | Read specific task by ID with full details | Viewing task details |
156
+ | `update_task` | Update any task field, transition status | Modifying existing tasks |
157
+ | `delete_task` | Permanently remove a task (with confirmation) | Removing cancelled tasks |
158
+ | `search_tasks` | Search tasks by keyword in title/content | Finding specific tasks |
159
+ | `get_next_task` | Get dependency-aware next task(s) to work on | Determining what to do |
160
+ | `list_tasks` | List/filter tasks with summary dashboard | Reviewing all tasks |
161
+ | `sync_todo_index` | Generate TODO.md dashboard from active tasks | Updating the overview |
162
+
163
+ ### Archive Tools
164
+
165
+ | Tool | Description | Use When |
166
+ | --------------------- | ------------------------------------ | --------------------------- |
167
+ | `archive_task` | Move completed task to archive/ | Cleaning up done work |
168
+ | `list_archived_tasks` | List tasks in archive with filtering | Reviewing completed history |
169
+ | `unarchive_task` | Restore task from archive to active | Reopening completed work |
170
+
171
+ ### Decision & Status Tools
172
+
173
+ | Tool | Description | Use When |
174
+ | ----------------------- | --------------------------------- | -------------------------------- |
175
+ | `add_decision` | Record ADR with structured format | Documenting architecture choices |
176
+ | `get_decision` | Read specific decision by ADR ID | Viewing decision details |
177
+ | `list_decisions` | List/filter architecture ADRs | Reviewing past decisions |
178
+ | `update_project_status` | Quick timestamped status update | Reporting progress |
179
+ | `add_roadmap_milestone` | Add milestone with deliverables | Planning future work |
180
+ | `get_roadmap` | Read roadmap content | Viewing planned work |
148
181
 
149
182
  ### Quality Tools
150
183
 
@@ -404,7 +437,7 @@ Returns tasks sorted by priority where all dependencies are complete.
404
437
  "arguments": {
405
438
  "project_name": "My App",
406
439
  "project_description": "A web application for task management"
407
- }
440
+ }
408
441
  }
409
442
  ```
410
443
 
@@ -505,7 +538,7 @@ npm install
505
538
  npm test
506
539
 
507
540
  # Test the server
508
- node index.js
541
+ node src/index.js
509
542
  ```
510
543
 
511
544
  ---
@@ -516,7 +549,8 @@ node index.js
516
549
  - **[Contributing](CONTRIBUTING.md)** โ€” How to contribute
517
550
  - **[Security](SECURITY.md)** โ€” Security policy
518
551
  - **[Changelog](CHANGELOG.md)** โ€” Version history
519
- - **[Release Notes v1.3.0](docs/releases/RELEASE_NOTES_v1.3.0.md)** โ€” Latest release
552
+ - **[Release Notes v2.0.0](docs/releases/RELEASE_NOTES_v2.0.0.md)** โ€” Latest
553
+ release
520
554
 
521
555
  ---
522
556
 
package/package.json CHANGED
@@ -1,79 +1,79 @@
1
1
  {
2
- "name": "project-mcp",
3
- "version": "3.0.0",
4
- "description": "Intent-based MCP server for project documentation search. Maps natural language queries to the right sources automaticallyโ€”no configuration needed. The standard for AI agent documentation search.",
5
- "type": "module",
6
- "main": "src/index.js",
7
- "bin": {
8
- "project-mcp": "src/index.js"
9
- },
10
- "scripts": {
11
- "start": "node src/index.js",
12
- "test": "node --test test/*.test.js",
13
- "lint": "node --check src/index.js",
14
- "format": "prettier --write \"**/*.{js,md,json}\"",
15
- "format:check": "prettier --check \"**/*.{js,md,json}\"",
16
- "prepublishOnly": "npm run lint && npm test"
17
- },
18
- "keywords": [
19
- "mcp",
20
- "model-context-protocol",
21
- "mcp-server",
22
- "documentation",
23
- "documentation-search",
24
- "docs-search",
25
- "search",
26
- "fuzzy-search",
27
- "semantic-search",
28
- "markdown",
29
- "markdown-search",
30
- "project-documentation",
31
- "project-management",
32
- "intent-based-search",
33
- "intent-mapping",
34
- "ai-agent",
35
- "ai-assistant",
36
- "claude",
37
- "cursor",
38
- "anthropic",
39
- "ai-tools",
40
- "developer-tools",
41
- "documentation-tools",
42
- "knowledge-base",
43
- "project-knowledge",
44
- "operational-truth",
45
- "reference-documentation",
46
- "fuse.js",
47
- "natural-language",
48
- "nlp",
49
- "zero-config",
50
- "automatic-indexing"
51
- ],
52
- "author": "",
53
- "license": "MIT",
54
- "repository": {
55
- "type": "git",
56
- "url": "git+https://github.com/pouyanafisi/project-mcp.git"
57
- },
58
- "bugs": {
59
- "url": "https://github.com/pouyanafisi/project-mcp/issues"
60
- },
61
- "homepage": "https://github.com/pouyanafisi/project-mcp#readme",
62
- "engines": {
63
- "node": ">=18.0.0"
64
- },
65
- "dependencies": {
66
- "@modelcontextprotocol/sdk": "^1.0.4",
67
- "fuse.js": "^7.0.0",
68
- "gray-matter": "^4.0.3",
69
- "mime-types": "^2.1.35"
70
- },
71
- "devDependencies": {
72
- "prettier": "^3.7.4"
73
- },
74
- "files": [
75
- "src/",
76
- "README.md",
77
- "LICENSE"
78
- ]
2
+ "name": "project-mcp",
3
+ "version": "3.2.0",
4
+ "description": "Intent-based MCP server for project documentation search. Maps natural language queries to the right sources automaticallyโ€”no configuration needed. The standard for AI agent documentation search.",
5
+ "type": "module",
6
+ "main": "src/index.js",
7
+ "bin": {
8
+ "project-mcp": "src/index.js"
9
+ },
10
+ "scripts": {
11
+ "start": "node src/index.js",
12
+ "test": "node --test test/*.test.js",
13
+ "lint": "node --check src/index.js",
14
+ "format": "prettier --write \"**/*.{js,md,json}\"",
15
+ "format:check": "prettier --check \"**/*.{js,md,json}\"",
16
+ "prepublishOnly": "npm run lint && npm test"
17
+ },
18
+ "keywords": [
19
+ "mcp",
20
+ "model-context-protocol",
21
+ "mcp-server",
22
+ "documentation",
23
+ "documentation-search",
24
+ "docs-search",
25
+ "search",
26
+ "fuzzy-search",
27
+ "semantic-search",
28
+ "markdown",
29
+ "markdown-search",
30
+ "project-documentation",
31
+ "project-management",
32
+ "intent-based-search",
33
+ "intent-mapping",
34
+ "ai-agent",
35
+ "ai-assistant",
36
+ "claude",
37
+ "cursor",
38
+ "anthropic",
39
+ "ai-tools",
40
+ "developer-tools",
41
+ "documentation-tools",
42
+ "knowledge-base",
43
+ "project-knowledge",
44
+ "operational-truth",
45
+ "reference-documentation",
46
+ "fuse.js",
47
+ "natural-language",
48
+ "nlp",
49
+ "zero-config",
50
+ "automatic-indexing"
51
+ ],
52
+ "author": "",
53
+ "license": "MIT",
54
+ "repository": {
55
+ "type": "git",
56
+ "url": "git+https://github.com/pouyanafisi/project-mcp.git"
57
+ },
58
+ "bugs": {
59
+ "url": "https://github.com/pouyanafisi/project-mcp/issues"
60
+ },
61
+ "homepage": "https://github.com/pouyanafisi/project-mcp#readme",
62
+ "engines": {
63
+ "node": ">=18.0.0"
64
+ },
65
+ "dependencies": {
66
+ "@modelcontextprotocol/sdk": "^1.0.4",
67
+ "fuse.js": "^7.0.0",
68
+ "gray-matter": "^4.0.3",
69
+ "mime-types": "^2.1.35"
70
+ },
71
+ "devDependencies": {
72
+ "prettier": "^3.7.4"
73
+ },
74
+ "files": [
75
+ "src/",
76
+ "README.md",
77
+ "LICENSE"
78
+ ]
79
79
  }
@@ -12,7 +12,7 @@
12
12
  * @type {Record<string, string[]>}
13
13
  */
14
14
  export const promptToolMapping = {
15
- project_overview: ['check_project_state', 'search_project', 'list_tasks'],
15
+ project_overview: ['check_project_state', 'search_project', 'list_tasks', 'get_backlog'],
16
16
  get_next_task: ['get_next_task'],
17
17
  init_project: ['init_project'],
18
18
  import_tasks: ['import_tasks'],
@@ -20,6 +20,10 @@ export const promptToolMapping = {
20
20
  lint_project: ['lint_project_docs'],
21
21
  list_tasks: ['list_tasks'],
22
22
  update_task: ['update_task'],
23
+ add_to_backlog: ['add_to_backlog'],
24
+ get_backlog: ['get_backlog'],
25
+ add_decision: ['add_decision'],
26
+ update_status: ['update_project_status'],
23
27
  };
24
28
 
25
29
  /**
@@ -132,6 +136,74 @@ export const prompts = [
132
136
  },
133
137
  ],
134
138
  },
139
+ {
140
+ name: 'add_to_backlog',
141
+ description:
142
+ 'Add a single item to the backlog. Use when user says "add to backlog", "queue this task", "backlog item", or "add future task".',
143
+ arguments: [
144
+ {
145
+ name: 'title',
146
+ description: 'Title/description of the backlog item',
147
+ required: true,
148
+ },
149
+ {
150
+ name: 'project',
151
+ description: 'Project prefix (e.g., AUTH, API)',
152
+ required: true,
153
+ },
154
+ {
155
+ name: 'priority',
156
+ description: 'Priority level (P0, P1, P2, P3)',
157
+ required: false,
158
+ },
159
+ ],
160
+ },
161
+ {
162
+ name: 'get_backlog',
163
+ description:
164
+ 'View the current backlog. Use when user asks "show backlog", "what\'s in the queue", "backlog items", or "pending tasks".',
165
+ arguments: [
166
+ {
167
+ name: 'priority',
168
+ description: 'Filter by priority (P0, P1, P2, P3)',
169
+ required: false,
170
+ },
171
+ ],
172
+ },
173
+ {
174
+ name: 'add_decision',
175
+ description:
176
+ 'Record an architecture decision. Use when user says "record decision", "document decision", "ADR", or "architecture decision".',
177
+ arguments: [
178
+ {
179
+ name: 'title',
180
+ description: 'Title of the decision',
181
+ required: true,
182
+ },
183
+ {
184
+ name: 'decision',
185
+ description: 'The decision that was made',
186
+ required: true,
187
+ },
188
+ ],
189
+ },
190
+ {
191
+ name: 'update_status',
192
+ description:
193
+ 'Update project status. Use when user says "update status", "project status", "status update", or "how\'s the project".',
194
+ arguments: [
195
+ {
196
+ name: 'status',
197
+ description: 'Current status summary',
198
+ required: true,
199
+ },
200
+ {
201
+ name: 'health',
202
+ description: 'Project health (green, yellow, red)',
203
+ required: false,
204
+ },
205
+ ],
206
+ },
135
207
  ];
136
208
 
137
209
  /**
@@ -145,6 +145,67 @@ Valid statuses: todo, in_progress, blocked, review, done`,
145
145
  },
146
146
  },
147
147
  ],
148
+ add_to_backlog: [
149
+ {
150
+ role: 'user',
151
+ content: {
152
+ type: 'text',
153
+ text: `Add "${args.title || '[TITLE]'}" to the backlog.
154
+
155
+ Use the \`add_to_backlog\` tool with:
156
+ - title: "${args.title || '[TITLE]'}"
157
+ - project: "${args.project || '[PROJECT]'}"
158
+ ${args.priority ? `- priority: "${args.priority}"` : '- priority: "P2" (default)'}
159
+
160
+ This adds the item to BACKLOG.md. Use \`promote_task\` when ready to start work.`,
161
+ },
162
+ },
163
+ ],
164
+ get_backlog: [
165
+ {
166
+ role: 'user',
167
+ content: {
168
+ type: 'text',
169
+ text: `Show the current backlog${args.priority ? ` filtered by priority ${args.priority}` : ''}.
170
+
171
+ Use the \`get_backlog\` tool${args.priority ? ` with priority: "${args.priority}"` : ''}.
172
+
173
+ This shows all items in BACKLOG.md organized by priority.`,
174
+ },
175
+ },
176
+ ],
177
+ add_decision: [
178
+ {
179
+ role: 'user',
180
+ content: {
181
+ type: 'text',
182
+ text: `Record an architecture decision: "${args.title || '[TITLE]'}".
183
+
184
+ Use the \`add_decision\` tool with:
185
+ - title: "${args.title || '[TITLE]'}"
186
+ - decision: "${args.decision || '[DECISION]'}"
187
+ - context: (optional) why this decision was needed
188
+ - consequences: (optional) impact of the decision
189
+
190
+ This creates an ADR entry in DECISIONS.md.`,
191
+ },
192
+ },
193
+ ],
194
+ update_status: [
195
+ {
196
+ role: 'user',
197
+ content: {
198
+ type: 'text',
199
+ text: `Update project status: "${args.status || '[STATUS]'}".
200
+
201
+ Use the \`update_project_status\` tool with:
202
+ - status: "${args.status || '[STATUS]'}"
203
+ ${args.health ? `- health: "${args.health}"` : ''}
204
+
205
+ This adds a timestamped status entry to STATUS.md.`,
206
+ },
207
+ },
208
+ ],
148
209
  };
149
210
 
150
211
  return (
@@ -174,6 +235,10 @@ export function getMessageHandlerKeys() {
174
235
  lint_project: true,
175
236
  list_tasks: true,
176
237
  update_task: true,
238
+ add_to_backlog: true,
239
+ get_backlog: true,
240
+ add_decision: true,
241
+ update_status: true,
177
242
  };
178
243
  return Object.keys(messages);
179
244
  }