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,366 @@
1
+ /**
2
+ * Memory Journal MCP Server - Prompt Handlers
3
+ *
4
+ * Exports all MCP prompts for workflow guidance.
5
+ */
6
+ /**
7
+ * Execute a raw SQL query on the database
8
+ */
9
+ function execQuery(db, sql, params = []) {
10
+ const rawDb = db.getRawDb();
11
+ const result = rawDb.exec(sql, params);
12
+ if (result.length === 0)
13
+ return [];
14
+ const columns = result[0]?.columns ?? [];
15
+ return (result[0]?.values ?? []).map((values) => {
16
+ const obj = {};
17
+ columns.forEach((col, i) => {
18
+ obj[col] = values[i];
19
+ });
20
+ return obj;
21
+ });
22
+ }
23
+ /**
24
+ * Get all prompt definitions for MCP list
25
+ */
26
+ export function getPrompts() {
27
+ const prompts = getAllPromptDefinitions();
28
+ return prompts.map(p => ({
29
+ name: p.name,
30
+ description: p.description,
31
+ arguments: p.arguments,
32
+ }));
33
+ }
34
+ /**
35
+ * Get a prompt by name
36
+ */
37
+ export function getPrompt(name, args, db) {
38
+ const prompts = getAllPromptDefinitions();
39
+ const prompt = prompts.find(p => p.name === name);
40
+ if (!prompt) {
41
+ throw new Error(`Unknown prompt: ${name}`);
42
+ }
43
+ return prompt.handler(args, db);
44
+ }
45
+ /**
46
+ * Get all prompt definitions
47
+ */
48
+ function getAllPromptDefinitions() {
49
+ return [
50
+ {
51
+ name: 'find-related',
52
+ description: 'Discover connected entries via semantic similarity',
53
+ arguments: [
54
+ { name: 'query', description: 'Search query for finding related entries', required: true },
55
+ ],
56
+ handler: (args, db) => {
57
+ const query = args['query'] ?? '';
58
+ const entries = db.searchEntries(query, { limit: 5 });
59
+ return {
60
+ messages: [{
61
+ role: 'user',
62
+ content: {
63
+ type: 'text',
64
+ text: `Find entries related to: "${query}"\n\nRecent matching entries:\n${entries.map(e => `- [${String(e.id)}] ${e.content.slice(0, 100)}...`).join('\n')}`,
65
+ },
66
+ }],
67
+ };
68
+ },
69
+ },
70
+ {
71
+ name: 'prepare-standup',
72
+ description: 'Daily standup summaries',
73
+ arguments: [],
74
+ handler: (_args, db) => {
75
+ const today = new Date().toISOString().split('T')[0] ?? '';
76
+ const yesterday = new Date(Date.now() - 86400000).toISOString().split('T')[0] ?? '';
77
+ const entries = db.searchByDateRange(yesterday, today);
78
+ return {
79
+ messages: [{
80
+ role: 'user',
81
+ content: {
82
+ type: 'text',
83
+ text: `Prepare a standup summary based on these recent entries:\n\n${entries.map(e => `[${e.timestamp}] ${e.entryType}: ${e.content}`).join('\n\n')}\n\nFormat as:\n- Yesterday: <summary>\n- Today: <planned work>\n- Blockers: <any blockers>`,
84
+ },
85
+ }],
86
+ };
87
+ },
88
+ },
89
+ {
90
+ name: 'prepare-retro',
91
+ description: 'Sprint retrospectives',
92
+ arguments: [
93
+ { name: 'days', description: 'Number of days to include (default: 14)', required: false },
94
+ ],
95
+ handler: (args, db) => {
96
+ const days = parseInt(args['days'] ?? '14', 10);
97
+ const endDate = new Date().toISOString().split('T')[0] ?? '';
98
+ const startDate = new Date(Date.now() - days * 86400000).toISOString().split('T')[0] ?? '';
99
+ const entries = db.searchByDateRange(startDate, endDate);
100
+ return {
101
+ messages: [{
102
+ role: 'user',
103
+ content: {
104
+ type: 'text',
105
+ text: `Prepare a retrospective for the last ${String(days)} days based on these entries:\n\n${entries.slice(0, 20).map(e => `[${e.timestamp}] ${e.entryType}: ${e.content.slice(0, 200)}`).join('\n\n')}\n\nFormat as:\n- What went well\n- What could improve\n- Action items`,
106
+ },
107
+ }],
108
+ };
109
+ },
110
+ },
111
+ {
112
+ name: 'weekly-digest',
113
+ description: 'Day-by-day weekly summaries',
114
+ arguments: [],
115
+ handler: (_args, db) => {
116
+ const endDate = new Date().toISOString().split('T')[0] ?? '';
117
+ const startDate = new Date(Date.now() - 7 * 86400000).toISOString().split('T')[0] ?? '';
118
+ const entries = db.searchByDateRange(startDate, endDate);
119
+ return {
120
+ messages: [{
121
+ role: 'user',
122
+ content: {
123
+ type: 'text',
124
+ text: `Create a weekly digest from these entries:\n\n${entries.map(e => `[${e.timestamp}] ${e.entryType}: ${e.content.slice(0, 150)}`).join('\n\n')}\n\nFormat as day-by-day summary with highlights.`,
125
+ },
126
+ }],
127
+ };
128
+ },
129
+ },
130
+ {
131
+ name: 'analyze-period',
132
+ description: 'Deep period analysis with insights',
133
+ arguments: [
134
+ { name: 'start_date', description: 'Start date (YYYY-MM-DD)', required: true },
135
+ { name: 'end_date', description: 'End date (YYYY-MM-DD)', required: true },
136
+ ],
137
+ handler: (args, db) => {
138
+ const startDate = args['start_date'] ?? '';
139
+ const endDate = args['end_date'] ?? '';
140
+ const entries = db.searchByDateRange(startDate, endDate);
141
+ const stats = db.getStatistics('day');
142
+ return {
143
+ messages: [{
144
+ role: 'user',
145
+ content: {
146
+ type: 'text',
147
+ text: `Analyze the period ${startDate} to ${endDate}:\n\nStatistics: ${JSON.stringify(stats, null, 2)}\n\nEntries (${String(entries.length)} total):\n${entries.slice(0, 15).map(e => `[${e.timestamp}] ${e.entryType}: ${e.content.slice(0, 100)}`).join('\n')}\n\nProvide insights on patterns, productivity, and recommendations.`,
148
+ },
149
+ }],
150
+ };
151
+ },
152
+ },
153
+ {
154
+ name: 'goal-tracker',
155
+ description: 'Milestone and achievement tracking',
156
+ arguments: [],
157
+ handler: (_args, db) => {
158
+ const entries = execQuery(db, `
159
+ SELECT * FROM memory_journal
160
+ WHERE significance_type IS NOT NULL
161
+ AND deleted_at IS NULL
162
+ ORDER BY timestamp DESC
163
+ LIMIT 20
164
+ `);
165
+ return {
166
+ messages: [{
167
+ role: 'user',
168
+ content: {
169
+ type: 'text',
170
+ text: `Track goals and milestones based on significant entries:\n\n${JSON.stringify(entries, null, 2)}\n\nSummarize progress toward goals and highlight achievements.`,
171
+ },
172
+ }],
173
+ };
174
+ },
175
+ },
176
+ {
177
+ name: 'get-context-bundle',
178
+ description: 'Project context with Git/GitHub',
179
+ arguments: [],
180
+ handler: (_args, db) => {
181
+ const recent = db.getRecentEntries(10);
182
+ const stats = db.getStatistics('week');
183
+ return {
184
+ messages: [{
185
+ role: 'user',
186
+ content: {
187
+ type: 'text',
188
+ text: `Project context bundle:\n\nRecent Entries: ${JSON.stringify(recent.slice(0, 5), null, 2)}\n\nStatistics: ${JSON.stringify(stats, null, 2)}\n\nUse this context to understand the project state.`,
189
+ },
190
+ }],
191
+ };
192
+ },
193
+ },
194
+ {
195
+ name: 'get-recent-entries',
196
+ description: 'Formatted recent entries',
197
+ arguments: [
198
+ { name: 'limit', description: 'Number of entries (default: 10)', required: false },
199
+ ],
200
+ handler: (args, db) => {
201
+ const limit = parseInt(args['limit'] ?? '10', 10);
202
+ const entries = db.getRecentEntries(limit);
203
+ return {
204
+ messages: [{
205
+ role: 'user',
206
+ content: {
207
+ type: 'text',
208
+ text: `Recent ${String(limit)} entries:\n\n${entries.map(e => `## ${e.timestamp} (${e.entryType})\n\n${e.content}\n\nTags: ${e.tags.join(', ') || 'none'}`).join('\n\n---\n\n')}`,
209
+ },
210
+ }],
211
+ };
212
+ },
213
+ },
214
+ {
215
+ name: 'project-status-summary',
216
+ description: 'GitHub Project status reports',
217
+ arguments: [
218
+ { name: 'project_number', description: 'GitHub Project number', required: true },
219
+ ],
220
+ handler: (args, db) => {
221
+ const projectNumber = parseInt(args['project_number'] ?? '0', 10);
222
+ const entries = execQuery(db, `
223
+ SELECT * FROM memory_journal
224
+ WHERE project_number = ?
225
+ AND deleted_at IS NULL
226
+ ORDER BY timestamp DESC
227
+ LIMIT 20
228
+ `, [projectNumber]);
229
+ return {
230
+ messages: [{
231
+ role: 'user',
232
+ content: {
233
+ type: 'text',
234
+ text: `Generate a status summary for Project #${String(projectNumber)}:\n\nEntries: ${JSON.stringify(entries, null, 2)}\n\nProvide: overview, recent activity, blockers, next steps.`,
235
+ },
236
+ }],
237
+ };
238
+ },
239
+ },
240
+ {
241
+ name: 'pr-summary',
242
+ description: 'Pull request journal activity summary',
243
+ arguments: [
244
+ { name: 'pr_number', description: 'Pull request number', required: true },
245
+ ],
246
+ handler: (args, db) => {
247
+ const prNumber = parseInt(args['pr_number'] ?? '0', 10);
248
+ const entries = execQuery(db, `
249
+ SELECT * FROM memory_journal
250
+ WHERE pr_number = ?
251
+ AND deleted_at IS NULL
252
+ ORDER BY timestamp ASC
253
+ `, [prNumber]);
254
+ return {
255
+ messages: [{
256
+ role: 'user',
257
+ content: {
258
+ type: 'text',
259
+ text: `Summarize PR #${String(prNumber)} activity:\n\nJournal entries: ${JSON.stringify(entries, null, 2)}\n\nProvide: summary of changes, decisions made, testing done.`,
260
+ },
261
+ }],
262
+ };
263
+ },
264
+ },
265
+ {
266
+ name: 'code-review-prep',
267
+ description: 'Comprehensive PR review preparation',
268
+ arguments: [
269
+ { name: 'pr_number', description: 'Pull request number', required: true },
270
+ ],
271
+ handler: (args, db) => {
272
+ const prNumber = parseInt(args['pr_number'] ?? '0', 10);
273
+ const entries = execQuery(db, `
274
+ SELECT * FROM memory_journal
275
+ WHERE pr_number = ?
276
+ AND deleted_at IS NULL
277
+ ORDER BY timestamp ASC
278
+ `, [prNumber]);
279
+ return {
280
+ messages: [{
281
+ role: 'user',
282
+ content: {
283
+ type: 'text',
284
+ text: `Prepare for code review of PR #${String(prNumber)}:\n\nContext entries: ${JSON.stringify(entries, null, 2)}\n\nProvide: review checklist, areas of concern, testing recommendations.`,
285
+ },
286
+ }],
287
+ };
288
+ },
289
+ },
290
+ {
291
+ name: 'pr-retrospective',
292
+ description: 'Completed PR analysis with learnings',
293
+ arguments: [
294
+ { name: 'pr_number', description: 'Pull request number', required: true },
295
+ ],
296
+ handler: (args, db) => {
297
+ const prNumber = parseInt(args['pr_number'] ?? '0', 10);
298
+ const entries = execQuery(db, `
299
+ SELECT * FROM memory_journal
300
+ WHERE pr_number = ?
301
+ AND deleted_at IS NULL
302
+ ORDER BY timestamp ASC
303
+ `, [prNumber]);
304
+ return {
305
+ messages: [{
306
+ role: 'user',
307
+ content: {
308
+ type: 'text',
309
+ text: `Retrospective for PR #${String(prNumber)}:\n\nJournal entries: ${JSON.stringify(entries, null, 2)}\n\nProvide: what went well, challenges, lessons learned.`,
310
+ },
311
+ }],
312
+ };
313
+ },
314
+ },
315
+ {
316
+ name: 'actions-failure-digest',
317
+ description: 'CI/CD failure analysis with root cause identification',
318
+ arguments: [],
319
+ handler: (_args, db) => {
320
+ const entries = execQuery(db, `
321
+ SELECT * FROM memory_journal
322
+ WHERE workflow_run_id IS NOT NULL
323
+ AND deleted_at IS NULL
324
+ ORDER BY timestamp DESC
325
+ LIMIT 20
326
+ `);
327
+ return {
328
+ messages: [{
329
+ role: 'user',
330
+ content: {
331
+ type: 'text',
332
+ text: `Analyze CI/CD failures from these workflow entries:\n\n${JSON.stringify(entries, null, 2)}\n\nProvide: failure patterns, root causes, remediation steps.`,
333
+ },
334
+ }],
335
+ };
336
+ },
337
+ },
338
+ {
339
+ name: 'project-milestone-tracker',
340
+ description: 'Milestone progress tracking',
341
+ arguments: [
342
+ { name: 'project_number', description: 'GitHub Project number', required: true },
343
+ ],
344
+ handler: (args, db) => {
345
+ const projectNumber = parseInt(args['project_number'] ?? '0', 10);
346
+ const entries = execQuery(db, `
347
+ SELECT * FROM memory_journal
348
+ WHERE project_number = ?
349
+ AND significance_type IS NOT NULL
350
+ AND deleted_at IS NULL
351
+ ORDER BY timestamp DESC
352
+ `, [projectNumber]);
353
+ return {
354
+ messages: [{
355
+ role: 'user',
356
+ content: {
357
+ type: 'text',
358
+ text: `Track milestones for Project #${String(projectNumber)}:\n\nMilestone entries: ${JSON.stringify(entries, null, 2)}\n\nProvide: progress summary, upcoming milestones, timeline.`,
359
+ },
360
+ }],
361
+ };
362
+ },
363
+ },
364
+ ];
365
+ }
366
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/handlers/prompts/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Memory Journal MCP Server - Resource Handlers
3
+ *
4
+ * Exports all MCP resources with annotations following MCP 2025-11-25 spec.
5
+ */
6
+ import type { SqliteAdapter } from '../../database/SqliteAdapter.js';
7
+ import type { VectorSearchManager } from '../../vector/VectorSearchManager.js';
8
+ import type { ToolFilterConfig } from '../../filtering/ToolFilter.js';
9
+ import type { GitHubIntegration } from '../../github/GitHubIntegration.js';
10
+ /**
11
+ * Resource context for handlers that need extended access
12
+ */
13
+ export interface ResourceContext {
14
+ db: SqliteAdapter;
15
+ vectorManager?: VectorSearchManager;
16
+ filterConfig?: ToolFilterConfig | null;
17
+ github?: GitHubIntegration | null;
18
+ }
19
+ /**
20
+ * Get all resource definitions for MCP list
21
+ */
22
+ export declare function getResources(): object[];
23
+ /**
24
+ * Read a resource by URI
25
+ */
26
+ export declare function readResource(uri: string, db: SqliteAdapter, vectorManager?: VectorSearchManager, filterConfig?: ToolFilterConfig | null, github?: GitHubIntegration | null): Promise<unknown>;
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/handlers/resources/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAE3E;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,EAAE,EAAE,aAAa,CAAC;IAClB,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,YAAY,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACvC,MAAM,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;CACrC;AAkBD;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,EAAE,CASvC;AAED;;GAEG;AACH,wBAAgB,YAAY,CACxB,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,aAAa,EACjB,aAAa,CAAC,EAAE,mBAAmB,EACnC,YAAY,CAAC,EAAE,gBAAgB,GAAG,IAAI,EACtC,MAAM,CAAC,EAAE,iBAAiB,GAAG,IAAI,GAClC,OAAO,CAAC,OAAO,CAAC,CAsBlB"}