@mnemoverse/mcp-memory-server 0.7.0 → 0.8.1
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 +39 -5
- package/dist/index.d.ts +23 -1
- package/dist/index.js +673 -120
- package/dist/index.js.map +1 -1
- package/dist/names.d.ts +168 -0
- package/dist/names.js +216 -0
- package/dist/names.js.map +1 -0
- package/dist/render.d.ts +80 -6
- package/dist/render.js +99 -10
- package/dist/render.js.map +1 -1
- package/dist/requests.d.ts +69 -0
- package/dist/requests.js +76 -0
- package/dist/requests.js.map +1 -0
- package/dist/scope.d.ts +223 -0
- package/dist/scope.js +480 -0
- package/dist/scope.js.map +1 -0
- package/dist/teaching.d.ts +68 -24
- package/dist/teaching.js +124 -30
- package/dist/teaching.js.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -200,11 +200,16 @@ If it doesn't remember: check that the client was fully restarted and the config
|
|
|
200
200
|
|------|-------------|
|
|
201
201
|
| `memory_write` | Store a memory — insight, preference, lesson learned |
|
|
202
202
|
| `memory_read` | Search memories by natural language query (optional recency ordering, time bounds, author exclusion) |
|
|
203
|
-
| `memory_list_recent` | List newest memories first — no query; `since`
|
|
203
|
+
| `memory_list_recent` | List newest memories first — no query; `since`/`until` bounds (inclusive) + cursor paging |
|
|
204
204
|
| `memory_feedback` | Rate memories as helpful or not (improves future recall) |
|
|
205
205
|
| `memory_stats` | Check how many memories stored, which domains exist |
|
|
206
206
|
| `memory_delete` | Permanently delete a single memory by `atom_id` |
|
|
207
207
|
| `memory_delete_domain` | Wipe an entire domain (requires `confirm: true` safety interlock) |
|
|
208
|
+
| `memory_create_room` | Create a shared memory room; its address works as a `domain` on write/read |
|
|
209
|
+
| `memory_invite_to_room` | Mint a one-time invite (code + link) for a room you own |
|
|
210
|
+
| `memory_join_room` | Join a shared room with an invite code (`mnvr_...`) |
|
|
211
|
+
| `memory_list_rooms` | List rooms you own or joined, with each room's address to use as `domain` |
|
|
212
|
+
| `vault_list` | List Vault secrets by alias and purpose — the secret value is never returned |
|
|
208
213
|
|
|
209
214
|
## Ideas: What to Remember
|
|
210
215
|
|
|
@@ -232,15 +237,29 @@ The same API key works across all tools. Write a memory in Claude Code — read
|
|
|
232
237
|
|
|
233
238
|
| Env Variable | Required | Default |
|
|
234
239
|
|-------------|----------|---------|
|
|
235
|
-
| `MNEMOVERSE_API_KEY` |
|
|
240
|
+
| `MNEMOVERSE_API_KEY` | For every tool call — the server starts and lists its tools without one | — |
|
|
236
241
|
| `MNEMOVERSE_API_URL` | No | `https://core.mnemoverse.com/api/v1` |
|
|
237
242
|
|
|
238
243
|
## Links
|
|
239
244
|
|
|
245
|
+
**Setup and reference**
|
|
246
|
+
|
|
240
247
|
- [Documentation](https://mnemoverse.com/docs/api/mcp-server)
|
|
248
|
+
- [Cursor](https://mnemoverse.com/docs/api/cursor) · [VS Code](https://mnemoverse.com/docs/api/vs-code) · [Claude Code](https://mnemoverse.com/docs/api/claude) · [ChatGPT](https://mnemoverse.com/docs/api/chatgpt)
|
|
241
249
|
- [Python SDK](https://mnemoverse.com/docs/api/python-sdk)
|
|
242
250
|
- [API Reference](https://mnemoverse.com/docs/api/reference)
|
|
243
251
|
- [Console (get API key)](https://console.mnemoverse.com)
|
|
252
|
+
|
|
253
|
+
**Background reading**
|
|
254
|
+
|
|
255
|
+
- [Memory MCP servers compared](https://mnemoverse.com/docs/library/memory-mcp-servers-compared) — thirteen shipping options, with pricing and registry presence
|
|
256
|
+
- [How to choose a memory MCP server](https://mnemoverse.com/docs/library/memory-mcp) — the five questions that narrow the field
|
|
257
|
+
- [What AI agent memory is](https://mnemoverse.com/docs/library/ai-agent-memory) — the category explained
|
|
258
|
+
- [Is this a vector database?](https://mnemoverse.com/docs/library/not-a-vector-database) — what makes a memory layer different
|
|
259
|
+
- [Shared memory for multi-agent systems](https://mnemoverse.com/docs/library/shared-memory-for-multi-agent-systems) — how Rooms work and when to use them
|
|
260
|
+
|
|
261
|
+
**Project**
|
|
262
|
+
|
|
244
263
|
- [GitHub](https://github.com/mnemoverse/mcp-memory-server)
|
|
245
264
|
- [Releases](https://github.com/mnemoverse/mcp-memory-server/releases)
|
|
246
265
|
- [MCP Registry entry](https://registry.modelcontextprotocol.io/v0/servers?search=mnemoverse)
|
|
@@ -248,12 +267,27 @@ The same API key works across all tools. Write a memory in Claude Code — read
|
|
|
248
267
|
|
|
249
268
|
## Privacy
|
|
250
269
|
|
|
251
|
-
This server sends
|
|
270
|
+
This server sends to the Mnemoverse API (`core.mnemoverse.com`), authenticated with your API key, what a tool call carries — and nothing else it can see. It does **not** read your AI client's conversation history, your local files, or anything you don't pass to a `memory_*` / `vault_*` tool. Stored memories live under your account; Mnemoverse never sells them and never shares them on its own. The one sharing path is the one you create yourself: inviting someone to a shared room grants their assistant access to that room's memories, bounded by the invite's scope.
|
|
271
|
+
|
|
272
|
+
What each tool sends:
|
|
273
|
+
|
|
274
|
+
| Tool | Data sent |
|
|
275
|
+
|---|---|
|
|
276
|
+
| `memory_write` | the `content`, `concepts`, and `domain` you pass |
|
|
277
|
+
| `memory_read` | the `query`, plus any filters: `domain`, `since`/`until`, `exclude_author`, `top_k`, `order_by` |
|
|
278
|
+
| `memory_list_recent` | the feed filters: `domain`, `since`/`until`, `exclude_author`, `limit`, `cursor` |
|
|
279
|
+
| `memory_feedback` | the `atom_ids` being rated and the `outcome` score |
|
|
280
|
+
| `memory_delete` / `memory_delete_domain` | the `atom_id` / `domain` being deleted |
|
|
281
|
+
| `memory_create_room` | the room `name` and `description` |
|
|
282
|
+
| `memory_invite_to_room` | the `room_id`, invite `scope`, and expiry |
|
|
283
|
+
| `memory_join_room` | the invite `code` |
|
|
284
|
+
| `memory_stats` / `memory_list_rooms` / `vault_list` | no request body — authenticated GETs |
|
|
285
|
+
|
|
286
|
+
One thing goes out that you did not explicitly request: since 0.8.1, when a search or feed comes back empty, the server sends one or two authenticated read-only GET probes (`/memory/rooms` and/or `/memory/stats`) so the empty answer can say what it did not cover. The probes carry your API key and nothing else, change no stored state, and are disclosed in the [CHANGELOG](CHANGELOG.md).
|
|
252
287
|
|
|
253
288
|
| | |
|
|
254
289
|
|---|---|
|
|
255
|
-
| **Privacy Policy** | <https://mnemoverse.com/privacy
|
|
256
|
-
| **Data sent** | the `content` / `concepts` / `domain` you pass to `memory_write`; the `query` you pass to `memory_read` |
|
|
290
|
+
| **Privacy Policy** | <https://mnemoverse.com/privacy> |
|
|
257
291
|
| **Retention & deletion** | delete one memory with `memory_delete`, or an entire namespace with `memory_delete_domain` |
|
|
258
292
|
| **Contact** | hello@mnemoverse.com |
|
|
259
293
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,24 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
2
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
|
+
/**
|
|
4
|
+
* Two renderers, and which one a value gets is a decision, not a style choice.
|
|
5
|
+
*
|
|
6
|
+
* `safeInline` (src/render.ts) SANITISES an untrusted display string for inline
|
|
7
|
+
* rendering in tool output that a DIFFERENT principal's LLM will read (CN-032
|
|
8
|
+
* anti-injection): strip to a conservative charset, collapse whitespace, cap
|
|
9
|
+
* the length. The treatment `formatAuthorTag` applies to a server-stamped
|
|
10
|
+
* author, and the defensive second pass the machine-shaped room fields
|
|
11
|
+
* (address, room_id, role, scope — all charset-validated or enum-shaped in
|
|
12
|
+
* core) get here. It is lossy on purpose, and everything it still renders is a
|
|
13
|
+
* value the reader looks at and never has to retype or compare.
|
|
14
|
+
*
|
|
15
|
+
* `exactLiteral` / `domainPhrase` / `roomNamePhrase` (src/names.ts) print a
|
|
16
|
+
* value as a JSON string literal, or refuse to print it. Domain names because
|
|
17
|
+
* the engine matches them byte-for-byte, so the reader must be able to send
|
|
18
|
+
* the exact bytes back. Room NAMES (0.8.1) because the sanitiser did not make
|
|
19
|
+
* them harmless so much as it made them WRONG: "проект" echoed back as `""` on
|
|
20
|
+
* create, "Zoë" as "Zo" inside quotes that claim to be the name. The literal
|
|
21
|
+
* is one line with quotes, backslashes and invisibles escaped, so it is as
|
|
22
|
+
* injection-safe as the sanitised spelling was — without the renaming.
|
|
23
|
+
*/
|
|
24
|
+
export declare const server: McpServer;
|