memory-journal-mcp 3.0.0 → 3.1.3
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/.github/dependabot.yml +31 -46
- package/.github/workflows/codeql.yml +1 -1
- package/.github/workflows/docker-publish.yml +53 -16
- package/.github/workflows/lint-and-test.yml +2 -2
- package/.github/workflows/publish-npm.yml +1 -1
- package/.github/workflows/secrets-scanning.yml +1 -1
- package/.github/workflows/security-update.yml +1 -1
- package/.scout-ignore +12 -0
- package/.trivyignore +14 -13
- package/DOCKER_README.md +36 -10
- package/Dockerfile +25 -8
- package/README.md +86 -12
- package/VERSION +1 -1
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/constants/ServerInstructions.d.ts +24 -1
- package/dist/constants/ServerInstructions.d.ts.map +1 -1
- package/dist/constants/ServerInstructions.js +173 -13
- package/dist/constants/ServerInstructions.js.map +1 -1
- package/dist/github/GitHubIntegration.d.ts +18 -3
- package/dist/github/GitHubIntegration.d.ts.map +1 -1
- package/dist/github/GitHubIntegration.js +301 -3
- package/dist/github/GitHubIntegration.js.map +1 -1
- package/dist/handlers/prompts/index.js +2 -2
- package/dist/handlers/prompts/index.js.map +1 -1
- package/dist/handlers/resources/index.js +122 -1
- package/dist/handlers/resources/index.js.map +1 -1
- package/dist/handlers/tools/index.js +116 -0
- package/dist/handlers/tools/index.js.map +1 -1
- package/dist/server/McpServer.d.ts.map +1 -1
- package/dist/server/McpServer.js +21 -6
- package/dist/server/McpServer.js.map +1 -1
- package/dist/types/index.d.ts +43 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/vector/VectorSearchManager.js +2 -2
- package/dist/vector/VectorSearchManager.js.map +1 -1
- package/package.json +9 -7
- package/releases/v3.1.0.md +101 -0
- package/releases/v3.1.1.md +40 -0
- package/releases/v3.1.2.md +38 -0
- package/releases/v3.1.3.md +58 -0
- package/server.json +3 -3
- package/src/cli.ts +1 -1
- package/src/constants/ServerInstructions.ts +207 -13
- package/src/github/GitHubIntegration.ts +383 -3
- package/src/handlers/prompts/index.ts +2 -2
- package/src/handlers/resources/index.ts +140 -1
- package/src/handlers/tools/index.ts +137 -0
- package/src/server/McpServer.ts +33 -9
- package/src/types/index.ts +51 -0
- package/src/vector/VectorSearchManager.ts +2 -2
package/.github/dependabot.yml
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
# Dependabot configuration for Memory Journal MCP Server
|
|
2
|
-
#
|
|
2
|
+
# v3.0.0+ is a TypeScript/Node.js project (npm dependencies)
|
|
3
|
+
# The Python codebase is deprecated and archived in archive/python-v2
|
|
3
4
|
|
|
4
5
|
version: 2
|
|
5
6
|
updates:
|
|
6
|
-
#
|
|
7
|
-
- package-ecosystem: "
|
|
7
|
+
# NPM dependencies (TypeScript/Node.js - v3.0.0+)
|
|
8
|
+
- package-ecosystem: "npm"
|
|
8
9
|
directory: "/"
|
|
9
10
|
schedule:
|
|
10
11
|
interval: "weekly"
|
|
@@ -16,61 +17,45 @@ updates:
|
|
|
16
17
|
- "neverinfamous"
|
|
17
18
|
labels:
|
|
18
19
|
- "dependencies"
|
|
19
|
-
- "
|
|
20
|
-
# Group ML/AI related packages to reduce PR noise
|
|
20
|
+
- "npm"
|
|
21
21
|
groups:
|
|
22
|
+
mcp-core:
|
|
23
|
+
patterns:
|
|
24
|
+
- "@modelcontextprotocol/*"
|
|
25
|
+
- "zod*"
|
|
26
|
+
update-types:
|
|
27
|
+
- "minor"
|
|
28
|
+
- "patch"
|
|
22
29
|
ml-packages:
|
|
23
30
|
patterns:
|
|
24
|
-
- "
|
|
25
|
-
- "
|
|
26
|
-
- "transformers*"
|
|
27
|
-
- "sentence-transformers*"
|
|
28
|
-
- "huggingface-*"
|
|
29
|
-
- "scikit-learn*"
|
|
30
|
-
- "scipy*"
|
|
31
|
-
- "numpy*"
|
|
32
|
-
- "faiss-*"
|
|
33
|
-
- "pillow*"
|
|
34
|
-
- "tokenizers*"
|
|
35
|
-
- "safetensors*"
|
|
31
|
+
- "@xenova/*"
|
|
32
|
+
- "vectra*"
|
|
36
33
|
update-types:
|
|
37
34
|
- "minor"
|
|
38
35
|
- "patch"
|
|
39
|
-
|
|
36
|
+
database:
|
|
40
37
|
patterns:
|
|
41
|
-
- "
|
|
42
|
-
- "
|
|
43
|
-
- "httpx*"
|
|
44
|
-
- "starlette*"
|
|
45
|
-
- "uvicorn*"
|
|
38
|
+
- "sql.js*"
|
|
39
|
+
- "better-sqlite3*"
|
|
46
40
|
update-types:
|
|
47
41
|
- "minor"
|
|
48
42
|
- "patch"
|
|
49
|
-
|
|
43
|
+
build-tools:
|
|
50
44
|
patterns:
|
|
51
|
-
- "
|
|
52
|
-
- "
|
|
53
|
-
- "
|
|
54
|
-
- "requests*"
|
|
55
|
-
- "urllib3*"
|
|
56
|
-
- "certifi*"
|
|
57
|
-
- "charset-normalizer*"
|
|
58
|
-
- "idna*"
|
|
59
|
-
- "filelock*"
|
|
60
|
-
- "packaging*"
|
|
61
|
-
- "attrs*"
|
|
45
|
+
- "typescript*"
|
|
46
|
+
- "tsup*"
|
|
47
|
+
- "@types/*"
|
|
62
48
|
update-types:
|
|
49
|
+
- "minor"
|
|
50
|
+
- "patch"
|
|
51
|
+
linting:
|
|
52
|
+
patterns:
|
|
53
|
+
- "eslint*"
|
|
54
|
+
- "@eslint/*"
|
|
55
|
+
- "typescript-eslint*"
|
|
56
|
+
update-types:
|
|
57
|
+
- "minor"
|
|
63
58
|
- "patch"
|
|
64
|
-
# Ignore specific packages that might cause compatibility issues
|
|
65
|
-
ignore:
|
|
66
|
-
# NVIDIA CUDA packages - only update for security fixes
|
|
67
|
-
- dependency-name: "nvidia-*"
|
|
68
|
-
update-types: ["version-update:semver-minor"]
|
|
69
|
-
# PyTorch - be conservative with updates
|
|
70
|
-
- dependency-name: "torch"
|
|
71
|
-
update-types: ["version-update:semver-major"]
|
|
72
|
-
- dependency-name: "triton"
|
|
73
|
-
update-types: ["version-update:semver-major"]
|
|
74
59
|
|
|
75
60
|
# GitHub Actions
|
|
76
61
|
- package-ecosystem: "github-actions"
|
|
@@ -94,7 +79,7 @@ updates:
|
|
|
94
79
|
- "minor"
|
|
95
80
|
- "patch"
|
|
96
81
|
|
|
97
|
-
# Docker dependencies
|
|
82
|
+
# Docker dependencies
|
|
98
83
|
- package-ecosystem: "docker"
|
|
99
84
|
directory: "/"
|
|
100
85
|
schedule:
|
|
@@ -23,10 +23,41 @@ permissions:
|
|
|
23
23
|
attestations: write
|
|
24
24
|
|
|
25
25
|
jobs:
|
|
26
|
+
# Gate check: For tag pushes, run lint/typecheck/build first
|
|
27
|
+
preflight-check:
|
|
28
|
+
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
|
|
29
|
+
runs-on: ubuntu-latest
|
|
30
|
+
steps:
|
|
31
|
+
- name: Checkout code
|
|
32
|
+
uses: actions/checkout@v6
|
|
33
|
+
|
|
34
|
+
- name: Setup Node.js
|
|
35
|
+
uses: actions/setup-node@v6
|
|
36
|
+
with:
|
|
37
|
+
node-version: '22.x'
|
|
38
|
+
cache: 'npm'
|
|
39
|
+
|
|
40
|
+
- name: Install dependencies
|
|
41
|
+
run: npm ci
|
|
42
|
+
|
|
43
|
+
- name: Run ESLint
|
|
44
|
+
run: npm run lint
|
|
45
|
+
|
|
46
|
+
- name: Run TypeScript check
|
|
47
|
+
run: npm run typecheck
|
|
48
|
+
|
|
49
|
+
- name: Build
|
|
50
|
+
run: npm run build
|
|
51
|
+
|
|
26
52
|
# Build each platform on native architecture (avoids QEMU emulation issues)
|
|
27
53
|
build-platform:
|
|
28
|
-
#
|
|
29
|
-
|
|
54
|
+
# For workflow_run: only run if lint-and-test succeeded
|
|
55
|
+
# For tag push: only run after preflight-check succeeds
|
|
56
|
+
needs: [preflight-check]
|
|
57
|
+
if: |
|
|
58
|
+
always() &&
|
|
59
|
+
(github.event.workflow_run.conclusion == 'success' ||
|
|
60
|
+
(github.event_name == 'push' && needs.preflight-check.result == 'success'))
|
|
30
61
|
strategy:
|
|
31
62
|
fail-fast: false
|
|
32
63
|
matrix:
|
|
@@ -48,7 +79,7 @@ jobs:
|
|
|
48
79
|
|
|
49
80
|
steps:
|
|
50
81
|
- name: Checkout repository
|
|
51
|
-
uses: actions/checkout@
|
|
82
|
+
uses: actions/checkout@v6
|
|
52
83
|
|
|
53
84
|
- name: Set up Docker Buildx
|
|
54
85
|
uses: docker/setup-buildx-action@v3
|
|
@@ -112,7 +143,7 @@ jobs:
|
|
|
112
143
|
|
|
113
144
|
- name: Upload digest
|
|
114
145
|
if: github.event_name != 'pull_request'
|
|
115
|
-
uses: actions/upload-artifact@
|
|
146
|
+
uses: actions/upload-artifact@v6
|
|
116
147
|
with:
|
|
117
148
|
name: digests-${{ matrix.platform == 'linux/amd64' && 'amd64' || 'arm64' }}
|
|
118
149
|
path: /tmp/digests/*
|
|
@@ -130,7 +161,7 @@ jobs:
|
|
|
130
161
|
|
|
131
162
|
steps:
|
|
132
163
|
- name: Checkout repository
|
|
133
|
-
uses: actions/checkout@
|
|
164
|
+
uses: actions/checkout@v6
|
|
134
165
|
|
|
135
166
|
- name: Set up Docker Buildx
|
|
136
167
|
uses: docker/setup-buildx-action@v3
|
|
@@ -153,27 +184,33 @@ jobs:
|
|
|
153
184
|
docker images local-scan:latest
|
|
154
185
|
echo "🔍 Running Docker Scout security scan for local-scan:latest"
|
|
155
186
|
|
|
187
|
+
# Define CVEs to ignore (upstream issues with NO fix available)
|
|
188
|
+
# CVE-2026-22184: Alpine zlib - no fix version released yet
|
|
189
|
+
# CVE-2019-10790: protobufjs taffydb - unmaintained/abandoned package
|
|
190
|
+
IGNORE_CVES="CVE-2026-22184|CVE-2019-10790"
|
|
191
|
+
|
|
156
192
|
echo "⏱️ Running Docker Scout scan (max 8 minutes)..."
|
|
157
193
|
if timeout 480 docker scout cves local-scan:latest > scout_output.txt 2>&1; then
|
|
158
194
|
echo "📊 Scan completed successfully"
|
|
159
195
|
cat scout_output.txt
|
|
160
196
|
|
|
161
|
-
#
|
|
162
|
-
#
|
|
163
|
-
if grep -E "
|
|
164
|
-
echo "❌ Critical severity
|
|
197
|
+
# Filter out ignored CVEs and check remaining for critical/high
|
|
198
|
+
# First, check for any critical CVEs that are NOT in our ignore list
|
|
199
|
+
if grep -E "^[A-Z]" scout_output.txt | grep -vE "$IGNORE_CVES" | grep -q "CRITICAL"; then
|
|
200
|
+
echo "❌ Critical severity vulnerability detected (not in allowlist)"
|
|
165
201
|
echo "🚨 Build blocked due to unacceptable security risk"
|
|
166
202
|
exit 1
|
|
167
203
|
fi
|
|
168
204
|
|
|
169
|
-
|
|
170
|
-
|
|
205
|
+
# Check for any high CVEs that are NOT in our ignore list
|
|
206
|
+
if grep -E "^CVE-" scout_output.txt | grep -vE "$IGNORE_CVES" | grep -q "HIGH"; then
|
|
207
|
+
echo "❌ High severity vulnerability detected (not in allowlist)"
|
|
171
208
|
echo "🚨 Build blocked due to unacceptable security risk"
|
|
172
209
|
exit 1
|
|
173
|
-
else
|
|
174
|
-
echo "✅ Security scan passed - no critical/high severity vulnerabilities"
|
|
175
|
-
echo "ℹ️ Low/medium severity vulnerabilities are acceptable"
|
|
176
210
|
fi
|
|
211
|
+
|
|
212
|
+
echo "✅ Security scan passed"
|
|
213
|
+
echo "ℹ️ Any flagged CVEs are either allowlisted (upstream) or low/medium severity"
|
|
177
214
|
else
|
|
178
215
|
echo "⚠️ Docker Scout scan timed out or failed"
|
|
179
216
|
echo "🔄 Continuing build - scan timeout is not a security failure"
|
|
@@ -198,10 +235,10 @@ jobs:
|
|
|
198
235
|
|
|
199
236
|
steps:
|
|
200
237
|
- name: Checkout repository
|
|
201
|
-
uses: actions/checkout@
|
|
238
|
+
uses: actions/checkout@v6
|
|
202
239
|
|
|
203
240
|
- name: Download digests
|
|
204
|
-
uses: actions/download-artifact@
|
|
241
|
+
uses: actions/download-artifact@v7
|
|
205
242
|
with:
|
|
206
243
|
path: /tmp/digests
|
|
207
244
|
pattern: digests-*
|
|
@@ -18,7 +18,7 @@ jobs:
|
|
|
18
18
|
|
|
19
19
|
steps:
|
|
20
20
|
- name: Checkout code
|
|
21
|
-
uses: actions/checkout@
|
|
21
|
+
uses: actions/checkout@v6
|
|
22
22
|
|
|
23
23
|
- name: Setup Node.js ${{ matrix.node-version }}
|
|
24
24
|
uses: actions/setup-node@v6
|
|
@@ -42,7 +42,7 @@ jobs:
|
|
|
42
42
|
runs-on: ubuntu-latest
|
|
43
43
|
steps:
|
|
44
44
|
- name: Checkout code
|
|
45
|
-
uses: actions/checkout@
|
|
45
|
+
uses: actions/checkout@v6
|
|
46
46
|
|
|
47
47
|
- name: Setup Node.js
|
|
48
48
|
uses: actions/setup-node@v6
|
package/.scout-ignore
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Docker Scout CVE Ignore File
|
|
2
|
+
# See: https://docs.docker.com/scout/explore/cve-ignorelist/
|
|
3
|
+
#
|
|
4
|
+
# Only include CVEs with NO upstream fix available
|
|
5
|
+
|
|
6
|
+
# Alpine zlib - Critical severity, but NO FIX VERSION RELEASED by Alpine yet
|
|
7
|
+
# We run `apk upgrade --no-cache` but there's nothing to upgrade to
|
|
8
|
+
CVE-2026-22184
|
|
9
|
+
|
|
10
|
+
# protobufjs bundled taffydb - 6+ year old unmaintained package
|
|
11
|
+
# No fix version exists - package is abandoned
|
|
12
|
+
CVE-2019-10790
|
package/.trivyignore
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
# Trivy Ignore File
|
|
2
2
|
# See: https://aquasecurity.github.io/trivy/latest/docs/configuration/filtering/
|
|
3
3
|
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
|
-
#
|
|
7
|
-
# Will be fixed when Node.js releases updated base images
|
|
8
|
-
CVE-2025-64756
|
|
4
|
+
# ============================================================================
|
|
5
|
+
# Alpine Base Image - No upstream fix available
|
|
6
|
+
# ============================================================================
|
|
9
7
|
|
|
10
|
-
# CVE-
|
|
11
|
-
#
|
|
12
|
-
|
|
13
|
-
CVE-2025-5889
|
|
8
|
+
# CVE-2026-22184: zlib vulnerability (CRITICAL)
|
|
9
|
+
# No fix version released by Alpine yet - `apk upgrade` has nothing to update to
|
|
10
|
+
CVE-2026-22184
|
|
14
11
|
|
|
15
|
-
#
|
|
16
|
-
# Bundled in protobufjs/cli/node_modules
|
|
17
|
-
#
|
|
18
|
-
|
|
12
|
+
# ============================================================================
|
|
13
|
+
# protobufjs Bundled CLI - in /app/node_modules/protobufjs/cli/node_modules/
|
|
14
|
+
# taffydb is 6+ years unmaintained with no fix available
|
|
15
|
+
# ============================================================================
|
|
16
|
+
|
|
17
|
+
# CVE-2019-10790: taffydb prototype pollution (HIGH)
|
|
18
|
+
# No fix version exists - package is abandoned
|
|
19
|
+
CVE-2019-10790
|
package/DOCKER_README.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# Memory Journal MCP Server
|
|
2
2
|
|
|
3
|
-
Last Updated
|
|
3
|
+
Last Updated January 11, 2026 - v3.1.3
|
|
4
4
|
|
|
5
5
|
[](https://github.com/neverinfamous/memory-journal-mcp)
|
|
6
6
|
[](https://hub.docker.com/r/writenotenow/memory-journal-mcp)
|
|
7
7
|
[](https://opensource.org/licenses/MIT)
|
|
8
|
-

|
|
9
9
|

|
|
10
10
|
[](https://www.npmjs.com/package/memory-journal-mcp)
|
|
11
11
|
[](https://github.com/neverinfamous/memory-journal-mcp/blob/main/SECURITY.md)
|
|
@@ -36,6 +36,24 @@ Last Updated December 28, 2025 - v3.0.0
|
|
|
36
36
|
- 📊 **Generate reports** (standups, retrospectives, PR summaries, status)
|
|
37
37
|
- 🗄️ **Backup & restore** your journal data with one command
|
|
38
38
|
|
|
39
|
+
```mermaid
|
|
40
|
+
flowchart LR
|
|
41
|
+
subgraph Problem["❌ Without Memory Journal"]
|
|
42
|
+
direction TB
|
|
43
|
+
A1["Session 1<br/>Context Lost"] --> A2["Session 2<br/>Start Over"]
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
subgraph Solution["✅ With Memory Journal"]
|
|
47
|
+
direction TB
|
|
48
|
+
B1["Session 1"] --> MJ[("📚 Memory<br/>Journal")]
|
|
49
|
+
B2["Session 2"] --> MJ
|
|
50
|
+
MJ --> |"Recall"| B1
|
|
51
|
+
MJ --> |"Search"| B2
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
Problem -.->|"Solve with"| Solution
|
|
55
|
+
```
|
|
56
|
+
|
|
39
57
|
---
|
|
40
58
|
|
|
41
59
|
## ✨ v3.0.0 Highlights (December 28, 2025)
|
|
@@ -54,8 +72,9 @@ Last Updated December 28, 2025 - v3.0.0
|
|
|
54
72
|
### **📊 New: Server Health Resource**
|
|
55
73
|
- `memory://health` - Database stats, backup info, vector index status, tool filter config
|
|
56
74
|
|
|
57
|
-
### **
|
|
75
|
+
### **29 MCP Tools • 14 Workflow Prompts • 16 Resources**
|
|
58
76
|
- **8 tool groups** - `core`, `search`, `analytics`, `relationships`, `export`, `admin`, `github`, `backup`
|
|
77
|
+
- **GitHub Kanban** - View and manage GitHub Project boards directly
|
|
59
78
|
- **Knowledge graphs** - 5 relationship types, Mermaid diagram visualization
|
|
60
79
|
- **Semantic search** - AI-powered conceptual search via `@xenova/transformers`
|
|
61
80
|
|
|
@@ -184,7 +203,7 @@ docker pull writenotenow/memory-journal-mcp@sha256:<manifest-digest>
|
|
|
184
203
|
|
|
185
204
|
## ⚡ Core Features
|
|
186
205
|
|
|
187
|
-
### 🛠️
|
|
206
|
+
### 🛠️ 29 MCP Tools (8 Groups)
|
|
188
207
|
| Group | Tools | Description |
|
|
189
208
|
|-------|-------|-------------|
|
|
190
209
|
| `core` | 6 | Entry CRUD, tags, test |
|
|
@@ -193,8 +212,8 @@ docker pull writenotenow/memory-journal-mcp@sha256:<manifest-digest>
|
|
|
193
212
|
| `relationships` | 2 | Link entries, visualize graphs |
|
|
194
213
|
| `export` | 1 | JSON/Markdown export |
|
|
195
214
|
| `admin` | 4 | Update, delete, vector index management |
|
|
196
|
-
| `github` |
|
|
197
|
-
| `backup` | 3 |
|
|
215
|
+
| `github` | 7 | Issues, PRs, context, **Kanban board** |
|
|
216
|
+
| `backup` | 3 | Backup, list, restore |
|
|
198
217
|
|
|
199
218
|
**[Complete tools documentation →](https://github.com/neverinfamous/memory-journal-mcp/wiki/Tools)**
|
|
200
219
|
|
|
@@ -202,8 +221,8 @@ docker pull writenotenow/memory-journal-mcp@sha256:<manifest-digest>
|
|
|
202
221
|
Standups • Retrospectives • Weekly digests • PR summaries • Code review prep • Goal tracking
|
|
203
222
|
**[Complete prompts guide →](https://github.com/neverinfamous/memory-journal-mcp/wiki/Prompts)**
|
|
204
223
|
|
|
205
|
-
### 📡
|
|
206
|
-
Including
|
|
224
|
+
### 📡 16 Resources
|
|
225
|
+
Including `memory://health` for diagnostics and `memory://kanban/{n}` for Kanban boards
|
|
207
226
|
**[Resources documentation →](https://github.com/neverinfamous/memory-journal-mcp/wiki/Resources)**
|
|
208
227
|
|
|
209
228
|
---
|
|
@@ -226,9 +245,16 @@ backup_journal({ name: "pre_refactor" })
|
|
|
226
245
|
// Search entries
|
|
227
246
|
search_entries({ query: "performance" })
|
|
228
247
|
|
|
248
|
+
// View Kanban board
|
|
249
|
+
get_kanban_board({ project_number: 5 })
|
|
250
|
+
|
|
251
|
+
// Move item on Kanban
|
|
252
|
+
move_kanban_item({ project_number: 5, item_id: "PVTI_...", target_status: "Done" })
|
|
253
|
+
|
|
229
254
|
// Access MCP resources
|
|
230
255
|
memory://recent // Recent entries
|
|
231
256
|
memory://health // Server diagnostics
|
|
257
|
+
memory://kanban/5 // Kanban board view
|
|
232
258
|
memory://projects/1/timeline // Project timeline
|
|
233
259
|
```
|
|
234
260
|
|
|
@@ -300,7 +326,7 @@ docker run -i --rm \
|
|
|
300
326
|
| **ARM64** (Apple Silicon) | Complete: all tools, semantic search, Git context |
|
|
301
327
|
|
|
302
328
|
**TypeScript v3.0 Image Benefits:**
|
|
303
|
-
- **Node.js
|
|
329
|
+
- **Node.js 24 on Alpine Linux** - Minimal footprint (~150MB compressed)
|
|
304
330
|
- **Pure JS Stack** - No native compilation, identical features on all platforms
|
|
305
331
|
- **sql.js** - SQLite in pure JavaScript
|
|
306
332
|
- **vectra** - Vector similarity search without native dependencies
|
|
@@ -316,7 +342,7 @@ docker run -i --rm \
|
|
|
316
342
|
- 📋 **SBOM Available** - Complete software bill of materials
|
|
317
343
|
|
|
318
344
|
**Available Tags:**
|
|
319
|
-
- `3.
|
|
345
|
+
- `3.1.3` - Specific version (recommended for production)
|
|
320
346
|
- `3.0` - Latest patch in 3.0.x series
|
|
321
347
|
- `3` - Latest minor in 3.x series
|
|
322
348
|
- `latest` - Always the newest version
|
package/Dockerfile
CHANGED
|
@@ -1,18 +1,32 @@
|
|
|
1
1
|
# Memory Journal MCP Server - TypeScript Version
|
|
2
2
|
# Multi-stage build for optimized production image
|
|
3
|
-
FROM node:
|
|
3
|
+
FROM node:24-alpine AS builder
|
|
4
4
|
|
|
5
5
|
WORKDIR /app
|
|
6
6
|
|
|
7
|
-
# Install build dependencies
|
|
8
|
-
|
|
7
|
+
# Install build dependencies and upgrade packages for security
|
|
8
|
+
# Use Alpine edge for latest security patches (curl CVE-2025-14524, etc.)
|
|
9
|
+
RUN apk add --no-cache python3 make g++ && \
|
|
10
|
+
apk add --no-cache --repository=https://dl-cdn.alpinelinux.org/alpine/edge/main curl && \
|
|
11
|
+
apk upgrade --no-cache
|
|
12
|
+
|
|
13
|
+
# Upgrade npm globally to get fixed versions of bundled packages
|
|
14
|
+
# Fixes CVE-2025-64756 (glob) and CVE-2025-64118 (tar)
|
|
15
|
+
RUN npm install -g npm@latest
|
|
9
16
|
|
|
10
17
|
# Copy package files first for better layer caching
|
|
11
|
-
COPY package*.json ./
|
|
18
|
+
COPY package*.json .npmrc ./
|
|
12
19
|
|
|
13
20
|
# Install all dependencies (including devDependencies for build)
|
|
21
|
+
# The .npmrc has legacy-peer-deps=true to handle zod peer conflicts
|
|
14
22
|
RUN npm ci
|
|
15
23
|
|
|
24
|
+
# Clean protobufjs bundled cli dependencies and apply overrides
|
|
25
|
+
# This ensures our brace-expansion and tmp overrides take effect
|
|
26
|
+
RUN rm -rf node_modules/protobufjs/cli/node_modules/brace-expansion \
|
|
27
|
+
node_modules/protobufjs/cli/node_modules/tmp && \
|
|
28
|
+
npm dedupe
|
|
29
|
+
|
|
16
30
|
# Copy source code
|
|
17
31
|
COPY tsconfig.json ./
|
|
18
32
|
COPY src/ ./src/
|
|
@@ -21,12 +35,15 @@ COPY src/ ./src/
|
|
|
21
35
|
RUN npm run build
|
|
22
36
|
|
|
23
37
|
# Production stage
|
|
24
|
-
FROM node:
|
|
38
|
+
FROM node:24-alpine
|
|
25
39
|
|
|
26
40
|
WORKDIR /app
|
|
27
41
|
|
|
28
|
-
# Install runtime dependencies
|
|
29
|
-
|
|
42
|
+
# Install runtime dependencies with security fixes
|
|
43
|
+
# Use Alpine edge for curl with CVE fixes
|
|
44
|
+
RUN apk add --no-cache git ca-certificates && \
|
|
45
|
+
apk add --no-cache --repository=https://dl-cdn.alpinelinux.org/alpine/edge/main curl && \
|
|
46
|
+
apk upgrade --no-cache
|
|
30
47
|
|
|
31
48
|
# Copy built artifacts and production dependencies
|
|
32
49
|
COPY --from=builder /app/dist ./dist
|
|
@@ -59,6 +76,6 @@ CMD ["node", "dist/cli.js"]
|
|
|
59
76
|
# Labels for Docker Hub
|
|
60
77
|
LABEL maintainer="Adamic.tech"
|
|
61
78
|
LABEL description="Memory Journal MCP Server - Project context management for AI-assisted development"
|
|
62
|
-
LABEL version="3.
|
|
79
|
+
LABEL version="3.1.3"
|
|
63
80
|
LABEL org.opencontainers.image.source="https://github.com/neverinfamous/memory-journal-mcp"
|
|
64
81
|
LABEL io.modelcontextprotocol.server.name="io.github.neverinfamous/memory-journal-mcp"
|