memory-journal-mcp 4.3.0 → 4.4.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 (109) hide show
  1. package/.dockerignore +131 -122
  2. package/.gitattributes +29 -0
  3. package/.github/workflows/docker-publish.yml +1 -1
  4. package/.github/workflows/lint-and-test.yml +1 -2
  5. package/.github/workflows/secrets-scanning.yml +0 -1
  6. package/.github/workflows/security-update.yml +6 -6
  7. package/.vscode/settings.json +17 -15
  8. package/CHANGELOG.md +1065 -11
  9. package/DOCKER_README.md +51 -33
  10. package/Dockerfile +14 -12
  11. package/README.md +68 -33
  12. package/SECURITY.md +225 -220
  13. package/dist/cli.js +7 -0
  14. package/dist/cli.js.map +1 -1
  15. package/dist/constants/ServerInstructions.d.ts +1 -1
  16. package/dist/constants/ServerInstructions.d.ts.map +1 -1
  17. package/dist/constants/ServerInstructions.js +70 -26
  18. package/dist/constants/ServerInstructions.js.map +1 -1
  19. package/dist/constants/icons.d.ts +2 -0
  20. package/dist/constants/icons.d.ts.map +1 -1
  21. package/dist/constants/icons.js +6 -0
  22. package/dist/constants/icons.js.map +1 -1
  23. package/dist/database/SqliteAdapter.d.ts +51 -10
  24. package/dist/database/SqliteAdapter.d.ts.map +1 -1
  25. package/dist/database/SqliteAdapter.js +143 -43
  26. package/dist/database/SqliteAdapter.js.map +1 -1
  27. package/dist/filtering/ToolFilter.d.ts +1 -1
  28. package/dist/filtering/ToolFilter.d.ts.map +1 -1
  29. package/dist/filtering/ToolFilter.js +7 -1
  30. package/dist/filtering/ToolFilter.js.map +1 -1
  31. package/dist/github/GitHubIntegration.d.ts +74 -2
  32. package/dist/github/GitHubIntegration.d.ts.map +1 -1
  33. package/dist/github/GitHubIntegration.js +508 -7
  34. package/dist/github/GitHubIntegration.js.map +1 -1
  35. package/dist/handlers/prompts/index.js +1 -0
  36. package/dist/handlers/prompts/index.js.map +1 -1
  37. package/dist/handlers/resources/index.d.ts.map +1 -1
  38. package/dist/handlers/resources/index.js +257 -13
  39. package/dist/handlers/resources/index.js.map +1 -1
  40. package/dist/handlers/tools/index.d.ts.map +1 -1
  41. package/dist/handlers/tools/index.js +595 -8
  42. package/dist/handlers/tools/index.js.map +1 -1
  43. package/dist/server/McpServer.d.ts +2 -0
  44. package/dist/server/McpServer.d.ts.map +1 -1
  45. package/dist/server/McpServer.js +69 -26
  46. package/dist/server/McpServer.js.map +1 -1
  47. package/dist/types/index.d.ts +97 -0
  48. package/dist/types/index.d.ts.map +1 -1
  49. package/dist/types/index.js.map +1 -1
  50. package/dist/utils/logger.d.ts +1 -0
  51. package/dist/utils/logger.d.ts.map +1 -1
  52. package/dist/utils/logger.js +8 -1
  53. package/dist/utils/logger.js.map +1 -1
  54. package/dist/utils/progress-utils.d.ts +18 -3
  55. package/dist/utils/progress-utils.d.ts.map +1 -1
  56. package/dist/utils/progress-utils.js.map +1 -1
  57. package/dist/utils/security-utils.d.ts +91 -0
  58. package/dist/utils/security-utils.d.ts.map +1 -0
  59. package/dist/utils/security-utils.js +184 -0
  60. package/dist/utils/security-utils.js.map +1 -0
  61. package/dist/vector/VectorSearchManager.d.ts +2 -1
  62. package/dist/vector/VectorSearchManager.d.ts.map +1 -1
  63. package/dist/vector/VectorSearchManager.js +100 -34
  64. package/dist/vector/VectorSearchManager.js.map +1 -1
  65. package/docker-compose.yml +46 -37
  66. package/mcp-config-example.json +0 -2
  67. package/package.json +21 -14
  68. package/releases/v4.3.1.md +69 -0
  69. package/releases/v4.4.0.md +120 -0
  70. package/server.json +3 -3
  71. package/src/cli.ts +11 -0
  72. package/src/constants/ServerInstructions.ts +70 -26
  73. package/src/constants/icons.ts +7 -0
  74. package/src/database/SqliteAdapter.ts +165 -44
  75. package/src/filtering/ToolFilter.ts +7 -1
  76. package/src/github/GitHubIntegration.ts +588 -8
  77. package/src/handlers/prompts/index.ts +1 -0
  78. package/src/handlers/resources/index.ts +318 -12
  79. package/src/handlers/tools/index.ts +686 -13
  80. package/src/server/McpServer.ts +79 -37
  81. package/src/types/index.ts +98 -0
  82. package/src/utils/logger.ts +10 -1
  83. package/src/utils/progress-utils.ts +17 -6
  84. package/src/utils/security-utils.ts +205 -0
  85. package/src/vector/VectorSearchManager.ts +110 -39
  86. package/tests/constants/icons.test.ts +102 -0
  87. package/tests/constants/server-instructions.test.ts +549 -0
  88. package/tests/database/sqlite-adapter.bench.ts +63 -0
  89. package/tests/database/sqlite-adapter.test.ts +555 -0
  90. package/tests/filtering/tool-filter.test.ts +266 -0
  91. package/tests/github/github-integration.test.ts +1024 -0
  92. package/tests/handlers/github-resource-handlers.test.ts +473 -0
  93. package/tests/handlers/github-tool-handlers.test.ts +556 -0
  94. package/tests/handlers/prompt-handlers.test.ts +91 -0
  95. package/tests/handlers/resource-handlers.test.ts +339 -0
  96. package/tests/handlers/tool-handlers.test.ts +497 -0
  97. package/tests/handlers/vector-tool-handlers.test.ts +238 -0
  98. package/tests/security/sql-injection.test.ts +347 -0
  99. package/tests/server/mcp-server.bench.ts +55 -0
  100. package/tests/server/mcp-server.test.ts +675 -0
  101. package/tests/utils/logger.test.ts +180 -0
  102. package/tests/utils/mcp-logger.test.ts +212 -0
  103. package/tests/utils/progress-utils.test.ts +156 -0
  104. package/tests/utils/security-utils.test.ts +82 -0
  105. package/tests/vector/vector-search-manager.test.ts +335 -0
  106. package/tests/vector/vector-search.bench.ts +53 -0
  107. package/vitest.config.ts +15 -0
  108. package/.github/workflows/DOCKER_DEPLOYMENT_SETUP.md +0 -387
  109. package/.github/workflows/dependabot-auto-merge.yml +0 -42
package/DOCKER_README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Memory Journal MCP Server
2
2
 
3
- Last Updated January 18, 2026
3
+ **Last Updated February 27, 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,10 @@ Last Updated January 18, 2026
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-80.7%25-brightgreen.svg)
14
+ ![Tests](https://img.shields.io/badge/Tests-479_passed-brightgreen.svg)
13
15
 
14
- 🎯 **AI Context + Project Intelligence:** Bridge disconnected AI sessions with persistent project memory, while integrating your complete GitHub workflow — Issues, PRs, Actions, Kanban boards, and knowledge graphs into every conversation.
16
+ 🎯 **AI Context + Project Intelligence:** Bridge disconnected AI sessions with persistent project memory, while integrating your complete GitHub workflow — Issues, PRs, Actions, Kanban boards, Milestones, Repository Insights, and Knowledge Graphs into every conversation.
15
17
 
16
18
  **[GitHub](https://github.com/neverinfamous/memory-journal-mcp)** • **[Wiki](https://github.com/neverinfamous/memory-journal-mcp/wiki)** • **[Changelog](https://github.com/neverinfamous/memory-journal-mcp/wiki/CHANGELOG)** • **[Release Article](https://adamic.tech/articles/memory-journal-mcp-server)**
17
19
 
@@ -20,10 +22,11 @@ Last Updated January 18, 2026
20
22
  ### Key Benefits
21
23
 
22
24
  - 🧠 **Dynamic Context Management** - AI agents automatically query your project history and create entries at the right moments
23
- - 📝 **Auto-capture Git/GitHub context** (commits, branches, issues, PRs, projects)
25
+ - 📝 **Auto-capture Git/GitHub context** (commits, branches, issues, milestones, PRs, projects)
24
26
  - 🔗 **Build knowledge graphs** linking specs → implementations → tests → PRs
25
27
  - 🔍 **Triple search** (full-text, semantic, date range)
26
28
  - 📊 **Generate reports** (standups, retrospectives, PR summaries, status)
29
+ - 📈 **Track repository insights** — stars, forks, clones, views, top referrers, and popular paths (14-day rolling)
27
30
  - 🗄️ **Backup & restore** your journal data with one command
28
31
 
29
32
  ### Deployment Options
@@ -78,10 +81,10 @@ Last Updated January 18, 2026
78
81
 
79
82
  ### 📈 **Current Capabilities**
80
83
 
81
- - **33 MCP tools** - Complete development workflow + backup/restore + Kanban + issue management
84
+ - **39 MCP tools** - Complete development workflow + backup/restore + Kanban + Milestones + Insights + issue management
82
85
  - **15 workflow prompts** - Standups, retrospectives, PR workflows, CI/CD failure analysis, session acknowledgment
83
- - **18 MCP resources** - 12 static + 6 template (require parameters)
84
- - **GitHub Integration** - Projects, Issues, Pull Requests, Actions, **Kanban boards**
86
+ - **21 MCP resources** - 14 static + 7 template (require parameters)
87
+ - **GitHub Integration** - Projects, Issues, Pull Requests, Actions, **Kanban boards**, **Milestones**
85
88
  - **8 tool groups** - `core`, `search`, `analytics`, `relationships`, `export`, `admin`, `github`, `backup`
86
89
  - **Knowledge graphs** - 8 relationship types, Mermaid visualization
87
90
  - **Semantic search** - AI-powered conceptual search via `@xenova/transformers`
@@ -165,6 +168,7 @@ To enable GitHub tools (`get_github_issues`, `get_github_prs`, etc.), add enviro
165
168
  | `GITHUB_REPO_PATH` | Path to git repo inside container (mount your repo) |
166
169
  | `DEFAULT_PROJECT_NUMBER` | Default GitHub Project number for auto-assignment when creating issues |
167
170
  | `AUTO_REBUILD_INDEX` | Set to `true` to rebuild vector index on server startup |
171
+ | `MCP_HOST` | Server bind host (`0.0.0.0` for containers, default: `localhost`) |
168
172
 
169
173
  **Without `GITHUB_REPO_PATH`**: Explicitly provide `owner` and `repo` when calling GitHub tools.
170
174
 
@@ -186,6 +190,8 @@ When GitHub tools cannot auto-detect repository information:
186
190
 
187
191
  **Google AntiGravity IDE:**
188
192
 
193
+ - **AntiGravity Users:** Server instructions are automatically sent to MCP clients during initialization. However, AntiGravity does not currently support MCP server instructions. For optimal usage in AntiGravity, manually provide the contents of [`src/constants/ServerInstructions.ts`](src/constants/ServerInstructions.ts) to the agent in your prompt or user rules.
194
+
189
195
  - **Session start**: Add to your user rules: "At session start, read `memory://briefing` from memory-journal-mcp."
190
196
 
191
197
  - **Full guidance**: If behaviors missing, read `memory://instructions` for complete Dynamic Context Management patterns.
@@ -202,7 +208,7 @@ For remote access, web-based clients, or HTTP-compatible MCP hosts:
202
208
  docker run --rm -p 3000:3000 \
203
209
  -v ./data:/app/data \
204
210
  writenotenow/memory-journal-mcp:latest \
205
- --transport http --port 3000
211
+ --transport http --port 3000 --server-host 0.0.0.0
206
212
  ```
207
213
 
208
214
  **Stateless Mode (serverless):**
@@ -211,7 +217,7 @@ docker run --rm -p 3000:3000 \
211
217
  docker run --rm -p 3000:3000 \
212
218
  -v ./data:/app/data \
213
219
  writenotenow/memory-journal-mcp:latest \
214
- --transport http --port 3000 --stateless
220
+ --transport http --port 3000 --server-host 0.0.0.0 --stateless
215
221
  ```
216
222
 
217
223
  **Endpoints:**
@@ -300,18 +306,18 @@ docker pull writenotenow/memory-journal-mcp@sha256:<manifest-digest>
300
306
 
301
307
  ## ⚡ Core Features
302
308
 
303
- ### 🛠️ 33 MCP Tools (8 Groups)
309
+ ### 🛠️ 39 MCP Tools (8 Groups)
304
310
 
305
- | Group | Tools | Description |
306
- | --------------- | ----- | --------------------------------------------------- |
307
- | `core` | 6 | Entry CRUD, tags, test |
308
- | `search` | 4 | Text search, date range, semantic, vector stats |
309
- | `analytics` | 2 | Statistics, cross-project insights |
310
- | `relationships` | 2 | Link entries, visualize graphs |
311
- | `export` | 1 | JSON/Markdown export |
312
- | `admin` | 5 | Update, delete, vector index management, merge tags |
313
- | `github` | 9 | Issues, PRs, context, Kanban, **issue lifecycle** |
314
- | `backup` | 4 | Backup, list, restore, cleanup |
311
+ | Group | Tools | Description |
312
+ | --------------- | ----- | ------------------------------------------------------------------------------- |
313
+ | `core` | 6 | Entry CRUD, tags, test |
314
+ | `search` | 4 | Text search, date range, semantic, vector stats |
315
+ | `analytics` | 2 | Statistics, cross-project insights |
316
+ | `relationships` | 2 | Link entries, visualize graphs |
317
+ | `export` | 1 | JSON/Markdown export |
318
+ | `admin` | 5 | Update, delete, rebuild/add to vector index, merge tags |
319
+ | `github` | 15 | Issues, PRs, context, Kanban, **Milestones**, **Insights**, **issue lifecycle** |
320
+ | `backup` | 4 | Backup, list, restore, cleanup |
315
321
 
316
322
  **[Complete tools documentation →](https://github.com/neverinfamous/memory-journal-mcp/wiki/Tools)**
317
323
 
@@ -320,9 +326,9 @@ docker pull writenotenow/memory-journal-mcp@sha256:<manifest-digest>
320
326
  Standups • Retrospectives • Weekly digests • PR summaries • Code review prep • Goal tracking
321
327
  **[Complete prompts guide →](https://github.com/neverinfamous/memory-journal-mcp/wiki/Prompts)**
322
328
 
323
- ### 📡 18 Resources (12 Static + 6 Template)
329
+ ### 📡 21 Resources (14 Static + 7 Template)
324
330
 
325
- Including `memory://briefing` for session initialization, `memory://instructions` for behavioral guidance, `memory://health` for diagnostics, and `memory://kanban/{n}` for Kanban boards. Template resources require parameters and are accessed directly by URI.
331
+ Including `memory://briefing` for session initialization, `memory://instructions` for behavioral guidance, `memory://health` for diagnostics, `memory://kanban/{n}` for Kanban boards, `memory://github/milestones` for milestone tracking, and `memory://github/insights` for repository traffic analytics. Template resources require parameters and are accessed directly by URI.
326
332
  **[Resources documentation →](https://github.com/neverinfamous/memory-journal-mcp/wiki/Resources)**
327
333
 
328
334
  ---
@@ -345,34 +351,38 @@ Including `memory://briefing` for session initialization, `memory://instructions
345
351
  ```bash
346
352
  # GitHub integration (optional - enables Projects/Issues/PRs)
347
353
  -e GITHUB_TOKEN=your_token
348
- -e GITHUB_ORG_TOKEN=your_org_token # For org projects
349
- -e DEFAULT_ORG=your-org-name
350
354
 
351
355
  # Tool filtering (optional - control which tools are exposed)
352
356
  -e MEMORY_JOURNAL_MCP_TOOL_FILTER="-github"
353
357
 
358
+ # Server bind host (required for containers, default: localhost)
359
+ -e MCP_HOST=0.0.0.0
360
+
354
361
  # Database location
355
362
  -e DB_PATH=/app/data/custom.db
356
363
  ```
357
364
 
358
- **Token Scopes:** `repo`, `project`, `read:org` (org projects only)
365
+ **Token Scopes:** `repo`, `project`, `read:org` (org-level project discovery only)
359
366
  **[Full configuration guide →](https://github.com/neverinfamous/memory-journal-mcp/wiki/Installation#configuration)**
360
367
 
361
368
  ### GitHub Management Capabilities
362
369
 
363
370
  Memory Journal provides a **hybrid approach** to GitHub management:
364
371
 
365
- | Capability Source | Purpose |
366
- | ------------------ | ------------------------------------------------------------------------------ |
367
- | **MCP Server** | Specialized features: Kanban visualization, journal linking, project timelines |
368
- | **Agent (gh CLI)** | Full GitHub mutations: create/close issues, create/merge PRs, manage releases |
372
+ | Capability Source | Purpose |
373
+ | ------------------ | ------------------------------------------------------------------------------------------ |
374
+ | **MCP Server** | Specialized features: Kanban visualization, Milestones, journal linking, project timelines |
375
+ | **Agent (gh CLI)** | Full GitHub mutations: create/close issues, create/merge PRs, manage releases |
369
376
 
370
- **MCP Server Tools (Read + Kanban + Issue Lifecycle):**
377
+ **MCP Server Tools (Read + Kanban + Milestones + Issue Lifecycle):**
371
378
 
372
379
  - `get_github_issues` / `get_github_issue` - Query issues
373
380
  - `get_github_prs` / `get_github_pr` - Query pull requests
374
381
  - `get_github_context` - Full repository context
375
382
  - `get_kanban_board` / `move_kanban_item` - **Kanban management**
383
+ - `get_github_milestones` / `get_github_milestone` - **Milestone tracking with completion %**
384
+ - `create_github_milestone` / `update_github_milestone` / `delete_github_milestone` - **Milestone CRUD**
385
+ - `get_repo_insights` - **Repository traffic & analytics** (stars, clones, views, referrers, popular paths)
376
386
  - `create_github_issue_with_entry` / `close_github_issue_with_entry` - **Issue lifecycle with journal linking**
377
387
 
378
388
  **Agent Operations (via gh CLI):**
@@ -387,7 +397,7 @@ gh pr create --fill
387
397
  gh pr merge 123
388
398
  ```
389
399
 
390
- > **Why this design?** The MCP server focuses on value-added features that integrate journal entries with GitHub (Kanban views, timeline resources, context linking). Standard GitHub mutations are handled by `gh` CLI, which agents can invoke directly.
400
+ > **Why this design?** The MCP server focuses on value-added features that integrate journal entries with GitHub (Kanban views, Milestones, timeline resources, context linking). Standard GitHub mutations are handled by `gh` CLI, which agents can invoke directly.
391
401
 
392
402
  **[Complete GitHub integration guide →](https://github.com/neverinfamous/memory-journal-mcp/wiki/Git-Integration)**
393
403
 
@@ -438,6 +448,14 @@ docker run -i --rm \
438
448
  - **Instant Startup** - Lazy loading of ML models
439
449
  - **Production/Stable** - Comprehensive error handling and automatic migrations
440
450
 
451
+ **Performance Benchmarks:**
452
+
453
+ Memory Journal is designed for extremely low overhead during AI task execution.
454
+
455
+ - **Database Reads**: Operations execute in fractions of a millisecond. `calculateImportance` is ~55x faster than retrieving 50 recent entries.
456
+ - **Vector Search Engine**: Semantic searches via `vectra` perform significantly faster than parallel entry indexing (>190x faster locally).
457
+ - **Core MCP Routines**: Complex operations exhibit negligible latency when executed through standard MCP tools. Calling tools natively adds ~1.4x overhead compared to direct function execution.
458
+
441
459
  **Automated Deployment:**
442
460
 
443
461
  - ⚡ **Always Fresh** - Images built within minutes of commits
@@ -448,9 +466,9 @@ docker run -i --rm \
448
466
 
449
467
  **Available Tags:**
450
468
 
451
- - `4.0.0` - Specific version (recommended for production)
452
- - `3.0` - Latest patch in 3.0.x series
453
- - `3` - Latest minor in 3.x series
469
+ - `4.4.0` - Specific version (recommended for production)
470
+ - `4.4` - Latest patch in 4.4.x series
471
+ - `4` - Latest minor in 4.x series
454
472
  - `latest` - Always the newest version
455
473
  - `sha256-<digest>` - SHA-pinned for maximum security
456
474
 
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-23745: Manually update npm's bundled tar@7.5.2 to 7.5.3
26
+ # Fix CVE-2026-23950, CVE-2026-24842, CVE-2026-26960: Manually update npm's bundled tar to 7.5.8
27
27
  RUN cd /usr/local/lib/node_modules/npm && \
28
- npm pack tar@7.5.3 && \
28
+ npm pack tar@7.5.8 && \
29
29
  rm -rf node_modules/tar && \
30
- tar -xzf tar-7.5.3.tgz && \
30
+ tar -xzf tar-7.5.8.tgz && \
31
31
  mv package node_modules/tar && \
32
- rm tar-7.5.3.tgz
32
+ rm tar-7.5.8.tgz
33
33
 
34
34
  # Copy package files first for better layer caching
35
35
  COPY package*.json .npmrc ./
@@ -56,8 +56,9 @@ WORKDIR /app
56
56
 
57
57
  # Install runtime dependencies with security fixes
58
58
  # Use Alpine edge for curl with CVE fixes
59
+ # Explicit libexpat upgrade for CVE-2026-24515 (CRITICAL) and CVE-2026-25210 (MEDIUM)
59
60
  RUN apk add --no-cache git ca-certificates && \
60
- apk add --no-cache --repository=https://dl-cdn.alpinelinux.org/alpine/edge/main curl && \
61
+ apk add --no-cache --repository=https://dl-cdn.alpinelinux.org/alpine/edge/main curl libexpat && \
61
62
  apk upgrade --no-cache && \
62
63
  npm install -g npm@latest --force && npm cache clean --force
63
64
 
@@ -69,13 +70,13 @@ RUN cd /usr/local/lib/node_modules/npm && \
69
70
  mv package node_modules/diff && \
70
71
  rm diff-8.0.3.tgz
71
72
 
72
- # Fix CVE-2026-23745: Manually update npm's bundled tar@7.5.2 to 7.5.3
73
+ # Fix CVE-2026-23950, CVE-2026-24842, CVE-2026-26960: Manually update npm's bundled tar to 7.5.8
73
74
  RUN cd /usr/local/lib/node_modules/npm && \
74
- npm pack tar@7.5.3 && \
75
+ npm pack tar@7.5.8 && \
75
76
  rm -rf node_modules/tar && \
76
- tar -xzf tar-7.5.3.tgz && \
77
+ tar -xzf tar-7.5.8.tgz && \
77
78
  mv package node_modules/tar && \
78
- rm tar-7.5.3.tgz
79
+ rm tar-7.5.8.tgz
79
80
 
80
81
  # Copy built artifacts and production dependencies
81
82
  COPY --from=builder /app/dist ./dist
@@ -98,9 +99,10 @@ ENV DB_PATH=/app/data/memory_journal.db
98
99
  # Switch to non-root user
99
100
  USER appuser
100
101
 
101
- # Health check
102
+ # Health check - validates Node.js is responsive
103
+ # For HTTP mode, override with: HEALTHCHECK CMD curl -f http://localhost:3000/mcp || exit 1
102
104
  HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
103
- CMD node -e "console.log('Server healthy')" || exit 1
105
+ CMD node -e "process.exit(0)" || exit 1
104
106
 
105
107
  # Run the MCP server
106
108
  CMD ["node", "dist/cli.js"]
@@ -108,6 +110,6 @@ CMD ["node", "dist/cli.js"]
108
110
  # Labels for Docker Hub
109
111
  LABEL maintainer="Adamic.tech"
110
112
  LABEL description="Memory Journal MCP Server - Project context management for AI-assisted development"
111
- LABEL version="4.0.0"
113
+ LABEL version="4.4.0"
112
114
  LABEL org.opencontainers.image.source="https://github.com/neverinfamous/memory-journal-mcp"
113
115
  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 January 18, 2026
3
+ **Last Updated February 27, 2026**
4
4
 
5
5
  <!-- mcp-name: io.github.neverinfamous/memory-journal-mcp -->
6
6
 
@@ -12,8 +12,10 @@ Last Updated January 18, 2026
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-80.7%25-brightgreen.svg)
16
+ ![Tests](https://img.shields.io/badge/Tests-479_passed-brightgreen.svg)
15
17
 
16
- 🎯 **AI Context + Project Intelligence:** Bridge disconnected AI sessions with persistent project memory, while integrating your complete GitHub workflow — Issues, PRs, Actions, Kanban boards, and knowledge graphs — into every conversation.
18
+ 🎯 **AI Context + Project Intelligence:** Bridge disconnected AI sessions with persistent project memory, while integrating your complete GitHub workflow — Issues, PRs, Actions, Kanban boards, Milestones, Repository Insights, and Knowledge Graphs — into every conversation.
17
19
 
18
20
  **[GitHub](https://github.com/neverinfamous/memory-journal-mcp)** • **[Wiki](https://github.com/neverinfamous/memory-journal-mcp/wiki)** • **[Changelog](https://github.com/neverinfamous/memory-journal-mcp/wiki/CHANGELOG)** • **[Release Article](https://adamic.tech/articles/memory-journal-mcp-server)**
19
21
 
@@ -27,10 +29,11 @@ Last Updated January 18, 2026
27
29
  ### Key Benefits
28
30
 
29
31
  - 🧠 **Dynamic Context Management** - AI agents automatically query your project history and create entries at the right moments
30
- - 📝 **Auto-capture Git/GitHub context** (commits, branches, issues, PRs, projects)
32
+ - 📝 **Auto-capture Git/GitHub context** (commits, branches, issues, milestones, PRs, projects)
31
33
  - 🔗 **Build knowledge graphs** linking specs → implementations → tests → PRs
32
34
  - 🔍 **Triple search** (full-text, semantic, date range)
33
35
  - 📊 **Generate reports** (standups, retrospectives, PR summaries, status)
36
+ - 📈 **Track repository insights** — stars, forks, clones, views, top referrers, and popular paths (14-day rolling)
34
37
  - 🗄️ **Backup & restore** your journal data with one command
35
38
 
36
39
  ```mermaid
@@ -73,10 +76,10 @@ flowchart TB
73
76
 
74
77
  ### 📈 **Current Capabilities**
75
78
 
76
- - **33 MCP tools** - Complete development workflow + backup/restore + Kanban + issue management
79
+ - **39 MCP tools** - Complete development workflow + backup/restore + Kanban + Milestones + Insights + issue management
77
80
  - **15 workflow prompts** - Standups, retrospectives, PR workflows, CI/CD failure analysis, session acknowledgment
78
- - **18 MCP resources** - 12 static + 6 template (require parameters)
79
- - **GitHub Integration** - Projects, Issues, Pull Requests, Actions, **Kanban boards**
81
+ - **21 MCP resources** - 14 static + 7 template (require parameters)
82
+ - **GitHub Integration** - Projects, Issues, Pull Requests, Actions, **Kanban boards**, **Milestones**
80
83
  - **8 tool groups** - `core`, `search`, `analytics`, `relationships`, `export`, `admin`, `github`, `backup`
81
84
  - **Knowledge graphs** - 8 relationship types, Mermaid visualization
82
85
  - **Semantic search** - AI-powered conceptual search via `@xenova/transformers`
@@ -182,6 +185,12 @@ For remote access or web-based clients, run the server in HTTP mode:
182
185
  memory-journal-mcp --transport http --port 3000
183
186
  ```
184
187
 
188
+ To bind to all interfaces (required for containers):
189
+
190
+ ```bash
191
+ memory-journal-mcp --transport http --port 3000 --server-host 0.0.0.0
192
+ ```
193
+
185
194
  **Endpoints:**
186
195
 
187
196
  - `POST /mcp` — JSON-RPC requests (initialize, tools/call, etc.)
@@ -247,6 +256,7 @@ The GitHub tools (`get_github_issues`, `get_github_prs`, etc.) can auto-detect t
247
256
  | `GITHUB_REPO_PATH` | Path to the git repository for auto-detecting owner/repo |
248
257
  | `DEFAULT_PROJECT_NUMBER` | Default GitHub Project number for auto-assignment when creating issues |
249
258
  | `AUTO_REBUILD_INDEX` | Set to `true` to rebuild vector index on server startup |
259
+ | `MCP_HOST` | Server bind host (`0.0.0.0` for containers, default: `localhost`) |
250
260
 
251
261
  **Without `GITHUB_REPO_PATH`**: You'll need to explicitly provide `owner` and `repo` parameters when calling GitHub tools.
252
262
 
@@ -276,6 +286,8 @@ When GitHub tools cannot auto-detect repository information:
276
286
 
277
287
  **Google AntiGravity IDE:**
278
288
 
289
+ - **AntiGravity Users:** Server instructions are automatically sent to MCP clients during initialization. However, AntiGravity does not currently support MCP server instructions. For optimal usage in AntiGravity, manually provide the contents of [`src/constants/ServerInstructions.ts`](src/constants/ServerInstructions.ts) to the agent in your prompt or user rules.
290
+
279
291
  - **Session start**: Add to your user rules: "At session start, read `memory://briefing` from memory-journal-mcp."
280
292
 
281
293
  - **Full guidance**: If behaviors missing, read `memory://instructions` for complete Dynamic Context Management patterns.
@@ -286,18 +298,18 @@ When GitHub tools cannot auto-detect repository information:
286
298
 
287
299
  ## 📋 Core Capabilities
288
300
 
289
- ### 🛠️ **33 MCP Tools** (8 Groups)
301
+ ### 🛠️ **39 MCP Tools** (8 Groups)
290
302
 
291
- | Group | Tools | Description |
292
- | --------------- | ----- | ------------------------------------------------------- |
293
- | `core` | 6 | Entry CRUD, tags, test |
294
- | `search` | 4 | Text search, date range, semantic, vector stats |
295
- | `analytics` | 2 | Statistics, cross-project insights |
296
- | `relationships` | 2 | Link entries, visualize graphs |
297
- | `export` | 1 | JSON/Markdown export |
298
- | `admin` | 5 | Update, delete, rebuild/add to vector index, merge tags |
299
- | `github` | 9 | Issues, PRs, context, Kanban, **issue lifecycle** |
300
- | `backup` | 4 | Backup, list, restore, cleanup |
303
+ | Group | Tools | Description |
304
+ | --------------- | ----- | ------------------------------------------------------------------------------- |
305
+ | `core` | 6 | Entry CRUD, tags, test |
306
+ | `search` | 4 | Text search, date range, semantic, vector stats |
307
+ | `analytics` | 2 | Statistics, cross-project insights |
308
+ | `relationships` | 2 | Link entries, visualize graphs |
309
+ | `export` | 1 | JSON/Markdown export |
310
+ | `admin` | 5 | Update, delete, rebuild/add to vector index, merge tags |
311
+ | `github` | 15 | Issues, PRs, context, Kanban, **Milestones**, **Insights**, **issue lifecycle** |
312
+ | `backup` | 4 | Backup, list, restore, cleanup |
301
313
 
302
314
  **[Complete tools reference →](https://github.com/neverinfamous/memory-journal-mcp/wiki/Tools)**
303
315
 
@@ -310,20 +322,23 @@ When GitHub tools cannot auto-detect repository information:
310
322
  - `analyze-period` - Deep period analysis with insights
311
323
  - `goal-tracker` - Milestone and achievement tracking
312
324
  - `get-context-bundle` - Project context with Git/GitHub/Kanban
325
+ - `get-recent-entries` - Formatted recent entries
326
+ - `project-status-summary` - GitHub Project status reports
313
327
  - `pr-summary` - Pull request journal activity summary
314
328
  - `code-review-prep` - Comprehensive PR review preparation
315
329
  - `pr-retrospective` - Completed PR analysis with learnings
316
330
  - `actions-failure-digest` - CI/CD failure analysis
317
- - `confirm-briefing` - **NEW** Acknowledge session context to user
331
+ - `project-milestone-tracker` - Milestone progress tracking
332
+ - `confirm-briefing` - Acknowledge session context to user
318
333
 
319
334
  **[Complete prompts guide →](https://github.com/neverinfamous/memory-journal-mcp/wiki/Prompts)**
320
335
 
321
- ### 📡 **18 Resources** (12 Static + 6 Template)
336
+ ### 📡 **21 Resources** (14 Static + 7 Template)
322
337
 
323
338
  **Static Resources** (appear in resource lists):
324
339
 
325
340
  - `memory://briefing` - **Session initialization**: compact context for AI agents (~300 tokens)
326
- - `memory://instructions` - **Behavioral guidance**: complete server instructions (supports `?level=essential|standard|full`)
341
+ - `memory://instructions` - **Behavioral guidance**: complete server instructions for AI agents
327
342
  - `memory://recent` - 10 most recent entries
328
343
  - `memory://significant` - Significant milestones and breakthroughs
329
344
  - `memory://graph/recent` - Live Mermaid diagram of recent relationships
@@ -334,6 +349,8 @@ When GitHub tools cannot auto-detect repository information:
334
349
  - `memory://tags` - All tags with usage counts
335
350
  - `memory://statistics` - Journal statistics
336
351
  - `memory://github/status` - GitHub repository status overview
352
+ - `memory://github/insights` - Repository stars, forks, and 14-day traffic summary
353
+ - `memory://github/milestones` - Open milestones with completion percentages
337
354
 
338
355
  **Template Resources** (require parameters, fetch directly by URI):
339
356
 
@@ -343,6 +360,7 @@ When GitHub tools cannot auto-detect repository information:
343
360
  - `memory://prs/{pr_number}/timeline` - Combined PR + journal timeline
344
361
  - `memory://kanban/{project_number}` - GitHub Project Kanban board
345
362
  - `memory://kanban/{project_number}/diagram` - Kanban Mermaid visualization
363
+ - `memory://milestones/{number}` - Milestone detail with completion progress
346
364
 
347
365
  ---
348
366
 
@@ -352,27 +370,28 @@ When GitHub tools cannot auto-detect repository information:
352
370
 
353
371
  ```bash
354
372
  export GITHUB_TOKEN="your_token" # For Projects/Issues/PRs
355
- export GITHUB_ORG_TOKEN="your_org_token" # Optional: org projects
356
- export DEFAULT_ORG="your-org-name" # Optional: default org
357
373
  ```
358
374
 
359
- **Scopes:** `repo`, `project`, `read:org` (org only)
375
+ **Scopes:** `repo`, `project`, `read:org` (org-level project discovery only)
360
376
 
361
377
  ### GitHub Management Capabilities
362
378
 
363
379
  Memory Journal provides a **hybrid approach** to GitHub management:
364
380
 
365
- | Capability Source | Purpose |
366
- | ------------------ | ------------------------------------------------------------------------------ |
367
- | **MCP Server** | Specialized features: Kanban visualization, journal linking, project timelines |
368
- | **Agent (gh CLI)** | Full GitHub mutations: create/close issues, create/merge PRs, manage releases |
381
+ | Capability Source | Purpose |
382
+ | ------------------ | ------------------------------------------------------------------------------------------ |
383
+ | **MCP Server** | Specialized features: Kanban visualization, Milestones, journal linking, project timelines |
384
+ | **Agent (gh CLI)** | Full GitHub mutations: create/close issues, create/merge PRs, manage releases |
369
385
 
370
- **MCP Server Tools (Read + Kanban + Issue Lifecycle):**
386
+ **MCP Server Tools (Read + Kanban + Milestones + Issue Lifecycle):**
371
387
 
372
388
  - `get_github_issues` / `get_github_issue` - Query issues
373
389
  - `get_github_prs` / `get_github_pr` - Query pull requests
374
390
  - `get_github_context` - Full repository context
375
391
  - `get_kanban_board` / `move_kanban_item` - **Kanban management**
392
+ - `get_github_milestones` / `get_github_milestone` - **Milestone tracking with completion %**
393
+ - `create_github_milestone` / `update_github_milestone` / `delete_github_milestone` - **Milestone CRUD**
394
+ - `get_repo_insights` - **Repository traffic & analytics** (stars, clones, views, referrers, popular paths)
376
395
  - `create_github_issue_with_entry` / `close_github_issue_with_entry` - **Issue lifecycle with journal linking**
377
396
 
378
397
  **Agent Operations (via gh CLI):**
@@ -432,8 +451,8 @@ export MEMORY_JOURNAL_MCP_TOOL_FILTER="-analytics,-github"
432
451
  | -------------- | ------------- | ----- |
433
452
  | Starter | `starter` | ~10 |
434
453
  | Essential | `essential` | ~6 |
435
- | Full (default) | `full` | 33 |
436
- | Read-only | `readonly` | ~20 |
454
+ | Full (default) | `full` | 39 |
455
+ | Read-only | `readonly` | ~15 |
437
456
 
438
457
  **[Complete tool filtering guide →](https://github.com/neverinfamous/memory-journal-mcp/wiki/Tool-Filtering)**
439
458
 
@@ -448,8 +467,8 @@ flowchart TB
448
467
  AI["🤖 AI Agent<br/>(Cursor, Windsurf, Claude)"]
449
468
 
450
469
  subgraph MCP["Memory Journal MCP Server"]
451
- Tools["🛠️ 33 Tools"]
452
- Resources["📡 18 Resources"]
470
+ Tools["🛠️ 39 Tools"]
471
+ Resources["📡 21 Resources"]
453
472
  Prompts["💬 15 Prompts"]
454
473
  end
455
474
 
@@ -477,7 +496,7 @@ flowchart TB
477
496
  ┌─────────────────────────────────────────────────────────────┐
478
497
  │ MCP Server Layer (TypeScript) │
479
498
  │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────┐ │
480
- │ │ Tools (33) │ │ Resources (18) │ │ Prompts (15)│ │
499
+ │ │ Tools (39) │ │ Resources (21) │ │ Prompts (15)│ │
481
500
  │ │ with Annotations│ │ with Annotations│ │ │ │
482
501
  │ └─────────────────┘ └─────────────────┘ └─────────────┘ │
483
502
  ├─────────────────────────────────────────────────────────────┤
@@ -506,12 +525,28 @@ flowchart TB
506
525
  - **@xenova/transformers** - ML embeddings in JavaScript
507
526
  - **Lazy loading** - ML models load on first use, not startup
508
527
 
528
+ ### Performance Benchmarks
529
+
530
+ Memory Journal is designed for extremely low overhead during AI task execution. We include a `vitest bench` suite to maintain these baseline guarantees:
531
+
532
+ - **Database Reads**: Operations execute in fractions of a millisecond. `calculateImportance` is ~55x faster than retrieving 50 recent entries.
533
+ - **Vector Search Engine**: Semantic searches via `vectra` perform significantly faster than parallel entry indexing (>190x faster locally).
534
+ - **Core MCP Routines**: Complex operations exhibit negligible latency when executed through standard MCP tools. Calling tools natively adds ~1.4x overhead compared to direct function execution.
535
+
536
+ To run the benchmarking suite locally:
537
+
538
+ ```bash
539
+ npm run bench
540
+ ```
541
+
509
542
  ### Security
510
543
 
511
544
  - **Local-first** - All data stored locally, no external API calls (except optional GitHub)
512
545
  - **Input validation** - Zod schemas, content size limits, SQL injection prevention
513
546
  - **Path traversal protection** - Backup filenames validated
514
547
  - **MCP 2025-11-25 annotations** - Behavioral hints (`readOnlyHint`, `destructiveHint`, etc.)
548
+ - **HTTP transport hardening** - Configurable CORS, 1MB body limit, security headers, 30-min session timeout
549
+ - **Token scrubbing** - GitHub tokens and credentials automatically redacted from error logs
515
550
 
516
551
  ### Data & Privacy
517
552