mcp-task-server 0.3.0 → 1.0.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 +82 -24
- package/dist/context.d.ts +5 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +28 -10
- package/dist/context.js.map +1 -1
- package/dist/index.js +479 -350
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -58,7 +58,7 @@ flowchart TB
|
|
|
58
58
|
end
|
|
59
59
|
|
|
60
60
|
subgraph MCP Task Server
|
|
61
|
-
B[
|
|
61
|
+
B[27 Tools]
|
|
62
62
|
C[Preferences Engine]
|
|
63
63
|
end
|
|
64
64
|
|
|
@@ -78,7 +78,7 @@ flowchart TB
|
|
|
78
78
|
|
|
79
79
|
## Features
|
|
80
80
|
|
|
81
|
-
- **
|
|
81
|
+
- **27 MCP Tools**: Comprehensive task management and coordination
|
|
82
82
|
- **Auto Workspace Detection**: Works globally without per-project config
|
|
83
83
|
- **Multi-Agent Coordination**: Support for Planner, Worker, and Judge roles
|
|
84
84
|
- **Dependency Tracking**: Tasks can depend on other tasks
|
|
@@ -140,30 +140,73 @@ flowchart TB
|
|
|
140
140
|
|
|
141
141
|
### Syncing Cursor Memories
|
|
142
142
|
|
|
143
|
-
The `sync` action
|
|
143
|
+
The `sync` action transfers memories from Cursor to shared context, preserving IDs:
|
|
144
144
|
|
|
145
145
|
```mermaid
|
|
146
146
|
flowchart TD
|
|
147
|
-
A[Agent sees Cursor memory] --> B["update_memory(action: sync)"]
|
|
148
|
-
B --> C{
|
|
147
|
+
A["Agent sees Cursor memory (ID: 13502615)"] --> B["update_memory(action: sync, id: 13502615)"]
|
|
148
|
+
B --> C{ID or title exists?}
|
|
149
149
|
C -->|Yes| D[Update existing memory]
|
|
150
|
-
C -->|No| E[Create
|
|
150
|
+
C -->|No| E[Create with Cursor ID]
|
|
151
151
|
D --> F[Save to shared-context.json]
|
|
152
152
|
E --> F
|
|
153
153
|
```
|
|
154
154
|
|
|
155
|
-
|
|
155
|
+
Always include the Cursor memory ID to keep IDs consistent:
|
|
156
156
|
|
|
157
157
|
```typescript
|
|
158
|
-
// Sync
|
|
158
|
+
// Sync with Cursor ID (recommended)
|
|
159
159
|
update_memory({
|
|
160
|
-
action: "sync",
|
|
160
|
+
action: "sync",
|
|
161
|
+
id: "13502615", // Cursor's memory ID
|
|
161
162
|
title: "Writing preferences",
|
|
162
163
|
content: "British English, ISO dates, no emojis..."
|
|
163
164
|
})
|
|
164
|
-
// Returns: { status: "synced_existing"
|
|
165
|
+
// Returns: { status: "synced_existing", memory: { id: "13502615", ... } }
|
|
165
166
|
```
|
|
166
167
|
|
|
168
|
+
### Why Shared Context Exists
|
|
169
|
+
|
|
170
|
+
Cursor's memory system has limitations that make shared context necessary:
|
|
171
|
+
|
|
172
|
+
```mermaid
|
|
173
|
+
flowchart TB
|
|
174
|
+
subgraph cursor [Cursor IDE]
|
|
175
|
+
A[AI Assistant]
|
|
176
|
+
B[Internal Memory DB]
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
subgraph mcp [MCP Server]
|
|
180
|
+
C[Task Tools]
|
|
181
|
+
D[Memory Tools]
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
subgraph problem [The Problem]
|
|
185
|
+
E["AI can READ Cursor memories"]
|
|
186
|
+
F["MCP cannot ACCESS Cursor memories"]
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
A -->|can see| B
|
|
190
|
+
A -->|can call| C
|
|
191
|
+
C -.-x|no access| B
|
|
192
|
+
|
|
193
|
+
E --> G[Need bridge]
|
|
194
|
+
F --> G
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
| Cursor Memory Limitation | Impact | Solution |
|
|
198
|
+
|-------------------------|--------|----------|
|
|
199
|
+
| No API access | MCP tools can't read Cursor's memory database | `~/.cursor/shared-context.json` as shared store |
|
|
200
|
+
| Isolated per conversation | Memories don't persist across all contexts | Shared file accessible to all MCP servers |
|
|
201
|
+
| No programmatic sync | Can't auto-export memories | `update_memory` sync action with Cursor ID |
|
|
202
|
+
| Different ID systems | Cursor IDs vs generated IDs cause duplicates | Pass Cursor ID to sync to preserve consistency |
|
|
203
|
+
|
|
204
|
+
**Workflow:**
|
|
205
|
+
1. Cursor creates a memory (you see it in chat with ID like `13502615`)
|
|
206
|
+
2. Ask agent to sync it: `update_memory({ action: "sync", id: "13502615", title: "...", content: "..." })`
|
|
207
|
+
3. Memory saved to `~/.cursor/shared-context.json` with same ID
|
|
208
|
+
4. All MCP servers can now read it
|
|
209
|
+
|
|
167
210
|
### Where Preferences Are Used
|
|
168
211
|
|
|
169
212
|
| Tool Type | How Preferences Are Applied |
|
|
@@ -406,14 +449,28 @@ init_project({ force: true })
|
|
|
406
449
|
|
|
407
450
|
| Tool | Description |
|
|
408
451
|
|------|-------------|
|
|
409
|
-
| `
|
|
452
|
+
| `help` | List all available tools with descriptions and parameters |
|
|
453
|
+
| `get_version` | Get server version and workspace detection info |
|
|
454
|
+
| `diagnose` | Diagnose MCP configuration, paths, and workspace detection |
|
|
410
455
|
| `show_memory` | Show shared context memories from `~/.cursor/shared-context.json` |
|
|
411
|
-
| `update_memory` | Create, update, sync, or delete memories
|
|
456
|
+
| `update_memory` | Create, update, sync, or delete memories (sync preserves Cursor IDs) |
|
|
412
457
|
|
|
413
458
|
```typescript
|
|
414
|
-
//
|
|
459
|
+
// List all tools
|
|
460
|
+
help()
|
|
461
|
+
// Returns: { server, version, tool_count: 27, tools: [...] }
|
|
462
|
+
|
|
463
|
+
// Get help for specific tool
|
|
464
|
+
help({ tool: "update_memory" })
|
|
465
|
+
// Returns: { name, description, parameters: { action: {...}, id: {...}, ... } }
|
|
466
|
+
|
|
467
|
+
// Check version and workspace
|
|
415
468
|
get_version()
|
|
416
|
-
// Returns: {
|
|
469
|
+
// Returns: { version: "x.x.x", workspace: { root: "/path", source: "found .git" } }
|
|
470
|
+
|
|
471
|
+
// Diagnose configuration
|
|
472
|
+
diagnose() // Basic info
|
|
473
|
+
diagnose({ verbose: true }) // Include env vars and file checks
|
|
417
474
|
|
|
418
475
|
// Show all memories
|
|
419
476
|
show_memory()
|
|
@@ -424,30 +481,31 @@ show_memory({ search: "writing" })
|
|
|
424
481
|
// Force reload from file (clears cache)
|
|
425
482
|
show_memory({ reload: true })
|
|
426
483
|
|
|
427
|
-
//
|
|
484
|
+
// Sync a Cursor memory (preserves Cursor ID)
|
|
428
485
|
update_memory({
|
|
429
|
-
action: "
|
|
430
|
-
|
|
431
|
-
|
|
486
|
+
action: "sync",
|
|
487
|
+
id: "13502615", // Cursor's memory ID
|
|
488
|
+
title: "Writing preferences",
|
|
489
|
+
content: "British English, ISO dates, no emojis..."
|
|
432
490
|
})
|
|
433
491
|
|
|
434
|
-
//
|
|
492
|
+
// Create a new memory (generates ID)
|
|
435
493
|
update_memory({
|
|
436
|
-
action: "
|
|
437
|
-
title: "
|
|
438
|
-
content: "
|
|
494
|
+
action: "create",
|
|
495
|
+
title: "Project conventions",
|
|
496
|
+
content: "Use TypeScript strict mode."
|
|
439
497
|
})
|
|
440
498
|
|
|
441
499
|
// Update an existing memory by ID
|
|
442
500
|
update_memory({
|
|
443
501
|
action: "update",
|
|
444
|
-
id: "
|
|
502
|
+
id: "13502615",
|
|
445
503
|
title: "Writing preferences",
|
|
446
504
|
content: "Updated content..."
|
|
447
505
|
})
|
|
448
506
|
|
|
449
507
|
// Delete a memory
|
|
450
|
-
update_memory({ action: "delete", id: "
|
|
508
|
+
update_memory({ action: "delete", id: "13502615" })
|
|
451
509
|
|
|
452
510
|
// Analyse project and get suggestions for memory_bank
|
|
453
511
|
analyse_project()
|
package/dist/context.d.ts
CHANGED
|
@@ -46,8 +46,12 @@ export declare function upsertMemory(memory: CursorMemory): SharedContext;
|
|
|
46
46
|
/**
|
|
47
47
|
* Add or update a memory by title (case-insensitive match)
|
|
48
48
|
* If a memory with the same title exists, updates it. Otherwise creates new.
|
|
49
|
+
*
|
|
50
|
+
* @param title - Memory title
|
|
51
|
+
* @param content - Memory content
|
|
52
|
+
* @param cursorId - Optional Cursor memory ID to use (preserves original ID from Cursor)
|
|
49
53
|
*/
|
|
50
|
-
export declare function upsertMemoryByTitle(title: string, content: string): {
|
|
54
|
+
export declare function upsertMemoryByTitle(title: string, content: string, cursorId?: string): {
|
|
51
55
|
memory: CursorMemory;
|
|
52
56
|
wasUpdated: boolean;
|
|
53
57
|
};
|
package/dist/context.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE,YAAY,EAAE,CAAC;CACjC;AAID;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,aAAa,GAAG,IAAI,CAgBxD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAKxE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,GAAG,IAAI,CAOvD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,GAAG,IAAI,CAGrD;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAI/C;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,IAAI,CAGtD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAW9D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,aAAa,CAiBhE;AAED
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE,YAAY,EAAE,CAAC;CACjC;AAID;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,aAAa,GAAG,IAAI,CAgBxD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAKxE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,GAAG,IAAI,CAOvD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,GAAG,IAAI,CAGrD;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAI/C;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,IAAI,CAGtD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAW9D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,aAAa,CAiBhE;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,GAChB;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CAoC/C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAAA;CAAE,CAgB5F;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC"}
|
package/dist/context.js
CHANGED
|
@@ -101,20 +101,38 @@ export function upsertMemory(memory) {
|
|
|
101
101
|
/**
|
|
102
102
|
* Add or update a memory by title (case-insensitive match)
|
|
103
103
|
* If a memory with the same title exists, updates it. Otherwise creates new.
|
|
104
|
+
*
|
|
105
|
+
* @param title - Memory title
|
|
106
|
+
* @param content - Memory content
|
|
107
|
+
* @param cursorId - Optional Cursor memory ID to use (preserves original ID from Cursor)
|
|
104
108
|
*/
|
|
105
|
-
export function upsertMemoryByTitle(title, content) {
|
|
109
|
+
export function upsertMemoryByTitle(title, content, cursorId) {
|
|
106
110
|
let ctx = loadSharedContext() || { cursor_memories: [] };
|
|
107
|
-
//
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
111
|
+
// First check if we have a memory with this exact Cursor ID
|
|
112
|
+
if (cursorId) {
|
|
113
|
+
const existingByIdIndex = ctx.cursor_memories.findIndex((m) => m.id === cursorId);
|
|
114
|
+
if (existingByIdIndex >= 0) {
|
|
115
|
+
// Update existing by ID - also update title in case it changed
|
|
116
|
+
ctx.cursor_memories[existingByIdIndex].content = content;
|
|
117
|
+
ctx.cursor_memories[existingByIdIndex].title = title;
|
|
118
|
+
saveSharedContext(ctx);
|
|
119
|
+
return { memory: ctx.cursor_memories[existingByIdIndex], wasUpdated: true };
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
// Fall back to case-insensitive title match
|
|
123
|
+
const existingByTitleIndex = ctx.cursor_memories.findIndex((m) => m.title.toLowerCase() === title.toLowerCase());
|
|
124
|
+
if (existingByTitleIndex >= 0) {
|
|
125
|
+
// Update existing - use provided cursorId if available, otherwise keep existing ID
|
|
126
|
+
if (cursorId) {
|
|
127
|
+
ctx.cursor_memories[existingByTitleIndex].id = cursorId;
|
|
128
|
+
}
|
|
129
|
+
ctx.cursor_memories[existingByTitleIndex].content = content;
|
|
130
|
+
ctx.cursor_memories[existingByTitleIndex].title = title;
|
|
113
131
|
saveSharedContext(ctx);
|
|
114
|
-
return { memory: ctx.cursor_memories[
|
|
132
|
+
return { memory: ctx.cursor_memories[existingByTitleIndex], wasUpdated: true };
|
|
115
133
|
}
|
|
116
|
-
// Create new
|
|
117
|
-
const memory = { id: generateMemoryId(), title, content };
|
|
134
|
+
// Create new - use cursorId if provided, otherwise generate
|
|
135
|
+
const memory = { id: cursorId || generateMemoryId(), title, content };
|
|
118
136
|
ctx.cursor_memories.push(memory);
|
|
119
137
|
saveSharedContext(ctx);
|
|
120
138
|
return { memory, wasUpdated: false };
|
package/dist/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
|