@t0ken.ai/memoryx-mcp-server 2.2.8 → 2.2.10
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 +48 -1
- package/dist/index.js +74 -45
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +81 -51
package/README.md
CHANGED
|
@@ -41,6 +41,53 @@ Add to `~/.cursor/mcp.json` or VS Code MCP config:
|
|
|
41
41
|
|
|
42
42
|
**That's it!** The server auto-registers on first use - no additional configuration needed.
|
|
43
43
|
|
|
44
|
+
### Configure Your Agent (System Prompt / Rules)
|
|
45
|
+
|
|
46
|
+
The MCP server only provides the **tools**; the AI will not automatically know when or how to save memory. You must **put the following constraints into your AI’s system prompt or rules** (e.g. Cursor Rules, VS Code rules, or Claude’s custom instructions) so the agent is instructed to call `save_memory` at the right times.
|
|
47
|
+
|
|
48
|
+
**Where to add:**
|
|
49
|
+
- **Cursor**: `.cursor/rules/*.mdc` or project/global rules
|
|
50
|
+
- **VS Code / other MCP hosts**: system prompt or instructions in settings
|
|
51
|
+
- **Claude Desktop**: Custom instructions / system prompt in config
|
|
52
|
+
|
|
53
|
+
**Suggested rule: “MemoryX Auto-Memory Rules”**
|
|
54
|
+
|
|
55
|
+
```markdown
|
|
56
|
+
# MemoryX Auto-Memory Rules
|
|
57
|
+
|
|
58
|
+
## Task Completion Flow
|
|
59
|
+
1. Complete task code changes
|
|
60
|
+
2. **MUST** call `save_memory` tool to save task summary
|
|
61
|
+
3. **THEN** call `attempt_completion` (or your completion flow) to report
|
|
62
|
+
|
|
63
|
+
## save_memory Content Requirements
|
|
64
|
+
- What task was completed
|
|
65
|
+
- Which files were modified
|
|
66
|
+
- Important design decisions or lessons learned
|
|
67
|
+
- Next steps (if any)
|
|
68
|
+
|
|
69
|
+
## When to Save (Triggers)
|
|
70
|
+
- **Task completion** – Summarize and save before marking done
|
|
71
|
+
- **Important design decisions** – Architecture, tech choices, API/schema changes
|
|
72
|
+
- **User requests** – "remember", "don't forget", "note this"
|
|
73
|
+
- **User preferences** – "I like", "I hate", "I usually..."
|
|
74
|
+
- **Cross-session info** – Anything that should persist to the next session
|
|
75
|
+
- **End of conversation** – Optional: add a rule like “At end of long sessions, call save_memory with a short summary of key points”
|
|
76
|
+
|
|
77
|
+
## Timed / Scheduled Saving
|
|
78
|
+
If you want the agent to save memory on a schedule (e.g. every N messages or at idle), add to your system prompt or rules, for example:
|
|
79
|
+
- “After every 10 user messages, call save_memory with a 1–2 sentence summary of the current topic if it’s substantive.”
|
|
80
|
+
- “When the user has not sent a message for 5 minutes and the conversation had substance, offer to save a brief summary via save_memory.”
|
|
81
|
+
|
|
82
|
+
## How to Save
|
|
83
|
+
- Call the **save_memory** tool with:
|
|
84
|
+
- **content**: One atomic fact or short summary (self-contained; use absolute dates like YYYY-MM-DD; avoid “it”/“this”—use explicit referents).
|
|
85
|
+
- **metadata** (optional): `category` (semantic | episodic | procedural | emotional | reflective), `tags` (string array).
|
|
86
|
+
- One fact per call; for multiple points, call save_memory once per fact.
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Copy or adapt the above into your rules so the agent consistently saves memory at the right moments.
|
|
90
|
+
|
|
44
91
|
### Configure Claude Desktop
|
|
45
92
|
|
|
46
93
|
**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
@@ -61,7 +108,7 @@ Add to `~/.cursor/mcp.json` or VS Code MCP config:
|
|
|
61
108
|
|
|
62
109
|
### save_memory
|
|
63
110
|
|
|
64
|
-
Save information to long-term memory.
|
|
111
|
+
Save information to long-term memory. **Important:** The agent will not call this automatically—put the [MemoryX Auto-Memory Rules](#configure-your-agent-system-prompt--rules) (when to save, task flow, content requirements) into your **system prompt or rules** so the agent is constrained to use it.
|
|
65
112
|
|
|
66
113
|
**⚡ AUTO-SAVE TRIGGERS - Always call save_memory when:**
|
|
67
114
|
|
package/dist/index.js
CHANGED
|
@@ -55,7 +55,7 @@ const path = __importStar(require("path"));
|
|
|
55
55
|
const os = __importStar(require("os"));
|
|
56
56
|
const DEFAULT_API_BASE = "https://t0ken.ai/api";
|
|
57
57
|
// MCP Server 版本号 - 由 prebuild 脚本自动从 package.json 同步
|
|
58
|
-
const VERSION = "2.2.
|
|
58
|
+
const VERSION = "2.2.10";
|
|
59
59
|
// Detected client type from initialize request
|
|
60
60
|
let detectedClient = 'mcp';
|
|
61
61
|
// Lazy-loaded SDK instance
|
|
@@ -131,20 +131,23 @@ async function saveMemory(content, metadata = {}) {
|
|
|
131
131
|
return { success: false, message: String(e), queued: 0 };
|
|
132
132
|
}
|
|
133
133
|
}
|
|
134
|
-
async function searchMemory(query, limit = 5) {
|
|
134
|
+
async function searchMemory(query, limit = 5, options) {
|
|
135
135
|
if (!query || query.length < 2) {
|
|
136
136
|
return { memories: [], isLimited: false, remainingQuota: 0 };
|
|
137
137
|
}
|
|
138
138
|
try {
|
|
139
139
|
const sdk = await getSDK();
|
|
140
|
-
const result = await sdk.search(query, limit);
|
|
140
|
+
const result = await sdk.search(query, limit, options);
|
|
141
|
+
const mapOne = (m) => ({
|
|
142
|
+
id: m.id,
|
|
143
|
+
content: m.memory || m.content,
|
|
144
|
+
category: m.category || "other",
|
|
145
|
+
score: m.score ?? 0.5
|
|
146
|
+
});
|
|
141
147
|
return {
|
|
142
|
-
memories: (result.data || []).map(
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
category: m.category || "other",
|
|
146
|
-
score: m.score || 0.5
|
|
147
|
-
})),
|
|
148
|
+
memories: (result.data || []).map(mapOne),
|
|
149
|
+
related_memories: (result.related_memories || []).map(mapOne),
|
|
150
|
+
extracted_entities: result.extracted_entities || undefined,
|
|
148
151
|
isLimited: false,
|
|
149
152
|
remainingQuota: result.remaining_quota ?? -1
|
|
150
153
|
};
|
|
@@ -154,10 +157,10 @@ async function searchMemory(query, limit = 5) {
|
|
|
154
157
|
return { memories: [], isLimited: false, remainingQuota: 0 };
|
|
155
158
|
}
|
|
156
159
|
}
|
|
157
|
-
async function listMemory(limit = 20) {
|
|
160
|
+
async function listMemory(limit = 20, offset = 0, options) {
|
|
158
161
|
try {
|
|
159
162
|
const sdk = await getSDK();
|
|
160
|
-
const result = await sdk.list(limit,
|
|
163
|
+
const result = await sdk.list(limit, offset, options);
|
|
161
164
|
return {
|
|
162
165
|
memories: (result.data || []).map((m) => ({
|
|
163
166
|
id: m.id,
|
|
@@ -224,7 +227,7 @@ const server = new index_js_1.Server({
|
|
|
224
227
|
},
|
|
225
228
|
});
|
|
226
229
|
// 检测 MCP 客户端类型
|
|
227
|
-
// 支持的 IDE: Cline, Cursor, Windsurf, Claude, Zen, Trea, Qoder, Kiro, OpenCode, CodeBuddy, Codeium, Tabby, Kimi, ZenMux, Comate
|
|
230
|
+
// 支持的 IDE: Cline, Cursor, Windsurf, Claude, Zen, Trea, Qoder, Kiro, OpenCode, CodeBuddy, Codeium, Tabby, Kimi, ZenMux, Comate, Kilo, Qwen, Codex
|
|
228
231
|
server.setRequestHandler(types_js_1.InitializeRequestSchema, async (request) => {
|
|
229
232
|
const clientName = (request.params?.clientInfo?.name || '').toLowerCase();
|
|
230
233
|
// 检测客户端类型(忽略大小写)
|
|
@@ -273,6 +276,15 @@ server.setRequestHandler(types_js_1.InitializeRequestSchema, async (request) =>
|
|
|
273
276
|
else if (clientName.includes('tabby')) {
|
|
274
277
|
detectedClient = 'tabby';
|
|
275
278
|
}
|
|
279
|
+
else if (clientName.includes('kilo')) {
|
|
280
|
+
detectedClient = 'kilo';
|
|
281
|
+
}
|
|
282
|
+
else if (clientName.includes('qwen')) {
|
|
283
|
+
detectedClient = 'qwen';
|
|
284
|
+
}
|
|
285
|
+
else if (clientName.includes('codex')) {
|
|
286
|
+
detectedClient = 'codex';
|
|
287
|
+
}
|
|
276
288
|
else if (clientName) {
|
|
277
289
|
// 未知客户端,使用其名称
|
|
278
290
|
detectedClient = clientName.split(/[^\w]/)[0]; // 取第一个单词
|
|
@@ -363,15 +375,13 @@ server.setRequestHandler(types_js_1.GetPromptRequestSchema, async (request) => {
|
|
|
363
375
|
|
|
364
376
|
Task: ${task}
|
|
365
377
|
|
|
366
|
-
|
|
367
|
-
-
|
|
368
|
-
-
|
|
369
|
-
-
|
|
370
|
-
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
Keep under 50 words. Then proceed to attempt_completion.
|
|
374
|
-
DO NOT skip this step.`
|
|
378
|
+
Call save_memory for EACH atomic fact (one fact per call—do not merge). RULES:
|
|
379
|
+
- Use ONLY absolute dates (YYYY-MM-DD). NEVER "yesterday", "last week", "recently".
|
|
380
|
+
- If content has "it"/"this"/"that", rewrite with explicit referents (e.g. "it" → "[Component X]").
|
|
381
|
+
- metadata.category MUST be one of: semantic | episodic | procedural | emotional | reflective. Use "reflective" for task summaries.
|
|
382
|
+
- Save: what was done, key files changed, important decisions, next steps. Each as a separate save_memory call if multiple facts.
|
|
383
|
+
- Tags: task-complete, ${task}. Keep each fact under 50 words.
|
|
384
|
+
Then proceed to attempt_completion. DO NOT skip saving.`
|
|
375
385
|
}
|
|
376
386
|
}
|
|
377
387
|
]
|
|
@@ -386,14 +396,12 @@ DO NOT skip this step.`
|
|
|
386
396
|
type: "text",
|
|
387
397
|
text: `⚡ AUTO-ARCHIVE: Review this conversation about ${topic} and SAVE to memory immediately.
|
|
388
398
|
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
4
|
|
394
|
-
|
|
395
|
-
Use save_memory tool NOW with category "reflective" and tags: ${topic}, session-summary.
|
|
396
|
-
Keep summary under 100 words. DO NOT skip this step.`
|
|
399
|
+
Call save_memory for EACH atomic fact (one fact per call—do not merge into one). RULES you MUST follow:
|
|
400
|
+
- Dates: ONLY absolute (YYYY-MM-DD). NEVER "yesterday", "last week", "recently".
|
|
401
|
+
- Context: Replace "it"/"this"/"that" with explicit referents so each fact is self-contained.
|
|
402
|
+
- metadata.category MUST be one of: semantic | episodic | procedural | emotional | reflective. Use "reflective" for session summaries.
|
|
403
|
+
- Extract and save separately: (1) Key design decisions (2) What was accomplished (3) Learnings/gotchas (4) Pending tasks. Each fact = one save_memory call.
|
|
404
|
+
- Tags: ${topic}, session-summary. Each fact under 100 words total. DO NOT skip this step.`
|
|
397
405
|
}
|
|
398
406
|
}
|
|
399
407
|
]
|
|
@@ -420,17 +428,17 @@ server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
|
|
|
420
428
|
tools: [
|
|
421
429
|
{
|
|
422
430
|
name: "save_memory",
|
|
423
|
-
description: "Save
|
|
431
|
+
description: "Save one atomic fact to long-term memory. RULES YOU MUST FOLLOW: (1) ONE fact per call—do not merge multiple facts. (2) DATES: Use ONLY absolute dates (YYYY-MM-DD or ISO 8601). NEVER use 'yesterday', 'last week', 'recently', or any relative time. (3) CONTEXT COMPLETION (mandatory): If the fact contains pronouns or references like 'it', 'this', 'that', 'the project'—you MUST rewrite so the fact is self-contained with explicit referents. Example: 'it broke' → '[Device] MacBook Pro 2023 screen damaged'. Content that is not self-contained will be stored incorrectly. (4) metadata.category MUST be one of: semantic | episodic | procedural | emotional | reflective. (5) Call save_memory when: user says 'remember this', design/code decisions, task completion, or end-of-session summary (≤100 words). (6) For code-related facts, include concrete anchors when possible: class name, method/function name, file path, library/SDK name, config key, error type—e.g. 'UserService.login in src/auth/user.service.ts uses Redis' rather than 'we fixed login'—so memory can be recalled by code structure.",
|
|
424
432
|
inputSchema: {
|
|
425
433
|
type: "object",
|
|
426
434
|
properties: {
|
|
427
435
|
content: {
|
|
428
436
|
type: "string",
|
|
429
|
-
description: "
|
|
437
|
+
description: "REQUIRED. One atomic fact, self-contained. MUST use absolute dates (YYYY-MM-DD). MUST resolve any 'it/this/that' to explicit nouns. Session summary: max 100 words."
|
|
430
438
|
},
|
|
431
439
|
metadata: {
|
|
432
440
|
type: "object",
|
|
433
|
-
description: "
|
|
441
|
+
description: "category (required): semantic|episodic|procedural|emotional|reflective. tags (optional): string array."
|
|
434
442
|
}
|
|
435
443
|
},
|
|
436
444
|
required: ["content"]
|
|
@@ -438,18 +446,32 @@ server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
|
|
|
438
446
|
},
|
|
439
447
|
{
|
|
440
448
|
name: "search_memory",
|
|
441
|
-
description: "Search historical memories.
|
|
449
|
+
description: "Search historical memories. Direct results = vector DB; related = graph DB. Call BEFORE answering about preferences/history or any personalized response. Workflow: search → review results → respond. Use absolute time in time_filter (YYYY-MM-DD). Returned id is the memory_id for delete_memory.",
|
|
442
450
|
inputSchema: {
|
|
443
451
|
type: "object",
|
|
444
452
|
properties: {
|
|
445
453
|
query: {
|
|
446
454
|
type: "string",
|
|
447
|
-
description: "Search keywords or natural language question"
|
|
455
|
+
description: "Search intent: keywords or natural language question"
|
|
448
456
|
},
|
|
449
457
|
limit: {
|
|
450
458
|
type: "number",
|
|
451
|
-
description: "
|
|
459
|
+
description: "Max results, default 5",
|
|
452
460
|
default: 5
|
|
461
|
+
},
|
|
462
|
+
time_filter: {
|
|
463
|
+
type: "object",
|
|
464
|
+
description: "Optional. start/end in YYYY-MM-DD HH:mm:ss or ISO 8601"
|
|
465
|
+
},
|
|
466
|
+
categories: {
|
|
467
|
+
type: "array",
|
|
468
|
+
items: { type: "string" },
|
|
469
|
+
description: "Optional. Filter by category (semantic/episodic/procedural/emotional/reflective)"
|
|
470
|
+
},
|
|
471
|
+
tags: {
|
|
472
|
+
type: "array",
|
|
473
|
+
items: { type: "string" },
|
|
474
|
+
description: "Optional. Filter by tags"
|
|
453
475
|
}
|
|
454
476
|
},
|
|
455
477
|
required: ["query"]
|
|
@@ -457,27 +479,27 @@ server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
|
|
|
457
479
|
},
|
|
458
480
|
{
|
|
459
481
|
name: "list_memory",
|
|
460
|
-
description: "List recent memories
|
|
482
|
+
description: "List recent memories by creation time (newest first). No search/lookup—only time-ordered listing. To delete a specific memory, use search_memory to get its id then delete_memory. Returns id (use as memory_id for delete), content, category.",
|
|
461
483
|
inputSchema: {
|
|
462
484
|
type: "object",
|
|
463
485
|
properties: {
|
|
464
|
-
limit: {
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
}
|
|
486
|
+
limit: { type: "number", description: "Max items, default 20", default: 20 },
|
|
487
|
+
offset: { type: "number", description: "Pagination offset, default 0", default: 0 },
|
|
488
|
+
time_filter: { type: "object", description: "Optional. start/end YYYY-MM-DD HH:mm:ss" },
|
|
489
|
+
categories: { type: "array", items: { type: "string" }, description: "Optional. Filter by category" },
|
|
490
|
+
tags: { type: "array", items: { type: "string" }, description: "Optional. Filter by tags" }
|
|
469
491
|
}
|
|
470
492
|
}
|
|
471
493
|
},
|
|
472
494
|
{
|
|
473
495
|
name: "delete_memory",
|
|
474
|
-
description: "Delete a
|
|
496
|
+
description: "Delete a memory by id. memory_id MUST be the id returned by search_memory or list_memory—do not use any other value. Use when user asks to forget something or information is outdated.",
|
|
475
497
|
inputSchema: {
|
|
476
498
|
type: "object",
|
|
477
499
|
properties: {
|
|
478
500
|
memory_id: {
|
|
479
501
|
type: "string",
|
|
480
|
-
description: "
|
|
502
|
+
description: "Id from search_memory or list_memory result (required)"
|
|
481
503
|
}
|
|
482
504
|
},
|
|
483
505
|
required: ["memory_id"]
|
|
@@ -513,7 +535,10 @@ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
|
|
|
513
535
|
case "search_memory": {
|
|
514
536
|
const query = args?.query;
|
|
515
537
|
const limit = args?.limit || 5;
|
|
516
|
-
const
|
|
538
|
+
const time_filter = args?.time_filter;
|
|
539
|
+
const categories = args?.categories;
|
|
540
|
+
const tags = args?.tags;
|
|
541
|
+
const result = await searchMemory(query, limit, { time_filter, categories, tags });
|
|
517
542
|
return {
|
|
518
543
|
content: [
|
|
519
544
|
{
|
|
@@ -525,7 +550,11 @@ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
|
|
|
525
550
|
}
|
|
526
551
|
case "list_memory": {
|
|
527
552
|
const limit = args?.limit || 20;
|
|
528
|
-
const
|
|
553
|
+
const offset = args?.offset || 0;
|
|
554
|
+
const time_filter = args?.time_filter;
|
|
555
|
+
const categories = args?.categories;
|
|
556
|
+
const tags = args?.tags;
|
|
557
|
+
const result = await listMemory(limit, offset, { time_filter, categories, tags });
|
|
529
558
|
return {
|
|
530
559
|
content: [
|
|
531
560
|
{
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@t0ken.ai/memoryx-mcp-server",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.10",
|
|
4
4
|
"description": "MemoryX MCP Server for Cursor/VS Code/Claude Desktop (powered by @t0ken.ai/memoryx-sdk)",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"license": "MIT",
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
27
|
-
"@t0ken.ai/memoryx-sdk": "^1.
|
|
27
|
+
"@t0ken.ai/memoryx-sdk": "^1.5.2"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@types/node": "^20.0.0",
|
package/src/index.ts
CHANGED
|
@@ -32,7 +32,7 @@ import * as os from "os";
|
|
|
32
32
|
const DEFAULT_API_BASE = "https://t0ken.ai/api";
|
|
33
33
|
|
|
34
34
|
// MCP Server 版本号 - 由 prebuild 脚本自动从 package.json 同步
|
|
35
|
-
const VERSION = "2.2.
|
|
35
|
+
const VERSION = "2.2.10";
|
|
36
36
|
|
|
37
37
|
// Detected client type from initialize request
|
|
38
38
|
let detectedClient: string = 'mcp';
|
|
@@ -125,8 +125,14 @@ async function saveMemory(content: string, metadata: Record<string, any> = {}):
|
|
|
125
125
|
}
|
|
126
126
|
}
|
|
127
127
|
|
|
128
|
-
async function searchMemory(
|
|
128
|
+
async function searchMemory(
|
|
129
|
+
query: string,
|
|
130
|
+
limit: number = 5,
|
|
131
|
+
options?: { time_filter?: { start?: string; end?: string }; categories?: string[]; tags?: string[] }
|
|
132
|
+
): Promise<{
|
|
129
133
|
memories: any[];
|
|
134
|
+
related_memories?: any[];
|
|
135
|
+
extracted_entities?: { name: string }[];
|
|
130
136
|
isLimited: boolean;
|
|
131
137
|
remainingQuota: number;
|
|
132
138
|
upgradeHint?: string;
|
|
@@ -134,18 +140,19 @@ async function searchMemory(query: string, limit: number = 5): Promise<{
|
|
|
134
140
|
if (!query || query.length < 2) {
|
|
135
141
|
return { memories: [], isLimited: false, remainingQuota: 0 };
|
|
136
142
|
}
|
|
137
|
-
|
|
138
143
|
try {
|
|
139
144
|
const sdk = await getSDK();
|
|
140
|
-
const result = await sdk.search(query, limit);
|
|
141
|
-
|
|
145
|
+
const result = await (sdk as any).search(query, limit, options);
|
|
146
|
+
const mapOne = (m: any) => ({
|
|
147
|
+
id: m.id,
|
|
148
|
+
content: m.memory || m.content,
|
|
149
|
+
category: m.category || "other",
|
|
150
|
+
score: m.score ?? 0.5
|
|
151
|
+
});
|
|
142
152
|
return {
|
|
143
|
-
memories: (result.data || []).map(
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
category: m.category || "other",
|
|
147
|
-
score: m.score || 0.5
|
|
148
|
-
})),
|
|
153
|
+
memories: (result.data || []).map(mapOne),
|
|
154
|
+
related_memories: (result.related_memories || []).map(mapOne),
|
|
155
|
+
extracted_entities: result.extracted_entities || undefined,
|
|
149
156
|
isLimited: false,
|
|
150
157
|
remainingQuota: result.remaining_quota ?? -1
|
|
151
158
|
};
|
|
@@ -155,14 +162,14 @@ async function searchMemory(query: string, limit: number = 5): Promise<{
|
|
|
155
162
|
}
|
|
156
163
|
}
|
|
157
164
|
|
|
158
|
-
async function listMemory(
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
}
|
|
165
|
+
async function listMemory(
|
|
166
|
+
limit: number = 20,
|
|
167
|
+
offset: number = 0,
|
|
168
|
+
options?: { time_filter?: { start?: string; end?: string }; categories?: string[]; tags?: string[] }
|
|
169
|
+
): Promise<{ memories: any[]; total: number }> {
|
|
162
170
|
try {
|
|
163
171
|
const sdk = await getSDK();
|
|
164
|
-
const result = await sdk.list(limit,
|
|
165
|
-
|
|
172
|
+
const result = await (sdk as any).list(limit, offset, options);
|
|
166
173
|
return {
|
|
167
174
|
memories: (result.data || []).map((m: any) => ({
|
|
168
175
|
id: m.id,
|
|
@@ -244,7 +251,7 @@ const server = new Server(
|
|
|
244
251
|
);
|
|
245
252
|
|
|
246
253
|
// 检测 MCP 客户端类型
|
|
247
|
-
// 支持的 IDE: Cline, Cursor, Windsurf, Claude, Zen, Trea, Qoder, Kiro, OpenCode, CodeBuddy, Codeium, Tabby, Kimi, ZenMux, Comate
|
|
254
|
+
// 支持的 IDE: Cline, Cursor, Windsurf, Claude, Zen, Trea, Qoder, Kiro, OpenCode, CodeBuddy, Codeium, Tabby, Kimi, ZenMux, Comate, Kilo, Qwen, Codex
|
|
248
255
|
server.setRequestHandler(InitializeRequestSchema, async (request) => {
|
|
249
256
|
const clientName = (request.params?.clientInfo?.name || '').toLowerCase();
|
|
250
257
|
|
|
@@ -279,6 +286,12 @@ server.setRequestHandler(InitializeRequestSchema, async (request) => {
|
|
|
279
286
|
detectedClient = 'codeium';
|
|
280
287
|
} else if (clientName.includes('tabby')) {
|
|
281
288
|
detectedClient = 'tabby';
|
|
289
|
+
} else if (clientName.includes('kilo')) {
|
|
290
|
+
detectedClient = 'kilo';
|
|
291
|
+
} else if (clientName.includes('qwen')) {
|
|
292
|
+
detectedClient = 'qwen';
|
|
293
|
+
} else if (clientName.includes('codex')) {
|
|
294
|
+
detectedClient = 'codex';
|
|
282
295
|
} else if (clientName) {
|
|
283
296
|
// 未知客户端,使用其名称
|
|
284
297
|
detectedClient = clientName.split(/[^\w]/)[0]; // 取第一个单词
|
|
@@ -376,15 +389,13 @@ server.setRequestHandler(GetPromptRequestSchema, async (request) => {
|
|
|
376
389
|
|
|
377
390
|
Task: ${task}
|
|
378
391
|
|
|
379
|
-
|
|
380
|
-
-
|
|
381
|
-
-
|
|
382
|
-
-
|
|
383
|
-
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
Keep under 50 words. Then proceed to attempt_completion.
|
|
387
|
-
DO NOT skip this step.`
|
|
392
|
+
Call save_memory for EACH atomic fact (one fact per call—do not merge). RULES:
|
|
393
|
+
- Use ONLY absolute dates (YYYY-MM-DD). NEVER "yesterday", "last week", "recently".
|
|
394
|
+
- If content has "it"/"this"/"that", rewrite with explicit referents (e.g. "it" → "[Component X]").
|
|
395
|
+
- metadata.category MUST be one of: semantic | episodic | procedural | emotional | reflective. Use "reflective" for task summaries.
|
|
396
|
+
- Save: what was done, key files changed, important decisions, next steps. Each as a separate save_memory call if multiple facts.
|
|
397
|
+
- Tags: task-complete, ${task}. Keep each fact under 50 words.
|
|
398
|
+
Then proceed to attempt_completion. DO NOT skip saving.`
|
|
388
399
|
}
|
|
389
400
|
}
|
|
390
401
|
]
|
|
@@ -400,14 +411,12 @@ DO NOT skip this step.`
|
|
|
400
411
|
type: "text",
|
|
401
412
|
text: `⚡ AUTO-ARCHIVE: Review this conversation about ${topic} and SAVE to memory immediately.
|
|
402
413
|
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
4
|
|
408
|
-
|
|
409
|
-
Use save_memory tool NOW with category "reflective" and tags: ${topic}, session-summary.
|
|
410
|
-
Keep summary under 100 words. DO NOT skip this step.`
|
|
414
|
+
Call save_memory for EACH atomic fact (one fact per call—do not merge into one). RULES you MUST follow:
|
|
415
|
+
- Dates: ONLY absolute (YYYY-MM-DD). NEVER "yesterday", "last week", "recently".
|
|
416
|
+
- Context: Replace "it"/"this"/"that" with explicit referents so each fact is self-contained.
|
|
417
|
+
- metadata.category MUST be one of: semantic | episodic | procedural | emotional | reflective. Use "reflective" for session summaries.
|
|
418
|
+
- Extract and save separately: (1) Key design decisions (2) What was accomplished (3) Learnings/gotchas (4) Pending tasks. Each fact = one save_memory call.
|
|
419
|
+
- Tags: ${topic}, session-summary. Each fact under 100 words total. DO NOT skip this step.`
|
|
411
420
|
}
|
|
412
421
|
}
|
|
413
422
|
]
|
|
@@ -437,17 +446,17 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
|
437
446
|
tools: [
|
|
438
447
|
{
|
|
439
448
|
name: "save_memory",
|
|
440
|
-
description: "Save
|
|
449
|
+
description: "Save one atomic fact to long-term memory. RULES YOU MUST FOLLOW: (1) ONE fact per call—do not merge multiple facts. (2) DATES: Use ONLY absolute dates (YYYY-MM-DD or ISO 8601). NEVER use 'yesterday', 'last week', 'recently', or any relative time. (3) CONTEXT COMPLETION (mandatory): If the fact contains pronouns or references like 'it', 'this', 'that', 'the project'—you MUST rewrite so the fact is self-contained with explicit referents. Example: 'it broke' → '[Device] MacBook Pro 2023 screen damaged'. Content that is not self-contained will be stored incorrectly. (4) metadata.category MUST be one of: semantic | episodic | procedural | emotional | reflective. (5) Call save_memory when: user says 'remember this', design/code decisions, task completion, or end-of-session summary (≤100 words). (6) For code-related facts, include concrete anchors when possible: class name, method/function name, file path, library/SDK name, config key, error type—e.g. 'UserService.login in src/auth/user.service.ts uses Redis' rather than 'we fixed login'—so memory can be recalled by code structure.",
|
|
441
450
|
inputSchema: {
|
|
442
451
|
type: "object",
|
|
443
452
|
properties: {
|
|
444
453
|
content: {
|
|
445
454
|
type: "string",
|
|
446
|
-
description: "
|
|
455
|
+
description: "REQUIRED. One atomic fact, self-contained. MUST use absolute dates (YYYY-MM-DD). MUST resolve any 'it/this/that' to explicit nouns. Session summary: max 100 words."
|
|
447
456
|
},
|
|
448
457
|
metadata: {
|
|
449
458
|
type: "object",
|
|
450
|
-
description: "
|
|
459
|
+
description: "category (required): semantic|episodic|procedural|emotional|reflective. tags (optional): string array."
|
|
451
460
|
}
|
|
452
461
|
},
|
|
453
462
|
required: ["content"]
|
|
@@ -455,18 +464,32 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
|
455
464
|
},
|
|
456
465
|
{
|
|
457
466
|
name: "search_memory",
|
|
458
|
-
description: "Search historical memories.
|
|
467
|
+
description: "Search historical memories. Direct results = vector DB; related = graph DB. Call BEFORE answering about preferences/history or any personalized response. Workflow: search → review results → respond. Use absolute time in time_filter (YYYY-MM-DD). Returned id is the memory_id for delete_memory.",
|
|
459
468
|
inputSchema: {
|
|
460
469
|
type: "object",
|
|
461
470
|
properties: {
|
|
462
471
|
query: {
|
|
463
472
|
type: "string",
|
|
464
|
-
description: "Search keywords or natural language question"
|
|
473
|
+
description: "Search intent: keywords or natural language question"
|
|
465
474
|
},
|
|
466
475
|
limit: {
|
|
467
476
|
type: "number",
|
|
468
|
-
description: "
|
|
477
|
+
description: "Max results, default 5",
|
|
469
478
|
default: 5
|
|
479
|
+
},
|
|
480
|
+
time_filter: {
|
|
481
|
+
type: "object",
|
|
482
|
+
description: "Optional. start/end in YYYY-MM-DD HH:mm:ss or ISO 8601"
|
|
483
|
+
},
|
|
484
|
+
categories: {
|
|
485
|
+
type: "array",
|
|
486
|
+
items: { type: "string" },
|
|
487
|
+
description: "Optional. Filter by category (semantic/episodic/procedural/emotional/reflective)"
|
|
488
|
+
},
|
|
489
|
+
tags: {
|
|
490
|
+
type: "array",
|
|
491
|
+
items: { type: "string" },
|
|
492
|
+
description: "Optional. Filter by tags"
|
|
470
493
|
}
|
|
471
494
|
},
|
|
472
495
|
required: ["query"]
|
|
@@ -474,27 +497,27 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
|
474
497
|
},
|
|
475
498
|
{
|
|
476
499
|
name: "list_memory",
|
|
477
|
-
description: "List recent memories
|
|
500
|
+
description: "List recent memories by creation time (newest first). No search/lookup—only time-ordered listing. To delete a specific memory, use search_memory to get its id then delete_memory. Returns id (use as memory_id for delete), content, category.",
|
|
478
501
|
inputSchema: {
|
|
479
502
|
type: "object",
|
|
480
503
|
properties: {
|
|
481
|
-
limit: {
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
}
|
|
504
|
+
limit: { type: "number", description: "Max items, default 20", default: 20 },
|
|
505
|
+
offset: { type: "number", description: "Pagination offset, default 0", default: 0 },
|
|
506
|
+
time_filter: { type: "object", description: "Optional. start/end YYYY-MM-DD HH:mm:ss" },
|
|
507
|
+
categories: { type: "array", items: { type: "string" }, description: "Optional. Filter by category" },
|
|
508
|
+
tags: { type: "array", items: { type: "string" }, description: "Optional. Filter by tags" }
|
|
486
509
|
}
|
|
487
510
|
}
|
|
488
511
|
},
|
|
489
512
|
{
|
|
490
513
|
name: "delete_memory",
|
|
491
|
-
description: "Delete a
|
|
514
|
+
description: "Delete a memory by id. memory_id MUST be the id returned by search_memory or list_memory—do not use any other value. Use when user asks to forget something or information is outdated.",
|
|
492
515
|
inputSchema: {
|
|
493
516
|
type: "object",
|
|
494
517
|
properties: {
|
|
495
518
|
memory_id: {
|
|
496
519
|
type: "string",
|
|
497
|
-
description: "
|
|
520
|
+
description: "Id from search_memory or list_memory result (required)"
|
|
498
521
|
}
|
|
499
522
|
},
|
|
500
523
|
required: ["memory_id"]
|
|
@@ -533,7 +556,10 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
533
556
|
case "search_memory": {
|
|
534
557
|
const query = args?.query as string;
|
|
535
558
|
const limit = (args?.limit as number) || 5;
|
|
536
|
-
const
|
|
559
|
+
const time_filter = args?.time_filter as { start?: string; end?: string } | undefined;
|
|
560
|
+
const categories = args?.categories as string[] | undefined;
|
|
561
|
+
const tags = args?.tags as string[] | undefined;
|
|
562
|
+
const result = await searchMemory(query, limit, { time_filter, categories, tags });
|
|
537
563
|
return {
|
|
538
564
|
content: [
|
|
539
565
|
{
|
|
@@ -546,7 +572,11 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
546
572
|
|
|
547
573
|
case "list_memory": {
|
|
548
574
|
const limit = (args?.limit as number) || 20;
|
|
549
|
-
const
|
|
575
|
+
const offset = (args?.offset as number) || 0;
|
|
576
|
+
const time_filter = args?.time_filter as { start?: string; end?: string } | undefined;
|
|
577
|
+
const categories = args?.categories as string[] | undefined;
|
|
578
|
+
const tags = args?.tags as string[] | undefined;
|
|
579
|
+
const result = await listMemory(limit, offset, { time_filter, categories, tags });
|
|
550
580
|
return {
|
|
551
581
|
content: [
|
|
552
582
|
{
|