universal-memory-mcp 0.1.2
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 +133 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +237 -0
- package/dist/index.js.map +1 -0
- package/package.json +53 -0
package/README.md
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# Universal Memory MCP Server
|
|
2
|
+
|
|
3
|
+
MCP Server for persistent AI memory across sessions. Works with any MCP-compatible AI CLI.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -g universal-memory-mcp
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Configuration
|
|
12
|
+
|
|
13
|
+
### Claude Desktop
|
|
14
|
+
|
|
15
|
+
Edit `~/Library/Application Support/Claude/claude_desktop_config.json`:
|
|
16
|
+
|
|
17
|
+
```json
|
|
18
|
+
{
|
|
19
|
+
"mcpServers": {
|
|
20
|
+
"universal-memory": {
|
|
21
|
+
"command": "npx",
|
|
22
|
+
"args": ["-y", "universal-memory-mcp"]
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Claude Code CLI
|
|
29
|
+
|
|
30
|
+
Edit `~/.config/claude/settings.json`:
|
|
31
|
+
|
|
32
|
+
```json
|
|
33
|
+
{
|
|
34
|
+
"mcpServers": {
|
|
35
|
+
"universal-memory": {
|
|
36
|
+
"command": "npx",
|
|
37
|
+
"args": ["-y", "universal-memory-mcp"]
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Tools
|
|
44
|
+
|
|
45
|
+
### memory_search
|
|
46
|
+
|
|
47
|
+
Search through conversation history and long-term memories.
|
|
48
|
+
|
|
49
|
+
```json
|
|
50
|
+
{
|
|
51
|
+
"query": "database decision",
|
|
52
|
+
"time_range": ["2026-01-01", "2026-01-31"],
|
|
53
|
+
"project": "my-project",
|
|
54
|
+
"limit": 10
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**When to use:**
|
|
59
|
+
- User asks about past discussions
|
|
60
|
+
- User references "we talked about before"
|
|
61
|
+
- Need to know user preferences (search "preferences")
|
|
62
|
+
- Need context from previous sessions
|
|
63
|
+
|
|
64
|
+
### memory_record
|
|
65
|
+
|
|
66
|
+
Record conversation for future reference.
|
|
67
|
+
|
|
68
|
+
```json
|
|
69
|
+
{
|
|
70
|
+
"user_message": "Help me design a REST API",
|
|
71
|
+
"ai_response": "Recommended RESTful patterns with resource-based URLs...",
|
|
72
|
+
"project": "my-project"
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**When to use:**
|
|
77
|
+
- After every meaningful conversation exchange
|
|
78
|
+
- To ensure continuity across sessions
|
|
79
|
+
|
|
80
|
+
### memory_update_long_term
|
|
81
|
+
|
|
82
|
+
Store important information for easy retrieval.
|
|
83
|
+
|
|
84
|
+
```json
|
|
85
|
+
{
|
|
86
|
+
"category": "preferences",
|
|
87
|
+
"content": "User prefers TypeScript over JavaScript"
|
|
88
|
+
}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
**Categories:**
|
|
92
|
+
- `preferences` - User's working style and preferences
|
|
93
|
+
- `decisions` - Important technical decisions
|
|
94
|
+
- `facts` - Key information about user/projects
|
|
95
|
+
- `contacts` - People and teams
|
|
96
|
+
|
|
97
|
+
## How It Works
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
User asks about past discussion
|
|
101
|
+
│
|
|
102
|
+
▼
|
|
103
|
+
AI calls memory_search("topic")
|
|
104
|
+
│
|
|
105
|
+
▼
|
|
106
|
+
Returns relevant memories
|
|
107
|
+
│
|
|
108
|
+
▼
|
|
109
|
+
AI responds with context
|
|
110
|
+
│
|
|
111
|
+
▼
|
|
112
|
+
AI calls memory_record() to save this exchange
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Storage
|
|
116
|
+
|
|
117
|
+
All data stored locally in `~/.ai_memory/`:
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
~/.ai_memory/
|
|
121
|
+
├── daily/ # Daily conversation logs (YYYY-MM-DD.md)
|
|
122
|
+
├── long_term/ # Important memories (MEMORY.md, preferences.md, etc.)
|
|
123
|
+
├── projects/ # Project-specific state
|
|
124
|
+
└── config.json # Configuration
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Development
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
pnpm install
|
|
131
|
+
pnpm build
|
|
132
|
+
node dist/index.js
|
|
133
|
+
```
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Universal Memory MCP Server
|
|
4
|
+
*
|
|
5
|
+
* Provides MCP tools for persistent memory across AI sessions:
|
|
6
|
+
* - memory_search: Search conversation history and long-term memories
|
|
7
|
+
* - memory_record: Record conversations
|
|
8
|
+
* - memory_update_long_term: Update long-term memory
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Universal Memory MCP Server
|
|
4
|
+
*
|
|
5
|
+
* Provides MCP tools for persistent memory across AI sessions:
|
|
6
|
+
* - memory_search: Search conversation history and long-term memories
|
|
7
|
+
* - memory_record: Record conversations
|
|
8
|
+
* - memory_update_long_term: Update long-term memory
|
|
9
|
+
*/
|
|
10
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
11
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
12
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
13
|
+
import { createMemoryManager } from 'universal-memory-core';
|
|
14
|
+
// Create memory manager
|
|
15
|
+
const memoryManager = createMemoryManager();
|
|
16
|
+
// Create MCP Server
|
|
17
|
+
const server = new Server({
|
|
18
|
+
name: 'universal-memory-mcp',
|
|
19
|
+
version: '0.1.0',
|
|
20
|
+
}, {
|
|
21
|
+
capabilities: {
|
|
22
|
+
tools: {},
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
// Define tools
|
|
26
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
27
|
+
return {
|
|
28
|
+
tools: [
|
|
29
|
+
{
|
|
30
|
+
name: 'memory_search',
|
|
31
|
+
description: `Search through conversation history and long-term memories.
|
|
32
|
+
|
|
33
|
+
WHEN TO USE:
|
|
34
|
+
- When user asks about past discussions, decisions, or preferences
|
|
35
|
+
- When user references something "we talked about before"
|
|
36
|
+
- When you need context from previous sessions
|
|
37
|
+
- When user asks "what did we decide about X" or "remember when we..."
|
|
38
|
+
- When you need to know user preferences (search "preferences" or specific topic)
|
|
39
|
+
|
|
40
|
+
This searches across all recorded conversations and long-term memories.
|
|
41
|
+
Use specific keywords for better results (e.g., "TypeScript preferences", "database decision").`,
|
|
42
|
+
inputSchema: {
|
|
43
|
+
type: 'object',
|
|
44
|
+
properties: {
|
|
45
|
+
query: {
|
|
46
|
+
type: 'string',
|
|
47
|
+
description: 'Search keywords or question',
|
|
48
|
+
},
|
|
49
|
+
time_range: {
|
|
50
|
+
type: 'array',
|
|
51
|
+
items: { type: 'string' },
|
|
52
|
+
description: 'Time range [start_date, end_date], format: YYYY-MM-DD',
|
|
53
|
+
},
|
|
54
|
+
project: {
|
|
55
|
+
type: 'string',
|
|
56
|
+
description: 'Filter by project name',
|
|
57
|
+
},
|
|
58
|
+
limit: {
|
|
59
|
+
type: 'number',
|
|
60
|
+
description: 'Max results to return, default 10',
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
required: ['query'],
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
name: 'memory_record',
|
|
68
|
+
description: `Record the current conversation exchange for future reference.
|
|
69
|
+
|
|
70
|
+
WHEN TO USE:
|
|
71
|
+
- After EVERY meaningful conversation exchange
|
|
72
|
+
- When the conversation contains information worth remembering
|
|
73
|
+
- To ensure continuity across sessions
|
|
74
|
+
|
|
75
|
+
What to record:
|
|
76
|
+
- user_message: The user's question or request
|
|
77
|
+
- ai_response: Summary of your response (key points, not full text)
|
|
78
|
+
|
|
79
|
+
This builds memory over time, allowing recall of past discussions in future sessions.`,
|
|
80
|
+
inputSchema: {
|
|
81
|
+
type: 'object',
|
|
82
|
+
properties: {
|
|
83
|
+
user_message: {
|
|
84
|
+
type: 'string',
|
|
85
|
+
description: 'The user message/question',
|
|
86
|
+
},
|
|
87
|
+
ai_response: {
|
|
88
|
+
type: 'string',
|
|
89
|
+
description: 'Summary of your response (key points)',
|
|
90
|
+
},
|
|
91
|
+
project: {
|
|
92
|
+
type: 'string',
|
|
93
|
+
description: 'Project name if in a project context',
|
|
94
|
+
},
|
|
95
|
+
session_id: {
|
|
96
|
+
type: 'string',
|
|
97
|
+
description: 'Session ID for grouping related conversations',
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
required: ['user_message', 'ai_response'],
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
name: 'memory_update_long_term',
|
|
105
|
+
description: `Store important information in long-term memory for easy retrieval.
|
|
106
|
+
|
|
107
|
+
WHEN TO USE - Call this when you identify:
|
|
108
|
+
- User preferences (coding style, tools, communication preferences)
|
|
109
|
+
- Important decisions (architecture choices, technology selections)
|
|
110
|
+
- Key facts about user or their projects
|
|
111
|
+
- Contact information or team details
|
|
112
|
+
|
|
113
|
+
Categories:
|
|
114
|
+
- preferences: User's personal preferences and working style
|
|
115
|
+
- decisions: Important technical or project decisions
|
|
116
|
+
- facts: Key information about user, projects, or context
|
|
117
|
+
- contacts: People, teams, or organizations mentioned
|
|
118
|
+
|
|
119
|
+
Long-term memories are searchable via memory_search.`,
|
|
120
|
+
inputSchema: {
|
|
121
|
+
type: 'object',
|
|
122
|
+
properties: {
|
|
123
|
+
category: {
|
|
124
|
+
type: 'string',
|
|
125
|
+
enum: ['decisions', 'preferences', 'contacts', 'facts'],
|
|
126
|
+
description: 'Memory category',
|
|
127
|
+
},
|
|
128
|
+
content: {
|
|
129
|
+
type: 'string',
|
|
130
|
+
description: 'Content to remember',
|
|
131
|
+
},
|
|
132
|
+
},
|
|
133
|
+
required: ['category', 'content'],
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
],
|
|
137
|
+
};
|
|
138
|
+
});
|
|
139
|
+
// Handle tool calls
|
|
140
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
141
|
+
const { name, arguments: args } = request.params;
|
|
142
|
+
try {
|
|
143
|
+
switch (name) {
|
|
144
|
+
case 'memory_search': {
|
|
145
|
+
const { query, time_range, project, limit } = args;
|
|
146
|
+
const results = await memoryManager.search(query, {
|
|
147
|
+
timeRange: time_range
|
|
148
|
+
? [new Date(time_range[0]), new Date(time_range[1])]
|
|
149
|
+
: undefined,
|
|
150
|
+
project,
|
|
151
|
+
limit,
|
|
152
|
+
});
|
|
153
|
+
if (results.length === 0) {
|
|
154
|
+
return {
|
|
155
|
+
content: [
|
|
156
|
+
{
|
|
157
|
+
type: 'text',
|
|
158
|
+
text: `No memories found matching "${query}".`,
|
|
159
|
+
},
|
|
160
|
+
],
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
const formatted = results
|
|
164
|
+
.map((r, i) => {
|
|
165
|
+
const date = r.timestamp.toISOString().split('T')[0];
|
|
166
|
+
const projectInfo = r.project ? ` [${r.project}]` : '';
|
|
167
|
+
return `### Result ${i + 1}${projectInfo} (${date}, relevance: ${(r.score * 100).toFixed(0)}%)\n\n${r.content}`;
|
|
168
|
+
})
|
|
169
|
+
.join('\n\n---\n\n');
|
|
170
|
+
return {
|
|
171
|
+
content: [
|
|
172
|
+
{
|
|
173
|
+
type: 'text',
|
|
174
|
+
text: `Found ${results.length} relevant memories:\n\n${formatted}`,
|
|
175
|
+
},
|
|
176
|
+
],
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
case 'memory_record': {
|
|
180
|
+
const { user_message, ai_response, project, session_id } = args;
|
|
181
|
+
const conversation = await memoryManager.recordConversation(user_message, ai_response, {
|
|
182
|
+
project,
|
|
183
|
+
sessionId: session_id,
|
|
184
|
+
});
|
|
185
|
+
return {
|
|
186
|
+
content: [
|
|
187
|
+
{
|
|
188
|
+
type: 'text',
|
|
189
|
+
text: `Conversation recorded (ID: ${conversation.id})`,
|
|
190
|
+
},
|
|
191
|
+
],
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
case 'memory_update_long_term': {
|
|
195
|
+
const { category, content } = args;
|
|
196
|
+
await memoryManager.updateLongTermMemory(category, content);
|
|
197
|
+
return {
|
|
198
|
+
content: [
|
|
199
|
+
{
|
|
200
|
+
type: 'text',
|
|
201
|
+
text: `Stored in long-term memory [${category}]:\n\n${content}`,
|
|
202
|
+
},
|
|
203
|
+
],
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
default:
|
|
207
|
+
throw new Error(`Unknown tool: ${name}`);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
catch (error) {
|
|
211
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
212
|
+
return {
|
|
213
|
+
content: [
|
|
214
|
+
{
|
|
215
|
+
type: 'text',
|
|
216
|
+
text: `Error: ${message}`,
|
|
217
|
+
},
|
|
218
|
+
],
|
|
219
|
+
isError: true,
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
// Start server
|
|
224
|
+
async function main() {
|
|
225
|
+
// Initialize memory system
|
|
226
|
+
await memoryManager.initialize();
|
|
227
|
+
console.error('Universal Memory MCP Server starting...');
|
|
228
|
+
console.error(`Storage path: ${memoryManager.getStoragePath()}`);
|
|
229
|
+
const transport = new StdioServerTransport();
|
|
230
|
+
await server.connect(transport);
|
|
231
|
+
console.error('Universal Memory MCP Server running');
|
|
232
|
+
}
|
|
233
|
+
main().catch((error) => {
|
|
234
|
+
console.error('Fatal error:', error);
|
|
235
|
+
process.exit(1);
|
|
236
|
+
});
|
|
237
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAqB,MAAM,uBAAuB,CAAC;AAE/E,wBAAwB;AACxB,MAAM,aAAa,GAAG,mBAAmB,EAAE,CAAC;AAE5C,oBAAoB;AACpB,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;IACE,IAAI,EAAE,sBAAsB;IAC5B,OAAO,EAAE,OAAO;CACjB,EACD;IACE,YAAY,EAAE;QACZ,KAAK,EAAE,EAAE;KACV;CACF,CACF,CAAC;AAEF,eAAe;AACf,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;IAC1D,OAAO;QACL,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,eAAe;gBACrB,WAAW,EAAE;;;;;;;;;;gGAU2E;gBACxF,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,6BAA6B;yBAC3C;wBACD,UAAU,EAAE;4BACV,IAAI,EAAE,OAAO;4BACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACzB,WAAW,EAAE,uDAAuD;yBACrE;wBACD,OAAO,EAAE;4BACP,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,wBAAwB;yBACtC;wBACD,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,mCAAmC;yBACjD;qBACF;oBACD,QAAQ,EAAE,CAAC,OAAO,CAAC;iBACpB;aACF;YACD;gBACE,IAAI,EAAE,eAAe;gBACrB,WAAW,EAAE;;;;;;;;;;;sFAWiE;gBAC9E,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,YAAY,EAAE;4BACZ,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,2BAA2B;yBACzC;wBACD,WAAW,EAAE;4BACX,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,uCAAuC;yBACrD;wBACD,OAAO,EAAE;4BACP,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,sCAAsC;yBACpD;wBACD,UAAU,EAAE;4BACV,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,+CAA+C;yBAC7D;qBACF;oBACD,QAAQ,EAAE,CAAC,cAAc,EAAE,aAAa,CAAC;iBAC1C;aACF;YACD;gBACE,IAAI,EAAE,yBAAyB;gBAC/B,WAAW,EAAE;;;;;;;;;;;;;;qDAcgC;gBAC7C,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,QAAQ,EAAE;4BACR,IAAI,EAAE,QAAQ;4BACd,IAAI,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,CAAC;4BACvD,WAAW,EAAE,iBAAiB;yBAC/B;wBACD,OAAO,EAAE;4BACP,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,qBAAqB;yBACnC;qBACF;oBACD,QAAQ,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC;iBAClC;aACF;SACF;KACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,oBAAoB;AACpB,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAEjD,IAAI,CAAC;QACH,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,eAAe,CAAC,CAAC,CAAC;gBACrB,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAK7C,CAAC;gBAEF,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE;oBAChD,SAAS,EAAE,UAAU;wBACnB,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;wBACpD,CAAC,CAAC,SAAS;oBACb,OAAO;oBACP,KAAK;iBACN,CAAC,CAAC;gBAEH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzB,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,+BAA+B,KAAK,IAAI;6BAC/C;yBACF;qBACF,CAAC;gBACJ,CAAC;gBAED,MAAM,SAAS,GAAG,OAAO;qBACtB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;oBACZ,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBACrD,MAAM,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBACvD,OAAO,cAAc,CAAC,GAAG,CAAC,GAAG,WAAW,KAAK,IAAI,gBAAgB,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;gBAClH,CAAC,CAAC;qBACD,IAAI,CAAC,aAAa,CAAC,CAAC;gBAEvB,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,SAAS,OAAO,CAAC,MAAM,0BAA0B,SAAS,EAAE;yBACnE;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,KAAK,eAAe,CAAC,CAAC,CAAC;gBACrB,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,IAK1D,CAAC;gBAEF,MAAM,YAAY,GAAG,MAAM,aAAa,CAAC,kBAAkB,CACzD,YAAY,EACZ,WAAW,EACX;oBACE,OAAO;oBACP,SAAS,EAAE,UAAU;iBACtB,CACF,CAAC;gBAEF,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,8BAA8B,YAAY,CAAC,EAAE,GAAG;yBACvD;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,KAAK,yBAAyB,CAAC,CAAC,CAAC;gBAC/B,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAG7B,CAAC;gBAEF,MAAM,aAAa,CAAC,oBAAoB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAE5D,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,+BAA+B,QAAQ,SAAS,OAAO,EAAE;yBAChE;qBACF;iBACF,CAAC;YACJ,CAAC;YAED;gBACE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,UAAU,OAAO,EAAE;iBAC1B;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,eAAe;AACf,KAAK,UAAU,IAAI;IACjB,2BAA2B;IAC3B,MAAM,aAAa,CAAC,UAAU,EAAE,CAAC;IAEjC,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;IACzD,OAAO,CAAC,KAAK,CAAC,iBAAiB,aAAa,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAEjE,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;AACvD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "universal-memory-mcp",
|
|
3
|
+
"version": "0.1.2",
|
|
4
|
+
"description": "MCP Server for persistent AI memory across sessions",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"bin": {
|
|
9
|
+
"universal-memory-mcp": "./dist/index.js"
|
|
10
|
+
},
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"import": "./dist/index.js",
|
|
14
|
+
"types": "./dist/index.d.ts"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"scripts": {
|
|
18
|
+
"build": "tsc",
|
|
19
|
+
"dev": "tsc --watch",
|
|
20
|
+
"clean": "rm -rf dist",
|
|
21
|
+
"start": "node dist/index.js",
|
|
22
|
+
"test": "vitest"
|
|
23
|
+
},
|
|
24
|
+
"dependencies": {
|
|
25
|
+
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
26
|
+
"universal-memory-core": "^0.1.2"
|
|
27
|
+
},
|
|
28
|
+
"devDependencies": {
|
|
29
|
+
"@types/node": "^20.11.0",
|
|
30
|
+
"typescript": "^5.3.0",
|
|
31
|
+
"vitest": "^1.2.0"
|
|
32
|
+
},
|
|
33
|
+
"keywords": [
|
|
34
|
+
"mcp",
|
|
35
|
+
"memory",
|
|
36
|
+
"ai",
|
|
37
|
+
"claude",
|
|
38
|
+
"context",
|
|
39
|
+
"model-context-protocol"
|
|
40
|
+
],
|
|
41
|
+
"author": "slicenferqin",
|
|
42
|
+
"license": "MIT",
|
|
43
|
+
"repository": {
|
|
44
|
+
"type": "git",
|
|
45
|
+
"url": "git+https://github.com/slicenferqin/universal-memory-mcp.git",
|
|
46
|
+
"directory": "packages/mcp-server"
|
|
47
|
+
},
|
|
48
|
+
"homepage": "https://github.com/slicenferqin/universal-memory-mcp#readme",
|
|
49
|
+
"files": [
|
|
50
|
+
"dist",
|
|
51
|
+
"README.md"
|
|
52
|
+
]
|
|
53
|
+
}
|