memory-journal-mcp 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.dockerignore +88 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +76 -0
- package/.github/ISSUE_TEMPLATE/config.yml +11 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +89 -0
- package/.github/ISSUE_TEMPLATE/question.md +63 -0
- package/.github/dependabot.yml +110 -0
- package/.github/pull_request_template.md +110 -0
- package/.github/workflows/DOCKER_DEPLOYMENT_SETUP.md +346 -0
- package/.github/workflows/codeql.yml +45 -0
- package/.github/workflows/dependabot-auto-merge.yml +42 -0
- package/.github/workflows/docker-publish.yml +277 -0
- package/.github/workflows/lint-and-test.yml +58 -0
- package/.github/workflows/publish-npm.yml +75 -0
- package/.github/workflows/secrets-scanning.yml +32 -0
- package/.github/workflows/security-update.yml +99 -0
- package/.memory-journal-team.db +0 -0
- package/.trivyignore +18 -0
- package/CHANGELOG.md +19 -0
- package/CODE_OF_CONDUCT.md +128 -0
- package/CONTRIBUTING.md +209 -0
- package/DOCKER_README.md +377 -0
- package/Dockerfile +64 -0
- package/LICENSE +21 -0
- package/README.md +461 -0
- package/SECURITY.md +200 -0
- package/VERSION +1 -0
- package/dist/cli.d.ts +5 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +42 -0
- package/dist/cli.js.map +1 -0
- package/dist/constants/ServerInstructions.d.ts +8 -0
- package/dist/constants/ServerInstructions.d.ts.map +1 -0
- package/dist/constants/ServerInstructions.js +26 -0
- package/dist/constants/ServerInstructions.js.map +1 -0
- package/dist/database/SqliteAdapter.d.ts +198 -0
- package/dist/database/SqliteAdapter.d.ts.map +1 -0
- package/dist/database/SqliteAdapter.js +736 -0
- package/dist/database/SqliteAdapter.js.map +1 -0
- package/dist/filtering/ToolFilter.d.ts +63 -0
- package/dist/filtering/ToolFilter.d.ts.map +1 -0
- package/dist/filtering/ToolFilter.js +242 -0
- package/dist/filtering/ToolFilter.js.map +1 -0
- package/dist/github/GitHubIntegration.d.ts +91 -0
- package/dist/github/GitHubIntegration.d.ts.map +1 -0
- package/dist/github/GitHubIntegration.js +317 -0
- package/dist/github/GitHubIntegration.js.map +1 -0
- package/dist/handlers/prompts/index.d.ts +28 -0
- package/dist/handlers/prompts/index.d.ts.map +1 -0
- package/dist/handlers/prompts/index.js +366 -0
- package/dist/handlers/prompts/index.js.map +1 -0
- package/dist/handlers/resources/index.d.ts +27 -0
- package/dist/handlers/resources/index.d.ts.map +1 -0
- package/dist/handlers/resources/index.js +453 -0
- package/dist/handlers/resources/index.js.map +1 -0
- package/dist/handlers/tools/index.d.ts +26 -0
- package/dist/handlers/tools/index.d.ts.map +1 -0
- package/dist/handlers/tools/index.js +982 -0
- package/dist/handlers/tools/index.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/server/McpServer.d.ts +18 -0
- package/dist/server/McpServer.d.ts.map +1 -0
- package/dist/server/McpServer.js +171 -0
- package/dist/server/McpServer.js.map +1 -0
- package/dist/types/index.d.ts +300 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +15 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/McpLogger.d.ts +61 -0
- package/dist/utils/McpLogger.d.ts.map +1 -0
- package/dist/utils/McpLogger.js +113 -0
- package/dist/utils/McpLogger.js.map +1 -0
- package/dist/utils/logger.d.ts +30 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +70 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/vector/VectorSearchManager.d.ts +63 -0
- package/dist/vector/VectorSearchManager.d.ts.map +1 -0
- package/dist/vector/VectorSearchManager.js +235 -0
- package/dist/vector/VectorSearchManager.js.map +1 -0
- package/docker-compose.yml +37 -0
- package/eslint.config.js +86 -0
- package/mcp-config-example.json +21 -0
- package/package.json +71 -0
- package/releases/release-notes-v2.2.0.md +165 -0
- package/releases/release-notes.md +214 -0
- package/releases/v3.0.0.md +236 -0
- package/server.json +42 -0
- package/src/cli.ts +52 -0
- package/src/constants/ServerInstructions.ts +25 -0
- package/src/database/SqliteAdapter.ts +952 -0
- package/src/filtering/ToolFilter.ts +271 -0
- package/src/github/GitHubIntegration.ts +409 -0
- package/src/handlers/prompts/index.ts +420 -0
- package/src/handlers/resources/index.ts +529 -0
- package/src/handlers/tools/index.ts +1081 -0
- package/src/index.ts +53 -0
- package/src/server/McpServer.ts +230 -0
- package/src/types/index.ts +435 -0
- package/src/types/sql.js.d.ts +34 -0
- package/src/utils/McpLogger.ts +155 -0
- package/src/utils/logger.ts +98 -0
- package/src/vector/VectorSearchManager.ts +277 -0
- package/tools.json +300 -0
- package/tsconfig.json +51 -0
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
# Memory Journal MCP v3.0.0 Release Notes
|
|
2
|
+
|
|
3
|
+
**Release Date:** December 28, 2025
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 🎉 Overview
|
|
8
|
+
|
|
9
|
+
Memory Journal v3.0.0 is a **complete ground-up rewrite in TypeScript**, delivering a pure JavaScript stack with zero native dependencies. This release deprecates and archives the Python codebase in favor of a modern, portable, strictly-typed implementation.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 🚀 Highlights
|
|
14
|
+
|
|
15
|
+
### Complete TypeScript Rewrite
|
|
16
|
+
|
|
17
|
+
- **Strict Type Safety** - 100% TypeScript strict mode with zero lint errors
|
|
18
|
+
- **Pure JS Stack** - No native compilation required:
|
|
19
|
+
- `sql.js` - SQLite in pure JavaScript
|
|
20
|
+
- `vectra` - Vector similarity search without native deps
|
|
21
|
+
- `@xenova/transformers` - ML embeddings in JavaScript
|
|
22
|
+
- **Cross-Platform** - Works on Windows, macOS, Linux without binary dependencies
|
|
23
|
+
- **Faster Startup** - Lazy ML model loading for instant cold starts
|
|
24
|
+
- **MCP 2025-11-25 Compliance** - Full protocol spec compliance
|
|
25
|
+
|
|
26
|
+
### Dynamic Structured Logging
|
|
27
|
+
|
|
28
|
+
Enterprise-grade logging with RFC 5424 severity levels:
|
|
29
|
+
|
|
30
|
+
- **Centralized Logger** - All output to stderr (stdout reserved for MCP protocol)
|
|
31
|
+
- **Structured Format** - `[timestamp] [LEVEL] [MODULE] [CODE] message {context}`
|
|
32
|
+
- **Module Prefixes** - Operation-specific codes like `DB_CONNECT`, `VECTOR_SEARCH`
|
|
33
|
+
- **Debug Mode** - Enable with `DEBUG=true` environment variable
|
|
34
|
+
|
|
35
|
+
### Tool Annotations (MCP 2025-11-25)
|
|
36
|
+
|
|
37
|
+
All 27 tools now include behavioral hints:
|
|
38
|
+
|
|
39
|
+
| Hint | Purpose |
|
|
40
|
+
|------|---------|
|
|
41
|
+
| `readOnlyHint` | Indicates read-only operations |
|
|
42
|
+
| `destructiveHint` | Warns of data modification |
|
|
43
|
+
| `idempotentHint` | Safe to retry |
|
|
44
|
+
| `openWorldHint` | External service calls (GitHub) |
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## ✨ New Features
|
|
49
|
+
|
|
50
|
+
### Backup & Restore Tools
|
|
51
|
+
|
|
52
|
+
Never lose your journal data again with the new `backup` tool group:
|
|
53
|
+
|
|
54
|
+
| Tool | Description |
|
|
55
|
+
|------|-------------|
|
|
56
|
+
| `backup_journal` | Create timestamped database backups |
|
|
57
|
+
| `list_backups` | List all available backup files |
|
|
58
|
+
| `restore_backup` | Restore from any backup (with auto-backup before restore) |
|
|
59
|
+
|
|
60
|
+
```javascript
|
|
61
|
+
// Create a named backup
|
|
62
|
+
backup_journal({ name: "before_migration" })
|
|
63
|
+
// → { success: true, filename: "before_migration.db", sizeBytes: 524288 }
|
|
64
|
+
|
|
65
|
+
// List available backups
|
|
66
|
+
list_backups()
|
|
67
|
+
// → { backups: [...], total: 3, backupsDirectory: "~/.memory-journal/backups" }
|
|
68
|
+
|
|
69
|
+
// Restore with safety (auto-creates backup before restore)
|
|
70
|
+
restore_backup({ filename: "before_migration.db", confirm: true })
|
|
71
|
+
// → { success: true, previousEntryCount: 50, newEntryCount: 42 }
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Server Health Resource
|
|
75
|
+
|
|
76
|
+
New `memory://health` resource provides comprehensive diagnostics:
|
|
77
|
+
|
|
78
|
+
```json
|
|
79
|
+
{
|
|
80
|
+
"database": {
|
|
81
|
+
"path": "~/.memory-journal/memory_journal.db",
|
|
82
|
+
"sizeBytes": 524288,
|
|
83
|
+
"entryCount": 150,
|
|
84
|
+
"deletedEntryCount": 5,
|
|
85
|
+
"relationshipCount": 42,
|
|
86
|
+
"tagCount": 28
|
|
87
|
+
},
|
|
88
|
+
"backups": {
|
|
89
|
+
"directory": "~/.memory-journal/backups",
|
|
90
|
+
"count": 3,
|
|
91
|
+
"lastBackup": { "filename": "...", "createdAt": "...", "sizeBytes": 524288 }
|
|
92
|
+
},
|
|
93
|
+
"vectorIndex": {
|
|
94
|
+
"available": true,
|
|
95
|
+
"indexedEntries": 150,
|
|
96
|
+
"modelName": "all-MiniLM-L6-v2"
|
|
97
|
+
},
|
|
98
|
+
"toolFilter": {
|
|
99
|
+
"active": false,
|
|
100
|
+
"enabledCount": 27,
|
|
101
|
+
"totalCount": 27
|
|
102
|
+
},
|
|
103
|
+
"timestamp": "2025-12-28T05:47:00Z"
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## 📊 Capabilities Summary
|
|
110
|
+
|
|
111
|
+
| Category | Count | Details |
|
|
112
|
+
|----------|-------|---------|
|
|
113
|
+
| **MCP Tools** | 27 | +3 backup tools from v2.x |
|
|
114
|
+
| **Tool Groups** | 8 | core, search, analytics, relationships, export, admin, github, **backup** |
|
|
115
|
+
| **Workflow Prompts** | 14 | Standups, retros, PR workflows, CI/CD analysis |
|
|
116
|
+
| **Resources** | 14 | +1 health resource from v2.x |
|
|
117
|
+
| **Relationship Types** | 5 | relates_to, blocks, follows_up, parent_of, references |
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## đź”§ Technical Improvements
|
|
122
|
+
|
|
123
|
+
### Architecture
|
|
124
|
+
|
|
125
|
+
- **Modular File Structure** - Clean separation of concerns
|
|
126
|
+
- **Handler Pattern** - Dedicated handlers for tools, prompts, resources
|
|
127
|
+
- **Type-Safe Database Layer** - Full TypeScript types for SQLite operations
|
|
128
|
+
- **Centralized Constants** - Server instructions and configuration
|
|
129
|
+
|
|
130
|
+
### CI/CD Modernization
|
|
131
|
+
|
|
132
|
+
- **Native ARM64 Builds** - No more slow QEMU emulation
|
|
133
|
+
- **NPM Publishing** - Replaces PyPI distribution
|
|
134
|
+
- **CodeQL Analysis** - Static security analysis
|
|
135
|
+
- **Docker Scout** - Container vulnerability scanning
|
|
136
|
+
- **Dependabot Auto-Merge** - Automatic patch/minor updates
|
|
137
|
+
|
|
138
|
+
### Security
|
|
139
|
+
|
|
140
|
+
- **Input Validation** - Zod schemas for all tool parameters
|
|
141
|
+
- **Path Traversal Protection** - Backup filename validation
|
|
142
|
+
- **SQL Injection Prevention** - Parameterized queries throughout
|
|
143
|
+
- **Content Size Limits** - Configurable per field
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## ⬆️ Migration from v2.x
|
|
148
|
+
|
|
149
|
+
### Breaking Changes
|
|
150
|
+
|
|
151
|
+
- **Python Deprecated** - The Python codebase is archived at `archive/python-v2`
|
|
152
|
+
- **Installation Changed** - Now via npm instead of pip:
|
|
153
|
+
```bash
|
|
154
|
+
# Old (Python)
|
|
155
|
+
pip install memory-journal-mcp
|
|
156
|
+
|
|
157
|
+
# New (TypeScript)
|
|
158
|
+
npm install -g memory-journal-mcp
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Database Compatibility
|
|
162
|
+
|
|
163
|
+
âś… **Your existing database is fully compatible!**
|
|
164
|
+
|
|
165
|
+
The TypeScript version uses the same SQLite schema and data format. No migration needed.
|
|
166
|
+
|
|
167
|
+
### Configuration Changes
|
|
168
|
+
|
|
169
|
+
Update your MCP client configuration:
|
|
170
|
+
|
|
171
|
+
```json
|
|
172
|
+
{
|
|
173
|
+
"mcpServers": {
|
|
174
|
+
"memory-journal-mcp": {
|
|
175
|
+
"command": "memory-journal-mcp"
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
Or use npx (no installation):
|
|
182
|
+
|
|
183
|
+
```json
|
|
184
|
+
{
|
|
185
|
+
"mcpServers": {
|
|
186
|
+
"memory-journal-mcp": {
|
|
187
|
+
"command": "npx",
|
|
188
|
+
"args": ["-y", "memory-journal-mcp"]
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## 📦 Installation
|
|
197
|
+
|
|
198
|
+
### npm (Recommended)
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
npm install -g memory-journal-mcp
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### Docker
|
|
205
|
+
|
|
206
|
+
```bash
|
|
207
|
+
docker pull writenotenow/memory-journal-mcp:v3.0.0
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### From Source
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
git clone https://github.com/neverinfamous/memory-journal-mcp.git
|
|
214
|
+
cd memory-journal-mcp
|
|
215
|
+
npm install
|
|
216
|
+
npm run build
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## 📚 Resources
|
|
222
|
+
|
|
223
|
+
- **[GitHub Repository](https://github.com/neverinfamous/memory-journal-mcp)**
|
|
224
|
+
- **[npm Package](https://www.npmjs.com/package/memory-journal-mcp)**
|
|
225
|
+
- **[Docker Hub](https://hub.docker.com/r/writenotenow/memory-journal-mcp)**
|
|
226
|
+
- **[Documentation Wiki](https://github.com/neverinfamous/memory-journal-mcp/wiki)**
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
## 🙏 Acknowledgments
|
|
231
|
+
|
|
232
|
+
Thank you to all users who provided feedback during the Python era. This TypeScript rewrite addresses the core requests for better portability, faster startup, and stricter type safety.
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
**Full Changelog:** [v2.2.5...v3.0.0](https://github.com/neverinfamous/memory-journal-mcp/compare/v2.2.5...v3.0.0)
|
package/server.json
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json",
|
|
3
|
+
"name": "io.github.neverinfamous/memory-journal-mcp",
|
|
4
|
+
"title": "Memory Journal MCP",
|
|
5
|
+
"description": "MCP server– Project memory system with GitHub-aware context, knowledge graphs, and CI/PR timelines",
|
|
6
|
+
"version": "3.0.0",
|
|
7
|
+
"packages": [
|
|
8
|
+
{
|
|
9
|
+
"registryType": "oci",
|
|
10
|
+
"identifier": "docker.io/writenotenow/memory-journal-mcp:v3.0.0",
|
|
11
|
+
"version": "3.0.0",
|
|
12
|
+
"transport": {
|
|
13
|
+
"type": "stdio"
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
],
|
|
17
|
+
"keywords": [
|
|
18
|
+
"mcp",
|
|
19
|
+
"model-context-protocol",
|
|
20
|
+
"context-management",
|
|
21
|
+
"project-management",
|
|
22
|
+
"ai-assistant",
|
|
23
|
+
"knowledge-graph",
|
|
24
|
+
"developer-tools",
|
|
25
|
+
"git",
|
|
26
|
+
"github-projects",
|
|
27
|
+
"persistent-memory",
|
|
28
|
+
"thread-continuity",
|
|
29
|
+
"semantic-search"
|
|
30
|
+
],
|
|
31
|
+
"author": {
|
|
32
|
+
"name": "Chris LeRoux",
|
|
33
|
+
"email": "writenotenow@gmail.com"
|
|
34
|
+
},
|
|
35
|
+
"homepage": "https://github.com/neverinfamous/memory-journal-mcp",
|
|
36
|
+
"repository": {
|
|
37
|
+
"type": "git",
|
|
38
|
+
"url": "https://github.com/neverinfamous/memory-journal-mcp.git",
|
|
39
|
+
"source": "github"
|
|
40
|
+
},
|
|
41
|
+
"license": "MIT"
|
|
42
|
+
}
|
package/src/cli.ts
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Journal MCP Server - CLI Entry Point
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { Command } from 'commander';
|
|
6
|
+
import { createServer } from './server/McpServer.js';
|
|
7
|
+
import { logger } from './utils/logger.js';
|
|
8
|
+
|
|
9
|
+
const program = new Command();
|
|
10
|
+
|
|
11
|
+
program
|
|
12
|
+
.name('memory-journal-mcp')
|
|
13
|
+
.description('Project context management for AI-assisted development')
|
|
14
|
+
.version('3.0.0-alpha.1')
|
|
15
|
+
.option('--transport <type>', 'Transport type: stdio or http', 'stdio')
|
|
16
|
+
.option('--port <number>', 'HTTP port (for http transport)', '3000')
|
|
17
|
+
.option('--db <path>', 'Database path', './memory_journal.db')
|
|
18
|
+
.option('--tool-filter <filter>', 'Tool filter string (e.g., "starter", "core,search")')
|
|
19
|
+
.option('--log-level <level>', 'Log level: debug, info, warning, error', 'info')
|
|
20
|
+
.action(async (options: {
|
|
21
|
+
transport: string;
|
|
22
|
+
port: string;
|
|
23
|
+
db: string;
|
|
24
|
+
toolFilter?: string;
|
|
25
|
+
logLevel: string;
|
|
26
|
+
}) => {
|
|
27
|
+
// Set log level
|
|
28
|
+
logger.setLevel(options.logLevel as 'debug' | 'info' | 'warning' | 'error');
|
|
29
|
+
|
|
30
|
+
logger.info('Starting Memory Journal MCP Server', {
|
|
31
|
+
module: 'CLI',
|
|
32
|
+
transport: options.transport,
|
|
33
|
+
db: options.db,
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
try {
|
|
37
|
+
await createServer({
|
|
38
|
+
transport: options.transport as 'stdio' | 'http',
|
|
39
|
+
port: parseInt(options.port, 10),
|
|
40
|
+
dbPath: options.db,
|
|
41
|
+
toolFilter: options.toolFilter,
|
|
42
|
+
});
|
|
43
|
+
} catch (error) {
|
|
44
|
+
logger.error('Failed to start server', {
|
|
45
|
+
module: 'CLI',
|
|
46
|
+
error: error instanceof Error ? error.message : String(error),
|
|
47
|
+
});
|
|
48
|
+
process.exit(1);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
program.parse();
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server instructions for Memory Journal MCP.
|
|
3
|
+
*
|
|
4
|
+
* These instructions are automatically sent to MCP clients during initialization,
|
|
5
|
+
* providing guidance for AI agents on tool usage.
|
|
6
|
+
*/
|
|
7
|
+
export const SERVER_INSTRUCTIONS = `# memory-journal-mcp
|
|
8
|
+
|
|
9
|
+
Memory Journal MCP Server - Persistent project context management for AI-assisted development.
|
|
10
|
+
|
|
11
|
+
## GitHub Tools
|
|
12
|
+
|
|
13
|
+
GitHub tools auto-detect repository from the configured GITHUB_REPO_PATH.
|
|
14
|
+
- If owner/repo are detected, they appear in \`detectedOwner\`/\`detectedRepo\` in responses
|
|
15
|
+
- If not detected (null), specify \`owner\` and \`repo\` parameters explicitly
|
|
16
|
+
|
|
17
|
+
## Tool Groups
|
|
18
|
+
|
|
19
|
+
| Group | Tools |
|
|
20
|
+
|-------|-------|
|
|
21
|
+
| journal | create_entry, create_entry_minimal, update_entry, delete_entry |
|
|
22
|
+
| search | search_entries, semantic_search, search_by_date_range |
|
|
23
|
+
| github | get_github_issues, get_github_prs, get_github_issue, get_github_pr, get_github_context |
|
|
24
|
+
| admin | backup_journal, list_backups, restore_backup, rebuild_vector_index |
|
|
25
|
+
`;
|