memory-journal-mcp 5.0.0 β†’ 5.1.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.
Files changed (120) hide show
  1. package/.github/workflows/lint-and-test.yml +3 -0
  2. package/.github/workflows/publish-npm.yml +1 -1
  3. package/CHANGELOG.md +85 -1
  4. package/DOCKER_README.md +22 -29
  5. package/Dockerfile +9 -9
  6. package/README.md +28 -46
  7. package/dist/constants/ServerInstructions.d.ts.map +1 -1
  8. package/dist/constants/ServerInstructions.js +15 -32
  9. package/dist/constants/ServerInstructions.js.map +1 -1
  10. package/dist/database/SqliteAdapter.d.ts +14 -2
  11. package/dist/database/SqliteAdapter.d.ts.map +1 -1
  12. package/dist/database/SqliteAdapter.js +148 -55
  13. package/dist/database/SqliteAdapter.js.map +1 -1
  14. package/dist/database/schema.d.ts +1 -1
  15. package/dist/database/schema.d.ts.map +1 -1
  16. package/dist/database/schema.js +3 -0
  17. package/dist/database/schema.js.map +1 -1
  18. package/dist/github/GitHubIntegration.d.ts.map +1 -1
  19. package/dist/github/GitHubIntegration.js +0 -3
  20. package/dist/github/GitHubIntegration.js.map +1 -1
  21. package/dist/handlers/prompts/workflow.d.ts +2 -1
  22. package/dist/handlers/prompts/workflow.d.ts.map +1 -1
  23. package/dist/handlers/prompts/workflow.js +36 -1
  24. package/dist/handlers/prompts/workflow.js.map +1 -1
  25. package/dist/handlers/tools/analytics.d.ts.map +1 -1
  26. package/dist/handlers/tools/analytics.js +14 -2
  27. package/dist/handlers/tools/analytics.js.map +1 -1
  28. package/dist/handlers/tools/backup.d.ts.map +1 -1
  29. package/dist/handlers/tools/backup.js +1 -1
  30. package/dist/handlers/tools/backup.js.map +1 -1
  31. package/dist/handlers/tools/core.d.ts.map +1 -1
  32. package/dist/handlers/tools/core.js +15 -5
  33. package/dist/handlers/tools/core.js.map +1 -1
  34. package/dist/handlers/tools/export.d.ts.map +1 -1
  35. package/dist/handlers/tools/export.js +26 -7
  36. package/dist/handlers/tools/export.js.map +1 -1
  37. package/dist/handlers/tools/github/helpers.d.ts.map +1 -1
  38. package/dist/handlers/tools/github/helpers.js +10 -2
  39. package/dist/handlers/tools/github/helpers.js.map +1 -1
  40. package/dist/handlers/tools/github/insights-tools.js +11 -11
  41. package/dist/handlers/tools/github/insights-tools.js.map +1 -1
  42. package/dist/handlers/tools/github/kanban-tools.d.ts.map +1 -1
  43. package/dist/handlers/tools/github/kanban-tools.js +1 -0
  44. package/dist/handlers/tools/github/kanban-tools.js.map +1 -1
  45. package/dist/handlers/tools/github/milestone-tools.d.ts.map +1 -1
  46. package/dist/handlers/tools/github/milestone-tools.js +1 -0
  47. package/dist/handlers/tools/github/milestone-tools.js.map +1 -1
  48. package/dist/handlers/tools/github/read-tools.d.ts.map +1 -1
  49. package/dist/handlers/tools/github/read-tools.js +8 -2
  50. package/dist/handlers/tools/github/read-tools.js.map +1 -1
  51. package/dist/handlers/tools/index.d.ts.map +1 -1
  52. package/dist/handlers/tools/index.js +45 -18
  53. package/dist/handlers/tools/index.js.map +1 -1
  54. package/dist/handlers/tools/relationships.d.ts.map +1 -1
  55. package/dist/handlers/tools/relationships.js +11 -1
  56. package/dist/handlers/tools/relationships.js.map +1 -1
  57. package/dist/handlers/tools/schemas.d.ts +8 -0
  58. package/dist/handlers/tools/schemas.d.ts.map +1 -1
  59. package/dist/handlers/tools/schemas.js +1 -0
  60. package/dist/handlers/tools/schemas.js.map +1 -1
  61. package/dist/handlers/tools/search.d.ts.map +1 -1
  62. package/dist/handlers/tools/search.js +32 -7
  63. package/dist/handlers/tools/search.js.map +1 -1
  64. package/dist/handlers/tools/team.d.ts.map +1 -1
  65. package/dist/handlers/tools/team.js +3 -2
  66. package/dist/handlers/tools/team.js.map +1 -1
  67. package/dist/server/McpServer.d.ts.map +1 -1
  68. package/dist/server/McpServer.js +8 -4
  69. package/dist/server/McpServer.js.map +1 -1
  70. package/dist/transports/http.d.ts.map +1 -1
  71. package/dist/transports/http.js +2 -1
  72. package/dist/transports/http.js.map +1 -1
  73. package/dist/utils/security-utils.d.ts +9 -0
  74. package/dist/utils/security-utils.d.ts.map +1 -1
  75. package/dist/utils/security-utils.js +15 -0
  76. package/dist/utils/security-utils.js.map +1 -1
  77. package/dist/vector/VectorSearchManager.d.ts.map +1 -1
  78. package/dist/vector/VectorSearchManager.js +8 -13
  79. package/dist/vector/VectorSearchManager.js.map +1 -1
  80. package/docker-compose.yml +16 -0
  81. package/package.json +2 -2
  82. package/releases/v5.0.1.md +25 -0
  83. package/releases/v5.1.0.md +83 -0
  84. package/server.json +3 -3
  85. package/src/constants/ServerInstructions.ts +15 -32
  86. package/src/constants/server-instructions.md +15 -32
  87. package/src/database/SqliteAdapter.ts +193 -63
  88. package/src/database/schema.ts +3 -0
  89. package/src/github/GitHubIntegration.ts +25 -20
  90. package/src/handlers/prompts/workflow.ts +43 -1
  91. package/src/handlers/tools/analytics.ts +22 -2
  92. package/src/handlers/tools/backup.ts +1 -1
  93. package/src/handlers/tools/core.ts +17 -5
  94. package/src/handlers/tools/export.ts +25 -7
  95. package/src/handlers/tools/github/helpers.ts +10 -2
  96. package/src/handlers/tools/github/insights-tools.ts +12 -12
  97. package/src/handlers/tools/github/kanban-tools.ts +1 -0
  98. package/src/handlers/tools/github/milestone-tools.ts +1 -0
  99. package/src/handlers/tools/github/read-tools.ts +8 -2
  100. package/src/handlers/tools/index.ts +56 -21
  101. package/src/handlers/tools/relationships.ts +12 -1
  102. package/src/handlers/tools/schemas.ts +1 -0
  103. package/src/handlers/tools/search.ts +33 -7
  104. package/src/handlers/tools/team.ts +3 -2
  105. package/src/server/McpServer.ts +8 -4
  106. package/src/transports/http.ts +3 -1
  107. package/src/utils/security-utils.ts +17 -0
  108. package/src/vector/VectorSearchManager.ts +12 -13
  109. package/tests/constants/server-instructions.test.ts +2 -5
  110. package/tests/database/sqlite-adapter.test.ts +53 -2
  111. package/tests/github/github-integration.test.ts +9 -18
  112. package/tests/handlers/tool-handler-coverage.test.ts +51 -6
  113. package/tests/utils/mcp-logger.test.ts +3 -4
  114. package/tests/vector/vector-search-manager.test.ts +12 -15
  115. package/hooks/README.md +0 -107
  116. package/hooks/cursor/hooks.json +0 -10
  117. package/hooks/cursor/memory-journal.mdc +0 -22
  118. package/hooks/cursor/session-end.sh +0 -19
  119. package/hooks/kilo-code/session-end-mode.json +0 -11
  120. package/hooks/kiro/session-end.md +0 -13
@@ -38,6 +38,9 @@ jobs:
38
38
  - name: Build
39
39
  run: npm run build
40
40
 
41
+ - name: Run unit tests
42
+ run: npm run test
43
+
41
44
  security-scan:
42
45
  runs-on: ubuntu-latest
43
46
  steps:
@@ -30,7 +30,7 @@ jobs:
30
30
  - name: Setup Node.js
31
31
  uses: actions/setup-node@v6
32
32
  with:
33
- node-version: '22.x'
33
+ node-version: '24.x'
34
34
  registry-url: 'https://registry.npmjs.org'
35
35
  cache: 'npm'
36
36
 
package/CHANGELOG.md CHANGED
@@ -7,6 +7,81 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [5.1.0] - 2026-03-07
11
+
12
+ ### Added
13
+
14
+ - **`session-summary` Prompt** β€” New workflow prompt that creates a session summary journal entry. Fetches recent entries for context and guides the agent to create a `retrospective` entry tagged `session-summary` capturing accomplishments, pending items, and next-session context. Invoked by the user when ready (e.g., `/session-summary`). Replaces the unreliable automatic session-end behavior. Prompt count: 15 β†’ 16.
15
+
16
+ ### Performance
17
+
18
+ - **`calculateImportance` Query Consolidation** β€” Merged 3 separate SQL queries (entry data, relationship count, causal count) into a single query with subqueries, reducing SQLite roundtrips 3β†’1.
19
+ - **`linkTagsToEntry` Batch Operations** β€” Replaced per-tag `INSERT OR IGNORE` + `UPDATE` loop (2N SQL calls) with batched multi-row `INSERT`, `SELECT ... IN (...)`, and `UPDATE ... IN (...)` (4 SQL calls total for any N tags).
20
+ - **`createEntry` Redundant Fetch Elimination** β€” Removed post-INSERT `getEntryById()` re-fetch (full SELECT + tag query). Entry is now constructed directly from input values + `last_insert_rowid()` + `datetime(CURRENT_TIMESTAMP)`.
21
+ - **`updateEntry` Pre-check Elimination** β€” Removed pre-UPDATE `getEntryById()` existence check. Uses `UPDATE ... WHERE deleted_at IS NULL` + `SELECT changes()` to detect missing entries in one SQL call instead of a full SELECT + tag query.
22
+ - **SQLite Performance PRAGMAs** β€” Added `PRAGMA journal_mode = MEMORY`, `synchronous = OFF`, and `temp_store = MEMORY` at initialization. sql.js operates in-memory with manual disk serialization; these eliminate unnecessary internal journal overhead.
23
+ - **Composite Covering Index for `getRecentEntries`** β€” Added `idx_memory_journal_recent` on `(deleted_at, timestamp DESC, id DESC)` to enable index-only scan for the `WHERE deleted_at IS NULL ORDER BY timestamp DESC, id DESC` query pattern.
24
+ - **`addEntry` Native Upsert** β€” Replaced `deleteItem()` + `insertItem()` pattern with vectra's native `upsertItem()`, eliminating a full exception path on every new entry insertion.
25
+ - **`getTools` Cached Output** β€” Extracted shared `ensureToolCache()` for both `getTools` and `callTool`. Unfiltered `getTools` calls now return a cached mapped array instead of rebuilding 42 tool objects and mapping them on every invocation (~4800x faster than tool execution).
26
+ - **Lazy Module Loading for Startup** β€” Deferred `@xenova/transformers` (1.5s) and `vectra` (0.9s) from top-level imports in `VectorSearchManager.ts` to dynamic `import()` inside `initialize()`. These heavyweight modules are now loaded only when vector search is first used, reducing server cold-start by ~1.8s (VectorSearchManager import: 1515ms β†’ 12ms).
27
+
28
+ ### Documentation
29
+
30
+ - **Test Counts Updated** β€” Updated the `README.md` and `DOCKER_README.md` test count badges and the testing breakdown table to reflect the combined total of Vitest unit/integration tests and Playwright E2E tests (785 total tests).
31
+ - **Performance Benchmark Claims Updated** β€” Updated benchmark numbers in `README.md` and `DOCKER_README.md` to reflect post-optimization measurements: vector ops >640 ops/sec, `getTools` ~4800x faster than tool execution, `getRecentEntries` ~4x faster via composite index.
32
+
33
+ ### Removed
34
+
35
+ - **Automatic Session End Behavior** β€” Removed `## Session End` section from server instructions (`ServerInstructions.ts`, `server-instructions.md`). Agents cannot reliably detect when a thread/session ends. Replaced by the user-invoked `session-summary` prompt.
36
+ - **`hooks/` Directory** β€” Deleted the entire hooks directory (`hooks/cursor/`, `hooks/kiro/`, `hooks/kilo-code/`, `hooks/README.md`). All hook files were session-end related. Session start is handled by server instructions.
37
+
38
+ ### Security
39
+
40
+ - **Docker Compose Network Isolation (L-1)** β€” Added custom `mcp-net` bridge network to both services. Prevents MCP containers from accessing or being accessed by unrelated containers on the default Docker bridge.
41
+ - **Docker Compose `no-new-privileges` (L-2)** β€” Added `security_opt: ["no-new-privileges:true"]` to both services. Prevents privilege escalation via `setuid`/`setgid` binaries inside containers.
42
+ - **Author Input Sanitization (L-5)** β€” `resolveAuthor()` and `resolveTeamAuthor()` in `team.ts` and `core.ts` now strip ASCII control characters (`0x00`–`0x1F`, `0x7F`) and cap author strings at 100 characters. Prevents crafted `TEAM_AUTHOR` env or git config values from injecting control characters into the database `author` column or `autoContext` JSON payloads.
43
+ - **Consolidated `sanitizeAuthor` (Audit)** β€” Moved duplicated `sanitizeAuthor()` from `core.ts` and `team.ts` into `security-utils.ts` as a single-source-of-truth export. Eliminates risk of divergent sanitization logic.
44
+ - **Docker Compose `cap_drop: ALL` (Audit)** β€” Added `cap_drop: ALL` to both Docker Compose services, dropping all Linux capabilities (NET_RAW, SYS_CHROOT, etc.) that are unnecessary for a Node.js MCP server.
45
+ - **CI Unit Test Gate (Audit)** β€” Added `npm run test` step to `lint-and-test.yml` workflow so unit tests run on every push/PR, not just lint/typecheck/build.
46
+
47
+ ### Fixed
48
+
49
+ - **Output schema mismatches causing MCP -32602 errors** β€” Three `outputSchema` definitions didn't match actual handler output, causing `structuredContent does not match the tool's output schema` errors:
50
+ - `EntryOutputSchema` (schemas.ts) β€” Added `source` field (`'personal' | 'team'`) for cross-database search results that include a source marker
51
+ - `VectorStatsOutputSchema` (search.ts) β€” Updated to match `VectorSearchManager.getStats()` return shape (`itemCount`, `modelName`, `dimensions` instead of `entryCount`, `indexSize`)
52
+ - `BackupInfoSchema` (backup.ts) β€” Added `path` field to match `SqliteAdapter.listBackups()` output
53
+ - **`get_statistics` Date Filtering** β€” `start_date` and `end_date` parameters now filter all statistics queries (total count, type breakdown, period breakdown, decision density). Previously parsed by Zod but ignored by the handler. Returns `dateRange` echo in the response when dates are provided.
54
+ - **`get_statistics` Project Breakdown** β€” `project_breakdown: true` now returns a `projectBreakdown` array with per-project entry counts. Previously parsed but ignored.
55
+ - **`export_entries` Filter Bypass** β€” Handler was calling `db.getRecentEntries(limit)` and ignoring all parsed filter parameters (`start_date`, `end_date`, `entry_types`, `tags`). Now correctly uses `db.searchByDateRange()` for date/tag filters and post-filters by `entry_types`.
56
+ - **GitHub Error Consistency** β€” All GitHub tool error responses (`get_github_issue`, `get_github_pr`, `get_github_context`, `get_repo_insights`, `resolveOwnerRepo`, `resolveOwner`) now include `success: false` field, matching the `{success: false, error}` pattern used by all other tools.
57
+ - **`get_vector_index_stats` Missing `success` Field** β€” Handler now returns `success: true/false` in all response paths for schema consistency.
58
+ - **No-Argument Prompts Failing with MCP `-32602`** β€” Prompts with no arguments (e.g., `session-summary`, `confirm-briefing`, `prepare-standup`) failed when the client called `prompts/get` without `arguments`. The registration code passed an empty `argsSchema: {}` to `registerPrompt`, which the SDK wrapped in `z.object({})` and attempted to validate against `undefined`. Now omits `argsSchema` entirely for argumentless prompts so the SDK skips validation.
59
+ - **`get_github_milestone` Error Missing `success: false`** β€” Error response for non-existent milestones returned `{ error }` without `success` field. Now returns `{ success: false, error }` matching the consistent error shape used by all other tools.
60
+ - **`get_kanban_board` Error Missing `success: false`** β€” Error response for non-existent projects returned `{ error }` without `success` field. Now returns `{ success: false, error }` matching the consistent error shape used by all other tools.
61
+ - **`search_by_date_range` Silent Filter Bug** β€” `issue_number`, `pr_number`, and `workflow_run_id` parameters were accepted by the Zod schema but silently ignored β€” the handler never passed them to the database query. Now correctly forwards all three filters to `SqliteAdapter.searchByDateRange()`, which applies them as SQL WHERE clauses.
62
+
63
+ ### Improved
64
+
65
+ - **Zod Boundary Leak Prevention** β€” Created separate relaxed MCP schemas (without `min`/`max` constraints) for 7 tools so boundary violations reach the handler for structured `{success: false, error}` responses instead of leaking as raw MCP `-32602` error frames. Affected tools: `get_recent_entries`, `create_entry`, `create_entry_minimal`, `search_entries`, `search_by_date_range`, `semantic_search`, `export_entries`, `cleanup_backups`, `visualize_relationships`.
66
+
67
+ ### Changed
68
+
69
+ - **CI `publish-npm.yml` Node Version Alignment (L-4)** β€” Updated Node.js version from 22.x to 24.x to match `engines.node: >=24.0.0` in `package.json` and the Dockerfile base image (`node:24-alpine`).
70
+
71
+ - **Dependency Updates**
72
+ - `eslint`: 10.0.2 β†’ 10.0.3 (patch)
73
+
74
+ ## [5.0.1] - 2026-03-06
75
+
76
+ ### Security
77
+
78
+ - **GHSA-qffp-2rhf-9h96 (tar)** β€” Manually patched npm's bundled `tar` β†’ `7.5.10` in Dockerfile to fix HIGH severity path traversal vulnerability (CVSS 8.2). Also updated npm override.
79
+
80
+ ### Changed
81
+
82
+ - **Dependency Updates**
83
+ - `tar` override: 7.5.9 β†’ 7.5.10 (patch) β€” npm + Docker layers
84
+
10
85
  ## [5.0.0] - 2026-03-06
11
86
 
12
87
  ### Added
@@ -1269,7 +1344,16 @@ npm install -g memory-journal-mcp
1269
1344
  - SQLite FTS5 full-text search
1270
1345
  - Optional FAISS semantic search
1271
1346
 
1272
- [Unreleased]: https://github.com/neverinfamous/memory-journal-mcp/compare/v4.1.0...HEAD
1347
+ [Unreleased]: https://github.com/neverinfamous/memory-journal-mcp/compare/v5.1.0...HEAD
1348
+ [5.1.0]: https://github.com/neverinfamous/memory-journal-mcp/compare/v5.0.1...v5.1.0
1349
+ [5.0.1]: https://github.com/neverinfamous/memory-journal-mcp/compare/v5.0.0...v5.0.1
1350
+ [5.0.0]: https://github.com/neverinfamous/memory-journal-mcp/compare/v4.5.0...v5.0.0
1351
+ [4.5.0]: https://github.com/neverinfamous/memory-journal-mcp/compare/v4.4.2...v4.5.0
1352
+ [4.4.2]: https://github.com/neverinfamous/memory-journal-mcp/compare/v4.4.0...v4.4.2
1353
+ [4.4.0]: https://github.com/neverinfamous/memory-journal-mcp/compare/v4.3.1...v4.4.0
1354
+ [4.3.1]: https://github.com/neverinfamous/memory-journal-mcp/compare/v4.3.0...v4.3.1
1355
+ [4.3.0]: https://github.com/neverinfamous/memory-journal-mcp/compare/v4.2.0...v4.3.0
1356
+ [4.2.0]: https://github.com/neverinfamous/memory-journal-mcp/compare/v4.1.0...v4.2.0
1273
1357
  [4.1.0]: https://github.com/neverinfamous/memory-journal-mcp/compare/v4.0.0...v4.1.0
1274
1358
  [4.0.0]: https://github.com/neverinfamous/memory-journal-mcp/compare/v3.1.5...v4.0.0
1275
1359
  [3.1.5]: https://github.com/neverinfamous/memory-journal-mcp/compare/v3.1.4...v3.1.5
package/DOCKER_README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Memory Journal MCP Server
2
2
 
3
- **Last Updated March 6, 2026**
3
+ **Last Updated March 7, 2026**
4
4
 
5
5
  [![GitHub](https://img.shields.io/badge/GitHub-neverinfamous/memory--journal--mcp-blue?logo=github)](https://github.com/neverinfamous/memory-journal-mcp)
6
6
  [![Docker Pulls](https://img.shields.io/docker/pulls/writenotenow/memory-journal-mcp)](https://hub.docker.com/r/writenotenow/memory-journal-mcp)
@@ -10,8 +10,8 @@
10
10
  [![Security](https://img.shields.io/badge/Security-Enhanced-green.svg)](https://github.com/neverinfamous/memory-journal-mcp/blob/main/SECURITY.md)
11
11
  [![GitHub Stars](https://img.shields.io/github/stars/neverinfamous/memory-journal-mcp?style=social)](https://github.com/neverinfamous/memory-journal-mcp)
12
12
  [![TypeScript](https://img.shields.io/badge/TypeScript-Strict-blue.svg)](https://github.com/neverinfamous/memory-journal-mcp)
13
- ![Coverage](https://img.shields.io/badge/Coverage-94%25-brightgreen.svg)
14
- ![Tests](https://img.shields.io/badge/Tests-730_passed-brightgreen.svg)
13
+ ![Coverage](https://img.shields.io/badge/Coverage-93%78-brightgreen.svg)
14
+ ![Tests](https://img.shields.io/badge/Tests-785_passed-brightgreen.svg)
15
15
 
16
16
  🎯 **AI Context + Project Intelligence:** Bridge disconnected AI sessions with persistent project memory and **automatic session handoff** β€” with full GitHub workflow integration.
17
17
 
@@ -21,7 +21,7 @@
21
21
 
22
22
  ### Key Benefits
23
23
 
24
- **42 MCP Tools** Β· **15 Workflow Prompts** Β· **22 Resources** Β· **9 Tool Groups** Β· **GitHub Integration** (Issues, PRs, Actions, Kanban, Milestones, Insights)
24
+ **42 MCP Tools** Β· **16 Workflow Prompts** Β· **22 Resources** Β· **9 Tool Groups** Β· **GitHub Integration** (Issues, PRs, Actions, Kanban, Milestones, Insights)
25
25
 
26
26
  - 🧠 **Dynamic Context Management** - AI agents automatically query your project history and create entries at the right moments
27
27
  - πŸ“ **Auto-capture Git/GitHub context** (commits, branches, issues, milestones, PRs, projects)
@@ -33,8 +33,7 @@
33
33
  - ⏰ **Automated maintenance** β€” scheduled backups, database optimization, and vector index rebuilds for long-running containers
34
34
  - 🌐 **Dual HTTP transport** β€” Streamable HTTP (`/mcp`) for modern clients + legacy SSE (`/sse`) for backward compatibility, with stateless mode for serverless deployments
35
35
  - πŸ‘₯ **Team collaboration** β€” separate public team database with author attribution, cross-DB search, and dedicated team tools
36
- - πŸ”„ **Session continuity** β€” automatic end-of-session summaries flow into the next session's briefing
37
- - πŸ”§ **IDE Hooks** β€” ready-to-use session-end configs for Cursor, Kiro, and Kilo Code ([setup β†’](https://github.com/neverinfamous/memory-journal-mcp/tree/main/hooks))
36
+ - πŸ”„ **Session continuity** β€” a quick `/session-summary` captures your progress and feeds it into the next session's briefing
38
37
  - πŸ’‘ **Rule & skill suggestions** β€” agents offer to codify your recurring patterns with your approval
39
38
  - βœ… **Deterministic error handling** β€” every tool returns structured `{success, error}` responses β€” no raw exceptions, no silent failures. Agents get actionable context instead of cryptic stack traces
40
39
 
@@ -53,7 +52,7 @@
53
52
  - **[npm Package](https://www.npmjs.com/package/memory-journal-mcp)** - Simple `npm install -g` for local deployment
54
53
  - **[MCP Registry](https://registry.modelcontextprotocol.io/v0/servers?search=io.github.neverinfamous/memory-journal-mcp)**
55
54
 
56
- **Flow:** AI Session Start β†’ Read `memory://briefing` β†’ Journal Operations (Create, Search, Link) β†’ Triple Search + GitHub Integration β†’ Outputs (Standups, Knowledge Graphs, Timelines) β†’ Session End (auto-summary β†’ next briefing)
55
+ **Flow:** AI Session Start β†’ Read `memory://briefing` β†’ Journal Operations (Create, Search, Link) β†’ Triple Search + GitHub Integration β†’ Outputs (Standups, Knowledge Graphs, Timelines) β†’ Use `session-summary` prompt when ready to capture session context
57
56
 
58
57
  ### Tool Filtering
59
58
 
@@ -92,7 +91,7 @@ Control which tools are exposed via `MEMORY_JOURNAL_MCP_TOOL_FILTER` (or CLI: `-
92
91
 
93
92
  **[Complete tools documentation β†’](https://github.com/neverinfamous/memory-journal-mcp/wiki/Tools)**
94
93
 
95
- ### 🎯 **15 Workflow Prompts**
94
+ ### 🎯 **16 Workflow Prompts**
96
95
 
97
96
  - `find-related` - Discover connected entries via semantic similarity
98
97
  - `prepare-standup` - Daily standup summaries
@@ -109,6 +108,7 @@ Control which tools are exposed via `MEMORY_JOURNAL_MCP_TOOL_FILTER` (or CLI: `-
109
108
  - `actions-failure-digest` - CI/CD failure analysis
110
109
  - `project-milestone-tracker` - Milestone progress tracking
111
110
  - `confirm-briefing` - Acknowledge session context to user
111
+ - `session-summary` - Create a session summary entry with accomplishments, pending items, and next-session context
112
112
 
113
113
  **[Complete prompts guide β†’](https://github.com/neverinfamous/memory-journal-mcp/wiki/Prompts)**
114
114
 
@@ -248,16 +248,12 @@ When GitHub tools cannot auto-detect repository information:
248
248
 
249
249
  ### πŸ”„ Session Management
250
250
 
251
- Memory Journal bridges AI sessions automatically β€” the agent reads project context at session start and captures a summary at session end.
251
+ Memory Journal bridges AI sessions with a three-step cycle:
252
252
 
253
- 1. Session starts β†’ agent reads `memory://briefing` and shows you a project context summary
254
- 2. Session ends β†’ agent creates a `retrospective` entry tagged `session-summary`
253
+ 1. **Session start** β†’ agent reads `memory://briefing` and shows you a project context summary (automatic via server instructions)
254
+ 2. **Session summary** β†’ use the `session-summary` prompt to capture what was accomplished, what's pending, and context for the next session
255
255
  3. Next session's briefing includes the previous summary β€” context flows seamlessly
256
256
 
257
- **Cursor users:** Copy the [`memory-journal.mdc`](https://github.com/neverinfamous/memory-journal-mcp/blob/main/hooks/cursor/memory-journal.mdc) rule to `.cursor/rules/` for the most reliable session management. Optional audit hooks for Cursor, Kiro, and Kilo Code are available in the [hooks/](https://github.com/neverinfamous/memory-journal-mcp/tree/main/hooks) directory.
258
-
259
- **No rules or hooks?** The built-in server instructions handle both session start and end in any MCP client. This is **opt-out**: tell the agent "skip the summary" to disable session-end entries.
260
-
261
257
  ### HTTP/SSE Transport (Remote Access)
262
258
 
263
259
  For remote access, web-based clients, or HTTP-compatible MCP hosts:
@@ -302,6 +298,11 @@ docker run --rm -p 3000:3000 \
302
298
  - **Body Size Limit** β€” 1 MB maximum
303
299
  - **404 Handler** β€” Unknown paths return `{ error: "Not found" }`
304
300
  - **Cross-Protocol Guard** β€” SSE session IDs rejected on `/mcp` and vice versa
301
+ - **Build Provenance** - Cryptographic proof of build process
302
+ - **SBOM Available** - Complete software bill of materials
303
+ - **Supply Chain Attestations** - Verifiable build integrity
304
+ - **Non-root Execution** - Minimal attack surface
305
+ - **No Native Dependencies** - Pure JS stack reduces attack surface
305
306
 
306
307
  | Mode | Progress Notifications | Legacy SSE | Serverless |
307
308
  | ------------------------- | ---------------------- | ---------- | ---------- |
@@ -335,13 +336,13 @@ Each job is error-isolated β€” a failure in one job won't affect the others. Sch
335
336
 
336
337
  **Example with curl:**
337
338
 
339
+ Initialize session (returns `mcp-session-id` header). Include `mcp-session-id` header in subsequent requests.
340
+
338
341
  ```bash
339
- # Initialize session (returns mcp-session-id header)
340
342
  curl -X POST http://localhost:3000/mcp \
341
343
  -H "Content-Type: application/json" \
342
344
  -H "Accept: application/json, text/event-stream" \
343
345
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'
344
- # Include mcp-session-id header in subsequent requests
345
346
  ```
346
347
 
347
348
  ## ️ Supply Chain Security
@@ -362,14 +363,6 @@ docker pull writenotenow/memory-journal-mcp:sha256-<manifest-digest>
362
363
  docker pull writenotenow/memory-journal-mcp@sha256:<manifest-digest>
363
364
  ```
364
365
 
365
- **Security Features:**
366
-
367
- - βœ… **Build Provenance** - Cryptographic proof of build process
368
- - βœ… **SBOM Available** - Complete software bill of materials
369
- - βœ… **Supply Chain Attestations** - Verifiable build integrity
370
- - βœ… **Non-root Execution** - Minimal attack surface
371
- - βœ… **No Native Dependencies** - Pure JS stack reduces attack surface
372
-
373
366
  ## πŸ”§ Configuration
374
367
 
375
368
  ### GitHub Management Capabilities
@@ -408,10 +401,10 @@ Memory Journal provides a **hybrid approach** to GitHub management:
408
401
  - **sql.js** - SQLite in pure JavaScript
409
402
  - **vectra** - Vector similarity search without native dependencies
410
403
  - **@xenova/transformers** - ML embeddings in JavaScript
411
- - **Instant Startup** - Lazy loading of ML models
404
+ - **Faster Startup** - Lazy loading of ML models
412
405
  - **Production/Stable** - Deterministic error handling (`{success, error}` on every tool) and automatic migrations
413
406
 
414
- Designed for extremely low overhead: database reads in sub-millisecond, vector search >131x faster than indexing, core MCP tool calls execute at >730 ops/sec with cached O(1) dispatch. Run `npm run bench` for local benchmarks.
407
+ Designed for extremely low overhead: database reads in sub-millisecond, vector search and indexing both exceed 640 ops/sec, tool dispatch cached at O(1) with >4800x overhead reduction. Run `npm run bench` for local benchmarks.
415
408
 
416
409
  **Automated Deployment:**
417
410
 
@@ -423,8 +416,8 @@ Designed for extremely low overhead: database reads in sub-millisecond, vector s
423
416
 
424
417
  **Available Tags:**
425
418
 
426
- - `5.0.0` - Specific version (recommended for production)
427
- - `5.0` - Latest patch in 5.0.x series
419
+ - `5.1.0` - Specific version (recommended for production)
420
+ - `5.1` - Latest patch in 5.1.x series
428
421
  - `5` - Latest minor in 5.x series
429
422
  - `latest` - Always the newest version
430
423
  - `sha256-<digest>` - SHA-pinned for maximum security
package/Dockerfile CHANGED
@@ -23,13 +23,13 @@ RUN cd /usr/local/lib/node_modules/npm && \
23
23
  mv package node_modules/diff && \
24
24
  rm diff-8.0.3.tgz
25
25
 
26
- # Fix CVE-2026-23950, CVE-2026-24842, CVE-2026-26960: Manually update npm's bundled tar to 7.5.9
26
+ # Fix CVE-2026-23950, CVE-2026-24842, CVE-2026-26960, GHSA-qffp-2rhf-9h96: Manually update npm's bundled tar to 7.5.10
27
27
  RUN cd /usr/local/lib/node_modules/npm && \
28
- npm pack tar@7.5.9 && \
28
+ npm pack tar@7.5.10 && \
29
29
  rm -rf node_modules/tar && \
30
- tar -xzf tar-7.5.9.tgz && \
30
+ tar -xzf tar-7.5.10.tgz && \
31
31
  mv package node_modules/tar && \
32
- rm tar-7.5.9.tgz
32
+ rm tar-7.5.10.tgz
33
33
 
34
34
  # Fix CVE-2026-27903, CVE-2026-27904: Manually update npm's bundled minimatch to 10.2.4
35
35
  RUN cd /usr/local/lib/node_modules/npm && \
@@ -79,13 +79,13 @@ RUN cd /usr/local/lib/node_modules/npm && \
79
79
  mv package node_modules/diff && \
80
80
  rm diff-8.0.3.tgz
81
81
 
82
- # Fix CVE-2026-23950, CVE-2026-24842, CVE-2026-26960: Manually update npm's bundled tar to 7.5.9
82
+ # Fix CVE-2026-23950, CVE-2026-24842, CVE-2026-26960, GHSA-qffp-2rhf-9h96: Manually update npm's bundled tar to 7.5.10
83
83
  RUN cd /usr/local/lib/node_modules/npm && \
84
- npm pack tar@7.5.9 && \
84
+ npm pack tar@7.5.10 && \
85
85
  rm -rf node_modules/tar && \
86
- tar -xzf tar-7.5.9.tgz && \
86
+ tar -xzf tar-7.5.10.tgz && \
87
87
  mv package node_modules/tar && \
88
- rm tar-7.5.9.tgz
88
+ rm tar-7.5.10.tgz
89
89
 
90
90
  # Fix CVE-2026-27903, CVE-2026-27904: Manually update npm's bundled minimatch to 10.2.4
91
91
  RUN cd /usr/local/lib/node_modules/npm && \
@@ -129,6 +129,6 @@ ENTRYPOINT ["node", "dist/cli.js"]
129
129
  # Labels for Docker Hub
130
130
  LABEL maintainer="Adamic.tech"
131
131
  LABEL description="Memory Journal MCP Server - Project context management for AI-assisted development"
132
- LABEL version="5.0.0"
132
+ LABEL version="5.1.0"
133
133
  LABEL org.opencontainers.image.source="https://github.com/neverinfamous/memory-journal-mcp"
134
134
  LABEL io.modelcontextprotocol.server.name="io.github.neverinfamous/memory-journal-mcp"
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Memory Journal MCP Server
2
2
 
3
- **Last Updated March 6, 2026**
3
+ **Last Updated March 7, 2026**
4
4
 
5
5
  <!-- mcp-name: io.github.neverinfamous/memory-journal-mcp -->
6
6
 
@@ -12,8 +12,8 @@
12
12
  [![MCP Registry](https://img.shields.io/badge/MCP_Registry-Published-green)](https://registry.modelcontextprotocol.io/v0/servers?search=io.github.neverinfamous/memory-journal-mcp)
13
13
  [![Security](https://img.shields.io/badge/Security-Enhanced-green.svg)](SECURITY.md)
14
14
  [![TypeScript](https://img.shields.io/badge/TypeScript-Strict-blue.svg)](https://github.com/neverinfamous/memory-journal-mcp)
15
- ![Coverage](https://img.shields.io/badge/Coverage-94%25-brightgreen.svg)
16
- ![Tests](https://img.shields.io/badge/Tests-730_passed-brightgreen.svg)
15
+ ![Coverage](https://img.shields.io/badge/Coverage-93%78-brightgreen.svg)
16
+ ![Tests](https://img.shields.io/badge/Tests-785_passed-brightgreen.svg)
17
17
 
18
18
  🎯 **AI Context + Project Intelligence:** Bridge disconnected AI sessions with persistent project memory and **automatic session handoff** β€” with full GitHub workflow integration.
19
19
 
@@ -28,7 +28,7 @@
28
28
 
29
29
  ### Key Benefits
30
30
 
31
- **42 MCP Tools** Β· **15 Workflow Prompts** Β· **22 Resources** Β· **9 Tool Groups** Β· **GitHub Integration** (Issues, PRs, Actions, Kanban, Milestones, Insights)
31
+ **42 MCP Tools** Β· **16 Workflow Prompts** Β· **22 Resources** Β· **9 Tool Groups** Β· **GitHub Integration** (Issues, PRs, Actions, Kanban, Milestones, Insights)
32
32
 
33
33
  - 🧠 **Dynamic Context Management** - AI agents automatically query your project history and create entries at the right moments
34
34
  - πŸ“ **Auto-capture Git/GitHub context** (commits, branches, issues, milestones, PRs, projects)
@@ -40,8 +40,7 @@
40
40
  - ⏰ **Automated maintenance** β€” scheduled backups, database optimization, and vector index rebuilds for long-running HTTP deployments
41
41
  - 🌐 **Dual HTTP transport** β€” Streamable HTTP (`/mcp`) for modern clients + legacy SSE (`/sse`) for backward compatibility, with stateless mode for serverless deployments
42
42
  - πŸ‘₯ **Team collaboration** β€” separate public team database with author attribution, cross-DB search, and dedicated team tools
43
- - πŸ”„ **Session continuity** β€” automatic end-of-session summaries flow into the next session's briefing
44
- - πŸ”§ **IDE Hooks** β€” ready-to-use session-end configs for Cursor, Kiro, and Kilo Code ([setup β†’](hooks/))
43
+ - πŸ”„ **Session continuity** β€” a quick `/session-summary` captures your progress and feeds it into the next session's briefing
45
44
  - πŸ’‘ **Rule & skill suggestions** β€” agents offer to codify your recurring patterns with your approval
46
45
  - βœ… **Deterministic error handling** β€” every tool returns structured `{success, error}` responses β€” no raw exceptions, no silent failures. Agents get actionable context instead of cryptic stack traces
47
46
 
@@ -103,17 +102,11 @@ flowchart TB
103
102
  Timeline["Project Timelines"]
104
103
  end
105
104
 
106
- subgraph SessionEnd["πŸ”„ Session End"]
107
- Summary["Session Summary Entry<br/>(retrospective + session-summary tag)"]
108
- end
109
-
110
105
  Session --> Core
111
106
  Core --> Search
112
107
  Core <--> GitHub
113
108
  Search --> Outputs
114
109
  GitHub --> Outputs
115
- Core --> SessionEnd
116
- SessionEnd -.->|"next session"| Briefing
117
110
  ```
118
111
 
119
112
  ---
@@ -157,7 +150,7 @@ Control which tools are exposed via `MEMORY_JOURNAL_MCP_TOOL_FILTER` (or CLI: `-
157
150
 
158
151
  **[Complete tools reference β†’](https://github.com/neverinfamous/memory-journal-mcp/wiki/Tools)**
159
152
 
160
- ### 🎯 **15 Workflow Prompts**
153
+ ### 🎯 **16 Workflow Prompts**
161
154
 
162
155
  - `find-related` - Discover connected entries via semantic similarity
163
156
  - `prepare-standup` - Daily standup summaries
@@ -174,6 +167,7 @@ Control which tools are exposed via `MEMORY_JOURNAL_MCP_TOOL_FILTER` (or CLI: `-
174
167
  - `actions-failure-digest` - CI/CD failure analysis
175
168
  - `project-milestone-tracker` - Milestone progress tracking
176
169
  - `confirm-briefing` - Acknowledge session context to user
170
+ - `session-summary` - Create a session summary entry with accomplishments, pending items, and next-session context
177
171
 
178
172
  **[Complete prompts guide β†’](https://github.com/neverinfamous/memory-journal-mcp/wiki/Prompts)**
179
173
 
@@ -304,18 +298,26 @@ memory-journal-mcp --transport http --port 3000 --server-host 0.0.0.0
304
298
  - **Body Size Limit** β€” 1 MB maximum
305
299
  - **404 Handler** β€” Unknown paths return `{ error: "Not found" }`
306
300
  - **Cross-Protocol Guard** β€” SSE session IDs rejected on `/mcp` and vice versa
301
+ - **Build Provenance** - Cryptographic proof of build process
302
+ - **SBOM Available** - Complete software bill of materials
303
+ - **Supply Chain Attestations** - Verifiable build integrity
304
+ - **Non-root Execution** - Minimal attack surface
305
+ - **No Native Dependencies** - Pure JS stack reduces attack surface
307
306
 
308
307
  **Example with curl:**
309
308
 
309
+ Initialize session (returns `mcp-session-id` header):
310
+
310
311
  ```bash
311
- # Initialize session
312
312
  curl -X POST http://localhost:3000/mcp \
313
313
  -H "Content-Type: application/json" \
314
314
  -H "Accept: application/json, text/event-stream" \
315
315
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'
316
- # Returns mcp-session-id header
316
+ ```
317
317
 
318
- # List tools (with session)
318
+ List tools (with session):
319
+
320
+ ```bash
319
321
  curl -X POST http://localhost:3000/mcp \
320
322
  -H "Content-Type: application/json" \
321
323
  -H "Accept: application/json, text/event-stream" \
@@ -409,34 +411,14 @@ When GitHub tools cannot auto-detect repository information:
409
411
  }
410
412
  ```
411
413
 
412
- ### Client-Specific Notes
413
-
414
- **Cursor IDE:**
415
-
416
- - **Listing MCP Resources**: If the agent has trouble listing resources, instruct it to call `ListMcpResources()` without specifying a server parameter, or with `server: "user-memory-journal-mcp"` (Cursor prefixes server names with `user-`).
417
-
418
414
  ### πŸ”„ Session Management
419
415
 
420
- Memory Journal bridges AI sessions automatically β€” the agent reads project context at session start and captures a summary at session end.
416
+ Memory Journal bridges AI sessions with a three-step cycle:
421
417
 
422
- **How it works:**
423
-
424
- 1. Session starts β†’ agent reads `memory://briefing` and shows you a project context summary
425
- 2. Session ends β†’ agent creates a `retrospective` entry tagged `session-summary`
418
+ 1. **Session start** β†’ agent reads `memory://briefing` and shows you a project context summary (automatic via server instructions)
419
+ 2. **Session summary** β†’ use the `session-summary` prompt to capture what was accomplished, what's pending, and context for the next session
426
420
  3. Next session's briefing includes the previous summary β€” context flows seamlessly
427
421
 
428
- **Setup by IDE:** Ready-to-use rules and hooks in [`hooks/`](hooks/):
429
-
430
- | Client | Primary (agent behavior) | Optional (audit/logging) |
431
- | -------------- | --------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
432
- | **Cursor** | Copy [`hooks/cursor/memory-journal.mdc`](hooks/cursor/memory-journal.mdc) to `.cursor/rules/` | Copy [`hooks/cursor/hooks.json`](hooks/cursor/hooks.json) + `session-end.sh` to `.cursor/` |
433
- | **Kiro (AWS)** | Server instructions (automatic) | Copy [`hooks/kiro/session-end.md`](hooks/kiro/session-end.md) to `.kiro/hooks/` |
434
- | **Kilo Code** | Server instructions (automatic) | Import [`hooks/kilo-code/session-end-mode.json`](hooks/kilo-code/session-end-mode.json) |
435
-
436
- **No rules or hooks?** The built-in server instructions handle both session start and end in any MCP client. The Cursor rule improves reliability by giving the agent explicit always-on instructions. This is **opt-out**: tell the agent "skip the summary" to disable session-end entries.
437
-
438
- See [`hooks/README.md`](hooks/README.md) for detailed setup instructions.
439
-
440
422
  ## πŸ”§ Configuration
441
423
 
442
424
  ### GitHub Integration (Optional)
@@ -482,7 +464,7 @@ flowchart TB
482
464
  subgraph MCP["Memory Journal MCP Server"]
483
465
  Tools["πŸ› οΈ 42 Tools"]
484
466
  Resources["πŸ“‘ 22 Resources"]
485
- Prompts["πŸ’¬ 15 Prompts"]
467
+ Prompts["πŸ’¬ 16 Prompts"]
486
468
  end
487
469
 
488
470
  subgraph Storage["Persistence Layer"]
@@ -509,7 +491,7 @@ flowchart TB
509
491
  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
510
492
  β”‚ MCP Server Layer (TypeScript) β”‚
511
493
  β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
512
- β”‚ β”‚ Tools (42) β”‚ β”‚ Resources (22) β”‚ β”‚ Prompts (15)β”‚ β”‚
494
+ β”‚ β”‚ Tools (42) β”‚ β”‚ Resources (22) β”‚ β”‚ Prompts (16)β”‚ β”‚
513
495
  β”‚ β”‚ with Annotationsβ”‚ β”‚ with Annotationsβ”‚ β”‚ β”‚ β”‚
514
496
  β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
515
497
  β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
@@ -542,9 +524,9 @@ flowchart TB
542
524
 
543
525
  Memory Journal is designed for extremely low overhead during AI task execution. We include a `vitest bench` suite to maintain these baseline guarantees:
544
526
 
545
- - **Database Reads**: Operations execute in fractions of a millisecond. `calculateImportance` is ~42x faster than retrieving 50 recent entries.
546
- - **Vector Search Engine**: Semantic searches via `vectra` perform significantly faster than parallel entry indexing (>131x faster locally).
547
- - **Core MCP Routines**: Tool dispatch via `callTool` uses cached O(1) lookup. `create_entry` and `search_entries` execute at >730 ops/sec through the MCP layer.
527
+ - **Database Reads**: Operations execute in fractions of a millisecond. `calculateImportance` is ~7x faster than retrieving 50 recent entries (composite index optimization narrows this gap by accelerating `getRecentEntries` ~4x).
528
+ - **Vector Search Engine**: Both search (780 ops/sec) and indexing (640 ops/sec) are high-throughput via `vectra` with native upsert support.
529
+ - **Core MCP Routines**: `getTools` uses cached O(1) dispatch (~4800x faster than tool execution). `create_entry` and `search_entries` execute through the full MCP layer with sub-millisecond overhead.
548
530
 
549
531
  To run the benchmarking suite locally:
550
532
 
@@ -554,11 +536,11 @@ npm run bench
554
536
 
555
537
  ### Testing
556
538
 
557
- **777 tests** across two test frameworks:
539
+ **785 tests** across two test frameworks:
558
540
 
559
541
  | Suite | Tests | Command | Covers |
560
542
  | ------------------------- | ----- | ------------------ | --------------------------------------------------------------------- |
561
- | Vitest (unit/integration) | 730 | `npm test` | Database, tools, resources, handlers, security, GitHub, vector search |
543
+ | Vitest (unit/integration) | 738 | `npm test` | Database, tools, resources, handlers, security, GitHub, vector search |
562
544
  | Playwright (e2e) | 47 | `npm run test:e2e` | HTTP/SSE transport, auth, sessions, CORS, security headers, scheduler |
563
545
 
564
546
  ```bash
@@ -1 +1 @@
1
- {"version":3,"file":"ServerInstructions.d.ts","sourceRoot":"","sources":["../../src/constants/ServerInstructions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAClB;AAED;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,UAAU,GAAG,MAAM,CAAA;AA2RhE;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAChC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,EACzB,UAAU,EAAE,kBAAkB,EAAE,EAChC,OAAO,EAAE,gBAAgB,EAAE,EAC3B,WAAW,CAAC,EAAE,mBAAmB,EACjC,KAAK,GAAE,gBAA6B,GACrC,MAAM,CAuCR;AAkBD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,QAA+C,CAAA"}
1
+ {"version":3,"file":"ServerInstructions.d.ts","sourceRoot":"","sources":["../../src/constants/ServerInstructions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAClB;AAED;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,UAAU,GAAG,MAAM,CAAA;AA0QhE;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAChC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,EACzB,UAAU,EAAE,kBAAkB,EAAE,EAChC,OAAO,EAAE,gBAAgB,EAAE,EAC3B,WAAW,CAAC,EAAE,mBAAmB,EACjC,KAAK,GAAE,gBAA6B,GACrC,MAAM,CAuCR;AAkBD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,QAA+C,CAAA"}
@@ -20,7 +20,10 @@ const ESSENTIAL_INSTRUCTIONS = `# memory-journal-mcp
20
20
  ## Session Start
21
21
 
22
22
  1. Read \`memory://briefing\` for project context
23
- - In Cursor, use \`FetchMcpResource(server: "user-memory-journal-mcp", uri: "memory://briefing")\`
23
+ - **Server name for resource calls**: Derive from tool prefixes β€” strip the tool name suffix to get the server name.
24
+ - **AntiGravity**: Tools are \`mcp_{name}_{tool}\` (e.g., \`mcp_memory-journal-mcp_create_entry\`). Server name = \`memory-journal-mcp\`.
25
+ - **Cursor**: Tools are \`user-{name}-{tool}\` (e.g., \`user-memory-journal-mcp-create_entry\`). Server name = \`user-memory-journal-mcp\`.
26
+ - **Other clients** (Claude Desktop, etc.): Likely use the configured name exactly (e.g., \`memory-journal-mcp\`). Only Cursor and AntiGravity have been verified β€” use the tool-prefix discovery method above if unsure.
24
27
  2. **Show the \`userMessage\` to the user** (it contains a formatted summary of project context)
25
28
  3. Proceed with the user's request
26
29
 
@@ -30,19 +33,6 @@ const ESSENTIAL_INSTRUCTIONS = `# memory-journal-mcp
30
33
  - **Search before**: major decisions, referencing prior work, understanding project context
31
34
  - **Link entries**: implementationβ†’spec, bugfixβ†’issue, followupβ†’prior work
32
35
 
33
- ## Session End
34
-
35
- When a conversation or task is wrapping up (user says "thanks," final deliverable complete, no more work planned):
36
-
37
- 1. Create a journal entry summarizing the session:
38
- - **What was accomplished** (key changes, decisions, files modified)
39
- - **What's unfinished or blocked** (pending items, open questions)
40
- - **Context for next session** (relevant entry IDs, branch names, PR numbers)
41
- 2. Use \`entry_type: "retrospective"\` and tag with \`session-summary\`
42
- 3. This is opt-out β€” ALWAYS create the entry, even for short/trivial sessions, unless the user explicitly says to skip it
43
-
44
- > If your client has hooks configured for session-end journaling (e.g., Cursor \`sessionEnd\` hook), this is handled automatically. Otherwise, follow the steps above.
45
-
46
36
  ## Rule & Skill Suggestions
47
37
 
48
38
  When you notice the user consistently applies patterns, preferences, or workflows that could be codified:
@@ -80,32 +70,25 @@ const GITHUB_INSTRUCTIONS = `
80
70
  const SERVER_ACCESS_INSTRUCTIONS = `
81
71
  ## How to Access This Server
82
72
 
83
- ### Calling Tools
84
-
85
- Use \`CallMcpTool\` with server name \`user-memory-journal-mcp\`:
73
+ ### Server Name Discovery
86
74
 
87
- \`\`\`
88
- CallMcpTool(server: "user-memory-journal-mcp", toolName: "create_entry", arguments: {...})
89
- \`\`\`
75
+ The server name used for resource and tool calls depends on your MCP client:
90
76
 
91
- ### Listing Resources
77
+ - **AntiGravity**: Prefixes tools with \`mcp_\` and uses underscores. If the server is named \`memory-journal-mcp\` in config, tools appear as \`mcp_memory-journal-mcp_create_entry\`. Use \`memory-journal-mcp\` as the server name for resource calls.
78
+ - **Cursor**: Prepends \`user-\` to the configured name. If the server is named \`memory-journal-mcp\` in config, use \`user-memory-journal-mcp\` for \`ListMcpResources\` and \`FetchMcpResource\` calls.
79
+ - **Other clients** (Claude Desktop, etc.): Likely use the configured name exactly. Only Cursor and AntiGravity have been verified β€” use the tool-prefix discovery method if unsure.
92
80
 
93
- Use \`ListMcpResources\` with server name:
81
+ To identify your server name: look at the tool name prefix. Strip the tool name suffix to get the server name. Examples: \`mcp_memory-journal-mcp_create_entry\` β†’ \`memory-journal-mcp\`; \`user-memory-journal-mcp-create_entry\` β†’ \`user-memory-journal-mcp\`.
94
82
 
95
- \`\`\`
96
- ListMcpResources(server: "user-memory-journal-mcp")
97
- \`\`\`
83
+ ### Calling Tools
98
84
 
99
- Do NOT try to browse filesystem paths for MCP tool/resource definitions - use the MCP protocol directly.
85
+ Use the tool functions directly β€” they are already available in your context by their full prefixed name.
100
86
 
101
- ### Fetching Resources
87
+ ### Reading Resources
102
88
 
103
- Use \`FetchMcpResource\` with server name and \`memory://\` URI:
89
+ Use the resource-reading mechanism provided by your MCP client with the discovered server name and \`memory://\` URIs.
104
90
 
105
- \`\`\`
106
- FetchMcpResource(server: "user-memory-journal-mcp", uri: "memory://recent")
107
- FetchMcpResource(server: "user-memory-journal-mcp", uri: "memory://kanban/1")
108
- \`\`\`
91
+ Do NOT try to browse filesystem paths for MCP tool/resource definitions β€” use the MCP protocol directly.
109
92
 
110
93
  ## Quick Health Check
111
94
 
@@ -1 +1 @@
1
- {"version":3,"file":"ServerInstructions.js","sourceRoot":"","sources":["../../src/constants/ServerInstructions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ServerInstructions.js","sourceRoot":"","sources":["../../src/constants/ServerInstructions.ts"],"names":[],"mappings":"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"}