memdata-mcp 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 ADDED
@@ -0,0 +1,117 @@
1
+ # memdata-mcp
2
+
3
+ MCP server for [MemData](https://memdata.ai) - persistent memory for AI agents.
4
+
5
+ Give Claude, Cursor, or any MCP-compatible AI long-term memory across conversations.
6
+
7
+ ## Quick Start
8
+
9
+ ### 1. Get your API key
10
+
11
+ Create an API key at [memdata.ai/dashboard/api-keys](https://memdata.ai/dashboard/api-keys)
12
+
13
+ ### 2. Add to your MCP config
14
+
15
+ **Claude Desktop** (`~/Library/Application Support/Claude/claude_desktop_config.json`):
16
+
17
+ ```json
18
+ {
19
+ "mcpServers": {
20
+ "memdata": {
21
+ "command": "npx",
22
+ "args": ["memdata-mcp"],
23
+ "env": {
24
+ "MEMDATA_API_KEY": "md_your_key"
25
+ }
26
+ }
27
+ }
28
+ }
29
+ ```
30
+
31
+ **Claude Code** (`~/.claude.json` or project `.mcp.json`):
32
+
33
+ ```json
34
+ {
35
+ "mcpServers": {
36
+ "memdata": {
37
+ "command": "npx",
38
+ "args": ["memdata-mcp"],
39
+ "env": {
40
+ "MEMDATA_API_KEY": "md_your_key"
41
+ }
42
+ }
43
+ }
44
+ }
45
+ ```
46
+
47
+ **Cursor** (`~/.cursor/mcp.json`):
48
+
49
+ ```json
50
+ {
51
+ "mcpServers": {
52
+ "memdata": {
53
+ "command": "npx",
54
+ "args": ["memdata-mcp"],
55
+ "env": {
56
+ "MEMDATA_API_KEY": "md_your_key"
57
+ }
58
+ }
59
+ }
60
+ }
61
+ ```
62
+
63
+ ### 3. Restart your client
64
+
65
+ You should now see `memdata_ingest` and `memdata_query` tools available.
66
+
67
+ ## Tools
68
+
69
+ ### `memdata_ingest`
70
+
71
+ Store text in long-term memory.
72
+
73
+ ```
74
+ "Remember that we decided to use PostgreSQL for the new project."
75
+ ```
76
+
77
+ **Parameters:**
78
+ - `content` (string) - Text to store
79
+ - `name` (string) - Source identifier (e.g., "meeting-notes-jan-29")
80
+
81
+ ### `memdata_query`
82
+
83
+ Search memory with natural language.
84
+
85
+ ```
86
+ "What database did we choose?"
87
+ ```
88
+
89
+ **Parameters:**
90
+ - `query` (string) - Natural language search
91
+ - `limit` (number, optional) - Max results (default: 5)
92
+
93
+ ## How it works
94
+
95
+ 1. **Ingest**: Text is chunked, embedded (OpenAI text-embedding-3-small), and stored
96
+ 2. **Query**: Your question is embedded and matched against stored memories using vector similarity
97
+ 3. **Results**: Returns semantically similar content with similarity scores
98
+
99
+ Scores of 30-50% are typical for good matches. Semantic search finds meaning, not keywords.
100
+
101
+ ## Environment Variables
102
+
103
+ | Variable | Required | Description |
104
+ |----------|----------|-------------|
105
+ | `MEMDATA_API_KEY` | Yes | Your API key from memdata.ai |
106
+ | `MEMDATA_API_URL` | No | API URL (default: https://memdata.ai) |
107
+
108
+ ## Links
109
+
110
+ - [MemData](https://memdata.ai) - Main site
111
+ - [Dashboard](https://memdata.ai/dashboard) - Manage your memory
112
+ - [Docs](https://memdata.ai/docs) - Full documentation
113
+ - [GitHub](https://github.com/thelabvenice/mem-data) - Source code
114
+
115
+ ## License
116
+
117
+ MIT
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * MemData MCP Server
4
+ *
5
+ * A thin client that exposes memory ingestion and query tools via MCP.
6
+ * Connects to the hosted MemData API (memdata.ai).
7
+ *
8
+ * Usage:
9
+ * npx memdata-mcp
10
+ *
11
+ * Environment Variables:
12
+ * MEMDATA_API_KEY - Your MemData API key (required, starts with md_)
13
+ * MEMDATA_API_URL - API URL (optional, defaults to https://memdata.ai)
14
+ */
15
+ export {};
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;GAYG"}
package/dist/index.js ADDED
@@ -0,0 +1,181 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * MemData MCP Server
5
+ *
6
+ * A thin client that exposes memory ingestion and query tools via MCP.
7
+ * Connects to the hosted MemData API (memdata.ai).
8
+ *
9
+ * Usage:
10
+ * npx memdata-mcp
11
+ *
12
+ * Environment Variables:
13
+ * MEMDATA_API_KEY - Your MemData API key (required, starts with md_)
14
+ * MEMDATA_API_URL - API URL (optional, defaults to https://memdata.ai)
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
18
+ const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
19
+ const zod_1 = require("zod");
20
+ // Configuration
21
+ const MEMDATA_API_KEY = process.env.MEMDATA_API_KEY;
22
+ const MEMDATA_API_URL = process.env.MEMDATA_API_URL || 'https://memdata.ai';
23
+ if (!MEMDATA_API_KEY) {
24
+ console.error('Error: MEMDATA_API_KEY environment variable is required');
25
+ console.error('');
26
+ console.error('Get your API key at: https://memdata.ai/dashboard/api-keys');
27
+ console.error('');
28
+ console.error('Then add to your MCP config:');
29
+ console.error(JSON.stringify({
30
+ mcpServers: {
31
+ memdata: {
32
+ command: 'npx',
33
+ args: ['memdata-mcp'],
34
+ env: {
35
+ MEMDATA_API_KEY: 'md_your_key_here'
36
+ }
37
+ }
38
+ }
39
+ }, null, 2));
40
+ process.exit(1);
41
+ }
42
+ /**
43
+ * Call the MemData API
44
+ */
45
+ async function callAPI(endpoint, body) {
46
+ const response = await fetch(`${MEMDATA_API_URL}${endpoint}`, {
47
+ method: 'POST',
48
+ headers: {
49
+ Authorization: `Bearer ${MEMDATA_API_KEY}`,
50
+ 'Content-Type': 'application/json',
51
+ },
52
+ body: JSON.stringify(body),
53
+ });
54
+ if (!response.ok) {
55
+ const error = await response.text();
56
+ throw new Error(`API error (${response.status}): ${error}`);
57
+ }
58
+ return response.json();
59
+ }
60
+ /**
61
+ * Ingest text content into memory
62
+ */
63
+ async function ingestContent(content, name) {
64
+ const result = (await callAPI('/api/memdata/ingest', {
65
+ content,
66
+ sourceName: name,
67
+ }));
68
+ if (!result.success) {
69
+ return { success: false, message: result.error || 'Unknown error' };
70
+ }
71
+ return {
72
+ success: true,
73
+ artifactId: result.artifact_id,
74
+ chunkCount: result.chunk_count,
75
+ };
76
+ }
77
+ /**
78
+ * Query memory for relevant context
79
+ */
80
+ async function queryMemory(query, limit = 5) {
81
+ const result = (await callAPI('/api/memdata/query', {
82
+ query,
83
+ limit,
84
+ }));
85
+ if (!result.success) {
86
+ return { success: false, message: result.error || 'Unknown error' };
87
+ }
88
+ return {
89
+ success: true,
90
+ results: (result.results || []).map((r) => ({
91
+ text: r.chunk_text,
92
+ source: r.source_name,
93
+ score: Math.round(r.similarity_score * 1000) / 1000,
94
+ })),
95
+ };
96
+ }
97
+ // Create MCP server
98
+ const server = new mcp_js_1.McpServer({
99
+ name: 'memdata',
100
+ version: '1.0.0',
101
+ });
102
+ // Register ingest tool
103
+ server.tool('memdata_ingest', 'Ingest text content into long-term memory for later retrieval. Use this to store important information, notes, decisions, or context that should be remembered across conversations.', {
104
+ content: zod_1.z.string().describe('Text content to store in memory'),
105
+ name: zod_1.z.string().describe('Source name/identifier for this memory (e.g., "meeting-notes-2024-01-15", "project-decision", "user-preference")'),
106
+ }, async ({ content, name }) => {
107
+ try {
108
+ const result = await ingestContent(content, name);
109
+ if (!result.success) {
110
+ return {
111
+ content: [{ type: 'text', text: `Failed to ingest: ${result.message}` }],
112
+ isError: true,
113
+ };
114
+ }
115
+ return {
116
+ content: [
117
+ {
118
+ type: 'text',
119
+ text: `Successfully stored in memory:\n- Artifact ID: ${result.artifactId}\n- Chunks created: ${result.chunkCount}\n- Source: ${name}`,
120
+ },
121
+ ],
122
+ };
123
+ }
124
+ catch (error) {
125
+ const message = error instanceof Error ? error.message : 'Unknown error';
126
+ return {
127
+ content: [{ type: 'text', text: `Failed to ingest content: ${message}` }],
128
+ isError: true,
129
+ };
130
+ }
131
+ });
132
+ // Register query tool
133
+ server.tool('memdata_query', 'Search memory for relevant context based on a natural language query. Returns the most semantically similar stored content with similarity scores.', {
134
+ query: zod_1.z.string().describe('Natural language search query (e.g., "What did we decide about the database?", "meeting notes from last week")'),
135
+ limit: zod_1.z.number().optional().default(5).describe('Maximum number of results to return (default: 5, max: 20)'),
136
+ }, async ({ query, limit }) => {
137
+ try {
138
+ const result = await queryMemory(query, Math.min(limit, 20));
139
+ if (!result.success) {
140
+ return {
141
+ content: [{ type: 'text', text: `Failed to query: ${result.message}` }],
142
+ isError: true,
143
+ };
144
+ }
145
+ if (!result.results || result.results.length === 0) {
146
+ return {
147
+ content: [{ type: 'text', text: 'No relevant memories found for this query.' }],
148
+ };
149
+ }
150
+ const formatted = result.results
151
+ .map((r, i) => `[${i + 1}] (${(r.score * 100).toFixed(1)}% match) ${r.source}\n${r.text}`)
152
+ .join('\n\n---\n\n');
153
+ return {
154
+ content: [
155
+ {
156
+ type: 'text',
157
+ text: `Found ${result.results.length} relevant memories:\n\n${formatted}`,
158
+ },
159
+ ],
160
+ };
161
+ }
162
+ catch (error) {
163
+ const message = error instanceof Error ? error.message : 'Unknown error';
164
+ return {
165
+ content: [{ type: 'text', text: `Failed to query memory: ${message}` }],
166
+ isError: true,
167
+ };
168
+ }
169
+ });
170
+ // Start server
171
+ async function main() {
172
+ const transport = new stdio_js_1.StdioServerTransport();
173
+ await server.connect(transport);
174
+ console.error('MemData MCP server running');
175
+ console.error(`API: ${MEMDATA_API_URL}`);
176
+ }
177
+ main().catch((error) => {
178
+ console.error('Failed to start MCP server:', error);
179
+ process.exit(1);
180
+ });
181
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "memdata-mcp",
3
+ "version": "1.0.0",
4
+ "description": "MCP server for MemData - persistent memory for AI agents",
5
+ "keywords": [
6
+ "mcp",
7
+ "model-context-protocol",
8
+ "claude",
9
+ "ai",
10
+ "memory",
11
+ "semantic-search",
12
+ "embeddings"
13
+ ],
14
+ "author": "The Lab Venice",
15
+ "license": "MIT",
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "https://github.com/thelabvenice/mem-data.git",
19
+ "directory": "packages/memdata-mcp"
20
+ },
21
+ "homepage": "https://memdata.ai",
22
+ "bin": {
23
+ "memdata-mcp": "./dist/index.js"
24
+ },
25
+ "main": "./dist/index.js",
26
+ "types": "./dist/index.d.ts",
27
+ "files": [
28
+ "dist",
29
+ "README.md"
30
+ ],
31
+ "scripts": {
32
+ "build": "tsc",
33
+ "prepublishOnly": "npm run build"
34
+ },
35
+ "dependencies": {
36
+ "@modelcontextprotocol/sdk": "^1.0.0",
37
+ "zod": "^3.23.0"
38
+ },
39
+ "devDependencies": {
40
+ "@types/node": "^25.1.0",
41
+ "typescript": "^5.0.0"
42
+ },
43
+ "engines": {
44
+ "node": ">=18.0.0"
45
+ }
46
+ }