@danielmarbach/mnemonic-mcp 0.4.0 → 0.5.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/CHANGELOG.md CHANGED
@@ -4,6 +4,23 @@ All notable changes to `mnemonic` will be documented in this file.
4
4
 
5
5
  The format is loosely based on Keep a Changelog and uses semver-style version headings.
6
6
 
7
+ ## [0.5.0] - 2026-03-12
8
+
9
+ ### Changed
10
+
11
+ - **Self-describing tools — no system prompt required.** All 22 MCP tools now include detailed descriptions with "use when" / "do not use when" decision boundaries, follow-up tool hints, and side-effect documentation. Tool-level `annotations` (`readOnlyHint`, `destructiveHint`, `idempotentHint`, `openWorldHint`) are set on every tool. Parameter descriptions are enriched with semantics, examples, and guidance (e.g. `lifecycle`, `summary`, `cwd`, `scope`). The 141-line `SYSTEM_PROMPT.md` has been replaced by a one-liner fallback — models discover correct behavior from tool metadata alone.
12
+ - Upgraded `zod` to `^4.3.6` and aligned schema declarations with Zod v4's stricter `z.record` signature to keep MCP structured-output validation and type-checking consistent.
13
+
14
+ ## [0.4.1] - 2026-03-11
15
+
16
+ ### Added
17
+
18
+ - Docker image published to `danielmarbach/mnemonic-mcp` on Docker Hub for `linux/amd64` and `linux/arm64`. Tagged with the release version and `latest`.
19
+
20
+ ### Fixed
21
+
22
+ - `list_migrations` now returns structured content that matches its declared MCP output schema. The handler already included `totalPending`, but the zod schema omitted it, causing the tool to fail with a structured-content validation error instead of listing migrations.
23
+
7
24
  ## [0.4.0] - 2026-03-11
8
25
 
9
26
  ### Added
package/README.md CHANGED
@@ -12,6 +12,8 @@ For the high-level system map, see [`ARCHITECTURE.md`](ARCHITECTURE.md). For rel
12
12
  - 🎯 Project-scoped recall surfaces the right repo context first while keeping global memories accessible.
13
13
  - 🤝 Shared `.mnemonic/` notes travel with the repository, so project knowledge isn't trapped in one person's chat history.
14
14
  - 🔒 Embeddings stay local and gitignored — semantic search without committing generated vector data.
15
+ - 📝 Every `remember`, `update`, and `consolidate` creates a semantic git commit — decision log and plans travel with the code in the same history.
16
+ - 🔓 Designed for removability — though we're quietly confident you won't use that exit. Every note is plain markdown with YAML frontmatter; the knowledge you gather is independent of mnemonic and always yours.
15
17
 
16
18
  ## Stability
17
19
 
@@ -75,9 +77,11 @@ Override the vault location:
75
77
  VAULT_PATH=/path/to/your-vault docker compose run --rm mnemonic
76
78
  ```
77
79
 
78
- ## Installing from npm
80
+ ## Installing
79
81
 
80
- Packages are published to the public npm registry. No authentication required.
82
+ ### npm
83
+
84
+ Published to the public npm registry. No authentication required.
81
85
 
82
86
  ```bash
83
87
  # Latest stable release
@@ -87,6 +91,17 @@ npm install @danielmarbach/mnemonic-mcp
87
91
  npm install @danielmarbach/mnemonic-mcp@0.2.0
88
92
  ```
89
93
 
94
+ ### Docker Hub
95
+
96
+ Pre-built images for `linux/amd64` and `linux/arm64`:
97
+
98
+ ```bash
99
+ docker pull danielmarbach/mnemonic-mcp:latest
100
+
101
+ # Or a specific version
102
+ docker pull danielmarbach/mnemonic-mcp:0.5.0
103
+ ```
104
+
90
105
  ## MCP client config
91
106
 
92
107
  ### Claude Desktop / Cursor (native)
@@ -138,6 +153,38 @@ For a fixed installed version, point at the local binary instead:
138
153
 
139
154
  > Ollama must be running before the MCP client invokes mnemonic. Start it once with `docker compose up ollama -d` and it will stay up between calls.
140
155
 
156
+ ### OpenCode
157
+
158
+ Add to `~/.config/opencode/opencode.json` (global) or `opencode.json` in your project root:
159
+
160
+ ```json
161
+ {
162
+ "$schema": "https://opencode.ai/config.json",
163
+ "mcp": {
164
+ "mnemonic": {
165
+ "type": "local",
166
+ "command": ["npx", "@danielmarbach/mnemonic-mcp"],
167
+ "environment": {
168
+ "VAULT_PATH": "/Users/you/mnemonic-vault"
169
+ }
170
+ }
171
+ }
172
+ }
173
+ ```
174
+
175
+ ### Codex
176
+
177
+ Add to `~/.codex/config.toml` (global) or `.codex/config.toml` in a trusted project:
178
+
179
+ ```toml
180
+ [mcp_servers.mnemonic]
181
+ command = "npx"
182
+ args = ["@danielmarbach/mnemonic-mcp"]
183
+
184
+ [mcp_servers.mnemonic.env]
185
+ VAULT_PATH = "/Users/you/mnemonic-vault"
186
+ ```
187
+
141
188
  For local development against this repository's source tree, use `npm run mcp:local` or point your MCP client at `scripts/mcp-local.sh`.
142
189
 
143
190
  ## Configuration
@@ -149,6 +196,28 @@ For local development against this repository's source tree, use `npm run mcp:lo
149
196
  | `EMBED_MODEL` | `nomic-embed-text-v2-moe` | Ollama embedding model |
150
197
  | `DISABLE_GIT` | `false` | Set `true` to skip all git ops |
151
198
 
199
+ ### config.json
200
+
201
+ The main vault's `~/mnemonic-vault/config.json` holds machine-local settings that survive across sessions. You can edit it by hand — unknown fields are ignored and invalid values fall back to defaults.
202
+
203
+ User-tunable fields:
204
+
205
+ | Field | Default | Description |
206
+ |-------|---------|-------------|
207
+ | `reindexEmbedConcurrency` | `4` | Parallel embedding requests during `sync` (capped 1–16) |
208
+ | `mutationPushMode` | `"main-only"` | When to auto-push after a write: `"all"`, `"main-only"`, or `"none"` |
209
+
210
+ `projectMemoryPolicies` and `projectIdentityOverrides` are written automatically by `set_project_memory_policy` and `set_project_identity` — no need to edit them by hand.
211
+
212
+ Example — raise concurrency on a fast machine and disable auto-push everywhere:
213
+
214
+ ```json
215
+ {
216
+ "reindexEmbedConcurrency": 8,
217
+ "mutationPushMode": "none"
218
+ }
219
+ ```
220
+
152
221
  ## How it works
153
222
 
154
223
  ### Vault layout
@@ -361,6 +430,16 @@ After the first sync, call `sync` (with `cwd` for project vaults) whenever you s
361
430
 
362
431
  ## FAQ
363
432
 
433
+ **Is the advantage over plain markdown files and grep just easier search?**
434
+
435
+ Easier search is part of it, but three things work together:
436
+
437
+ - **Semantic search over vector embeddings.** Each note is locally indexed via Ollama so `recall` finds the right note even when you don't remember the exact words — searching "JWT expiry bug" can surface a note titled "RS256 migration rationale". `grep` only matches strings you already know.
438
+ - **A connected knowledge graph.** Notes link to each other with typed relationships (`explains`, `supersedes`, `example-of`). Related context surfaces together automatically; `memory_graph` shows the full web. A folder of markdown files has no edges between them.
439
+ - **Decision history travels with the code.** Every `remember`, `update`, and `consolidate` creates a descriptive git commit, so your decision log and implementation plans evolve alongside the code they describe — attributed and timestamped in `git log`.
440
+
441
+ mnemonic is designed to be removable — so give it a try with confidence. We think once you do, you'll stay. But if you ever leave, all the knowledge you've gathered is independent: plain markdown with standard YAML frontmatter, readable in any editor, searchable with `grep`, committable to git. No rescue operation required.
442
+
364
443
  **Are mnemonic's embeddings the same as what Claude uses?**
365
444
 
366
445
  No. The embeddings here are **local vector representations** generated by Ollama on your machine — nothing is sent to Anthropic or any cloud service. They are produced by a small embedding model (`nomic-embed-text-v2-moe` by default) and stored as plain JSON files. This is the same idea as retrieval-augmented generation (RAG): each note is converted to a dense numeric vector so `recall` can find semantically related notes even when you don't remember the exact words you used. It has nothing to do with how Claude processes tokens internally.
@@ -388,4 +467,8 @@ build/ Compiled JavaScript output
388
467
 
389
468
  ## Agent instructions
390
469
 
391
- See [`SYSTEM_PROMPT.md`](SYSTEM_PROMPT.md) for the system prompt to use with your MCP client.
470
+ No system prompt required. Mnemonic's tools are self-describing each includes "use when" / "do not use when" guidance, behavioral annotations, and typed schemas. Models will use them correctly from tool metadata alone.
471
+
472
+ If your model isn't picking up the tools proactively, add this one-liner to your AGENT.md or system prompt:
473
+
474
+ > You have access to a long-term memory system via the `mnemonic` MCP server. Use it proactively — don't wait to be asked.