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.
Files changed (107) hide show
  1. package/.dockerignore +88 -0
  2. package/.github/ISSUE_TEMPLATE/bug_report.md +76 -0
  3. package/.github/ISSUE_TEMPLATE/config.yml +11 -0
  4. package/.github/ISSUE_TEMPLATE/feature_request.md +89 -0
  5. package/.github/ISSUE_TEMPLATE/question.md +63 -0
  6. package/.github/dependabot.yml +110 -0
  7. package/.github/pull_request_template.md +110 -0
  8. package/.github/workflows/DOCKER_DEPLOYMENT_SETUP.md +346 -0
  9. package/.github/workflows/codeql.yml +45 -0
  10. package/.github/workflows/dependabot-auto-merge.yml +42 -0
  11. package/.github/workflows/docker-publish.yml +277 -0
  12. package/.github/workflows/lint-and-test.yml +58 -0
  13. package/.github/workflows/publish-npm.yml +75 -0
  14. package/.github/workflows/secrets-scanning.yml +32 -0
  15. package/.github/workflows/security-update.yml +99 -0
  16. package/.memory-journal-team.db +0 -0
  17. package/.trivyignore +18 -0
  18. package/CHANGELOG.md +19 -0
  19. package/CODE_OF_CONDUCT.md +128 -0
  20. package/CONTRIBUTING.md +209 -0
  21. package/DOCKER_README.md +377 -0
  22. package/Dockerfile +64 -0
  23. package/LICENSE +21 -0
  24. package/README.md +461 -0
  25. package/SECURITY.md +200 -0
  26. package/VERSION +1 -0
  27. package/dist/cli.d.ts +5 -0
  28. package/dist/cli.d.ts.map +1 -0
  29. package/dist/cli.js +42 -0
  30. package/dist/cli.js.map +1 -0
  31. package/dist/constants/ServerInstructions.d.ts +8 -0
  32. package/dist/constants/ServerInstructions.d.ts.map +1 -0
  33. package/dist/constants/ServerInstructions.js +26 -0
  34. package/dist/constants/ServerInstructions.js.map +1 -0
  35. package/dist/database/SqliteAdapter.d.ts +198 -0
  36. package/dist/database/SqliteAdapter.d.ts.map +1 -0
  37. package/dist/database/SqliteAdapter.js +736 -0
  38. package/dist/database/SqliteAdapter.js.map +1 -0
  39. package/dist/filtering/ToolFilter.d.ts +63 -0
  40. package/dist/filtering/ToolFilter.d.ts.map +1 -0
  41. package/dist/filtering/ToolFilter.js +242 -0
  42. package/dist/filtering/ToolFilter.js.map +1 -0
  43. package/dist/github/GitHubIntegration.d.ts +91 -0
  44. package/dist/github/GitHubIntegration.d.ts.map +1 -0
  45. package/dist/github/GitHubIntegration.js +317 -0
  46. package/dist/github/GitHubIntegration.js.map +1 -0
  47. package/dist/handlers/prompts/index.d.ts +28 -0
  48. package/dist/handlers/prompts/index.d.ts.map +1 -0
  49. package/dist/handlers/prompts/index.js +366 -0
  50. package/dist/handlers/prompts/index.js.map +1 -0
  51. package/dist/handlers/resources/index.d.ts +27 -0
  52. package/dist/handlers/resources/index.d.ts.map +1 -0
  53. package/dist/handlers/resources/index.js +453 -0
  54. package/dist/handlers/resources/index.js.map +1 -0
  55. package/dist/handlers/tools/index.d.ts +26 -0
  56. package/dist/handlers/tools/index.d.ts.map +1 -0
  57. package/dist/handlers/tools/index.js +982 -0
  58. package/dist/handlers/tools/index.js.map +1 -0
  59. package/dist/index.d.ts +11 -0
  60. package/dist/index.d.ts.map +1 -0
  61. package/dist/index.js +13 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/server/McpServer.d.ts +18 -0
  64. package/dist/server/McpServer.d.ts.map +1 -0
  65. package/dist/server/McpServer.js +171 -0
  66. package/dist/server/McpServer.js.map +1 -0
  67. package/dist/types/index.d.ts +300 -0
  68. package/dist/types/index.d.ts.map +1 -0
  69. package/dist/types/index.js +15 -0
  70. package/dist/types/index.js.map +1 -0
  71. package/dist/utils/McpLogger.d.ts +61 -0
  72. package/dist/utils/McpLogger.d.ts.map +1 -0
  73. package/dist/utils/McpLogger.js +113 -0
  74. package/dist/utils/McpLogger.js.map +1 -0
  75. package/dist/utils/logger.d.ts +30 -0
  76. package/dist/utils/logger.d.ts.map +1 -0
  77. package/dist/utils/logger.js +70 -0
  78. package/dist/utils/logger.js.map +1 -0
  79. package/dist/vector/VectorSearchManager.d.ts +63 -0
  80. package/dist/vector/VectorSearchManager.d.ts.map +1 -0
  81. package/dist/vector/VectorSearchManager.js +235 -0
  82. package/dist/vector/VectorSearchManager.js.map +1 -0
  83. package/docker-compose.yml +37 -0
  84. package/eslint.config.js +86 -0
  85. package/mcp-config-example.json +21 -0
  86. package/package.json +71 -0
  87. package/releases/release-notes-v2.2.0.md +165 -0
  88. package/releases/release-notes.md +214 -0
  89. package/releases/v3.0.0.md +236 -0
  90. package/server.json +42 -0
  91. package/src/cli.ts +52 -0
  92. package/src/constants/ServerInstructions.ts +25 -0
  93. package/src/database/SqliteAdapter.ts +952 -0
  94. package/src/filtering/ToolFilter.ts +271 -0
  95. package/src/github/GitHubIntegration.ts +409 -0
  96. package/src/handlers/prompts/index.ts +420 -0
  97. package/src/handlers/resources/index.ts +529 -0
  98. package/src/handlers/tools/index.ts +1081 -0
  99. package/src/index.ts +53 -0
  100. package/src/server/McpServer.ts +230 -0
  101. package/src/types/index.ts +435 -0
  102. package/src/types/sql.js.d.ts +34 -0
  103. package/src/utils/McpLogger.ts +155 -0
  104. package/src/utils/logger.ts +98 -0
  105. package/src/vector/VectorSearchManager.ts +277 -0
  106. package/tools.json +300 -0
  107. 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
+ `;