memory-journal-mcp 4.4.2 → 5.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 (291) hide show
  1. package/.github/workflows/codeql.yml +1 -6
  2. package/.github/workflows/docker-publish.yml +15 -49
  3. package/.github/workflows/lint-and-test.yml +1 -1
  4. package/.github/workflows/secrets-scanning.yml +4 -3
  5. package/.github/workflows/security-update.yml +3 -3
  6. package/CHANGELOG.md +213 -0
  7. package/CONTRIBUTING.md +132 -97
  8. package/DOCKER_README.md +184 -235
  9. package/Dockerfile +27 -24
  10. package/README.md +218 -190
  11. package/SECURITY.md +27 -35
  12. package/dist/cli.js +16 -1
  13. package/dist/cli.js.map +1 -1
  14. package/dist/constants/ServerInstructions.d.ts +5 -1
  15. package/dist/constants/ServerInstructions.d.ts.map +1 -1
  16. package/dist/constants/ServerInstructions.js +133 -73
  17. package/dist/constants/ServerInstructions.js.map +1 -1
  18. package/dist/constants/icons.d.ts +2 -2
  19. package/dist/constants/icons.d.ts.map +1 -1
  20. package/dist/constants/icons.js +7 -6
  21. package/dist/constants/icons.js.map +1 -1
  22. package/dist/database/SqliteAdapter.d.ts +37 -24
  23. package/dist/database/SqliteAdapter.d.ts.map +1 -1
  24. package/dist/database/SqliteAdapter.js +319 -157
  25. package/dist/database/SqliteAdapter.js.map +1 -1
  26. package/dist/database/schema.d.ts +45 -0
  27. package/dist/database/schema.d.ts.map +1 -0
  28. package/dist/database/schema.js +92 -0
  29. package/dist/database/schema.js.map +1 -0
  30. package/dist/filtering/ToolFilter.d.ts +1 -1
  31. package/dist/filtering/ToolFilter.d.ts.map +1 -1
  32. package/dist/filtering/ToolFilter.js +13 -2
  33. package/dist/filtering/ToolFilter.js.map +1 -1
  34. package/dist/github/GitHubIntegration.d.ts.map +1 -1
  35. package/dist/github/GitHubIntegration.js +1 -3
  36. package/dist/github/GitHubIntegration.js.map +1 -1
  37. package/dist/handlers/prompts/github.d.ts +12 -0
  38. package/dist/handlers/prompts/github.d.ts.map +1 -0
  39. package/dist/handlers/prompts/github.js +178 -0
  40. package/dist/handlers/prompts/github.js.map +1 -0
  41. package/dist/handlers/prompts/index.d.ts +23 -2
  42. package/dist/handlers/prompts/index.d.ts.map +1 -1
  43. package/dist/handlers/prompts/index.js +7 -432
  44. package/dist/handlers/prompts/index.js.map +1 -1
  45. package/dist/handlers/prompts/workflow.d.ts +12 -0
  46. package/dist/handlers/prompts/workflow.d.ts.map +1 -0
  47. package/dist/handlers/prompts/workflow.js +277 -0
  48. package/dist/handlers/prompts/workflow.js.map +1 -0
  49. package/dist/handlers/resources/core.d.ts +11 -0
  50. package/dist/handlers/resources/core.d.ts.map +1 -0
  51. package/dist/handlers/resources/core.js +433 -0
  52. package/dist/handlers/resources/core.js.map +1 -0
  53. package/dist/handlers/resources/github.d.ts +11 -0
  54. package/dist/handlers/resources/github.d.ts.map +1 -0
  55. package/dist/handlers/resources/github.js +314 -0
  56. package/dist/handlers/resources/github.js.map +1 -0
  57. package/dist/handlers/resources/graph.d.ts +11 -0
  58. package/dist/handlers/resources/graph.d.ts.map +1 -0
  59. package/dist/handlers/resources/graph.js +204 -0
  60. package/dist/handlers/resources/graph.js.map +1 -0
  61. package/dist/handlers/resources/index.d.ts +5 -20
  62. package/dist/handlers/resources/index.d.ts.map +1 -1
  63. package/dist/handlers/resources/index.js +16 -1278
  64. package/dist/handlers/resources/index.js.map +1 -1
  65. package/dist/handlers/resources/shared.d.ts +60 -0
  66. package/dist/handlers/resources/shared.d.ts.map +1 -0
  67. package/dist/handlers/resources/shared.js +49 -0
  68. package/dist/handlers/resources/shared.js.map +1 -0
  69. package/dist/handlers/resources/team.d.ts +13 -0
  70. package/dist/handlers/resources/team.d.ts.map +1 -0
  71. package/dist/handlers/resources/team.js +119 -0
  72. package/dist/handlers/resources/team.js.map +1 -0
  73. package/dist/handlers/resources/templates.d.ts +13 -0
  74. package/dist/handlers/resources/templates.d.ts.map +1 -0
  75. package/dist/handlers/resources/templates.js +310 -0
  76. package/dist/handlers/resources/templates.js.map +1 -0
  77. package/dist/handlers/tools/admin.d.ts +8 -0
  78. package/dist/handlers/tools/admin.d.ts.map +1 -0
  79. package/dist/handlers/tools/admin.js +270 -0
  80. package/dist/handlers/tools/admin.js.map +1 -0
  81. package/dist/handlers/tools/analytics.d.ts +8 -0
  82. package/dist/handlers/tools/analytics.d.ts.map +1 -0
  83. package/dist/handlers/tools/analytics.js +256 -0
  84. package/dist/handlers/tools/analytics.js.map +1 -0
  85. package/dist/handlers/tools/backup.d.ts +8 -0
  86. package/dist/handlers/tools/backup.d.ts.map +1 -0
  87. package/dist/handlers/tools/backup.js +224 -0
  88. package/dist/handlers/tools/backup.js.map +1 -0
  89. package/dist/handlers/tools/core.d.ts +9 -0
  90. package/dist/handlers/tools/core.d.ts.map +1 -0
  91. package/dist/handlers/tools/core.js +326 -0
  92. package/dist/handlers/tools/core.js.map +1 -0
  93. package/dist/handlers/tools/export.d.ts +8 -0
  94. package/dist/handlers/tools/export.d.ts.map +1 -0
  95. package/dist/handlers/tools/export.js +89 -0
  96. package/dist/handlers/tools/export.js.map +1 -0
  97. package/dist/handlers/tools/github/helpers.d.ts +34 -0
  98. package/dist/handlers/tools/github/helpers.d.ts.map +1 -0
  99. package/dist/handlers/tools/github/helpers.js +52 -0
  100. package/dist/handlers/tools/github/helpers.js.map +1 -0
  101. package/dist/handlers/tools/github/insights-tools.d.ts +8 -0
  102. package/dist/handlers/tools/github/insights-tools.d.ts.map +1 -0
  103. package/dist/handlers/tools/github/insights-tools.js +104 -0
  104. package/dist/handlers/tools/github/insights-tools.js.map +1 -0
  105. package/dist/handlers/tools/github/issue-tools.d.ts +8 -0
  106. package/dist/handlers/tools/github/issue-tools.d.ts.map +1 -0
  107. package/dist/handlers/tools/github/issue-tools.js +359 -0
  108. package/dist/handlers/tools/github/issue-tools.js.map +1 -0
  109. package/dist/handlers/tools/github/kanban-tools.d.ts +8 -0
  110. package/dist/handlers/tools/github/kanban-tools.d.ts.map +1 -0
  111. package/dist/handlers/tools/github/kanban-tools.js +108 -0
  112. package/dist/handlers/tools/github/kanban-tools.js.map +1 -0
  113. package/dist/handlers/tools/github/milestone-tools.d.ts +9 -0
  114. package/dist/handlers/tools/github/milestone-tools.d.ts.map +1 -0
  115. package/dist/handlers/tools/github/milestone-tools.js +302 -0
  116. package/dist/handlers/tools/github/milestone-tools.js.map +1 -0
  117. package/dist/handlers/tools/github/mutation-tools.d.ts +12 -0
  118. package/dist/handlers/tools/github/mutation-tools.d.ts.map +1 -0
  119. package/dist/handlers/tools/github/mutation-tools.js +15 -0
  120. package/dist/handlers/tools/github/mutation-tools.js.map +1 -0
  121. package/dist/handlers/tools/github/read-tools.d.ts +8 -0
  122. package/dist/handlers/tools/github/read-tools.d.ts.map +1 -0
  123. package/dist/handlers/tools/github/read-tools.js +260 -0
  124. package/dist/handlers/tools/github/read-tools.js.map +1 -0
  125. package/dist/handlers/tools/github/schemas.d.ts +467 -0
  126. package/dist/handlers/tools/github/schemas.d.ts.map +1 -0
  127. package/dist/handlers/tools/github/schemas.js +335 -0
  128. package/dist/handlers/tools/github/schemas.js.map +1 -0
  129. package/dist/handlers/tools/github.d.ts +14 -0
  130. package/dist/handlers/tools/github.d.ts.map +1 -0
  131. package/dist/handlers/tools/github.js +28 -0
  132. package/dist/handlers/tools/github.js.map +1 -0
  133. package/dist/handlers/tools/index.d.ts +15 -20
  134. package/dist/handlers/tools/index.d.ts.map +1 -1
  135. package/dist/handlers/tools/index.js +117 -2909
  136. package/dist/handlers/tools/index.js.map +1 -1
  137. package/dist/handlers/tools/relationships.d.ts +8 -0
  138. package/dist/handlers/tools/relationships.d.ts.map +1 -0
  139. package/dist/handlers/tools/relationships.js +308 -0
  140. package/dist/handlers/tools/relationships.js.map +1 -0
  141. package/dist/handlers/tools/schemas.d.ts +108 -0
  142. package/dist/handlers/tools/schemas.d.ts.map +1 -0
  143. package/dist/handlers/tools/schemas.js +122 -0
  144. package/dist/handlers/tools/schemas.js.map +1 -0
  145. package/dist/handlers/tools/search.d.ts +8 -0
  146. package/dist/handlers/tools/search.d.ts.map +1 -0
  147. package/dist/handlers/tools/search.js +282 -0
  148. package/dist/handlers/tools/search.js.map +1 -0
  149. package/dist/handlers/tools/team.d.ts +11 -0
  150. package/dist/handlers/tools/team.d.ts.map +1 -0
  151. package/dist/handlers/tools/team.js +239 -0
  152. package/dist/handlers/tools/team.js.map +1 -0
  153. package/dist/server/McpServer.d.ts +4 -0
  154. package/dist/server/McpServer.d.ts.map +1 -1
  155. package/dist/server/McpServer.js +48 -297
  156. package/dist/server/McpServer.js.map +1 -1
  157. package/dist/server/Scheduler.d.ts +91 -0
  158. package/dist/server/Scheduler.d.ts.map +1 -0
  159. package/dist/server/Scheduler.js +201 -0
  160. package/dist/server/Scheduler.js.map +1 -0
  161. package/dist/transports/http.d.ts +66 -0
  162. package/dist/transports/http.d.ts.map +1 -0
  163. package/dist/transports/http.js +519 -0
  164. package/dist/transports/http.js.map +1 -0
  165. package/dist/types/entities.d.ts +101 -0
  166. package/dist/types/entities.d.ts.map +1 -0
  167. package/dist/types/entities.js +5 -0
  168. package/dist/types/entities.js.map +1 -0
  169. package/dist/types/filtering.d.ts +34 -0
  170. package/dist/types/filtering.d.ts.map +1 -0
  171. package/dist/types/filtering.js +5 -0
  172. package/dist/types/filtering.js.map +1 -0
  173. package/dist/types/github.d.ts +166 -0
  174. package/dist/types/github.d.ts.map +1 -0
  175. package/dist/types/github.js +5 -0
  176. package/dist/types/github.js.map +1 -0
  177. package/dist/types/index.d.ts +35 -292
  178. package/dist/types/index.d.ts.map +1 -1
  179. package/dist/types/index.js +2 -2
  180. package/dist/types/index.js.map +1 -1
  181. package/dist/utils/error-helpers.d.ts +37 -0
  182. package/dist/utils/error-helpers.d.ts.map +1 -0
  183. package/dist/utils/error-helpers.js +47 -0
  184. package/dist/utils/error-helpers.js.map +1 -0
  185. package/dist/utils/logger.d.ts.map +1 -1
  186. package/dist/utils/logger.js +6 -3
  187. package/dist/utils/logger.js.map +1 -1
  188. package/dist/utils/security-utils.d.ts +0 -21
  189. package/dist/utils/security-utils.d.ts.map +1 -1
  190. package/dist/utils/security-utils.js +0 -47
  191. package/dist/utils/security-utils.js.map +1 -1
  192. package/dist/vector/VectorSearchManager.d.ts.map +1 -1
  193. package/dist/vector/VectorSearchManager.js +9 -32
  194. package/dist/vector/VectorSearchManager.js.map +1 -1
  195. package/docker-compose.yml +11 -2
  196. package/hooks/README.md +107 -0
  197. package/hooks/cursor/hooks.json +10 -0
  198. package/hooks/cursor/memory-journal.mdc +22 -0
  199. package/hooks/cursor/session-end.sh +19 -0
  200. package/hooks/kilo-code/session-end-mode.json +11 -0
  201. package/hooks/kiro/session-end.md +13 -0
  202. package/mcp-config-example.json +1 -0
  203. package/package.json +11 -9
  204. package/playwright.config.ts +29 -0
  205. package/releases/v4.5.0.md +116 -0
  206. package/releases/v5.0.0.md +105 -0
  207. package/scripts/generate-server-instructions.ts +176 -0
  208. package/scripts/server-instructions-function-body.ts +77 -0
  209. package/server.json +3 -3
  210. package/src/cli.ts +45 -1
  211. package/src/constants/ServerInstructions.ts +133 -73
  212. package/src/constants/icons.ts +8 -7
  213. package/src/constants/server-instructions.md +268 -0
  214. package/src/database/SqliteAdapter.ts +358 -192
  215. package/src/database/schema.ts +125 -0
  216. package/src/filtering/ToolFilter.ts +13 -2
  217. package/src/github/GitHubIntegration.ts +1 -3
  218. package/src/handlers/prompts/github.ts +209 -0
  219. package/src/handlers/prompts/index.ts +10 -499
  220. package/src/handlers/prompts/workflow.ts +314 -0
  221. package/src/handlers/resources/core.ts +528 -0
  222. package/src/handlers/resources/github.ts +358 -0
  223. package/src/handlers/resources/graph.ts +254 -0
  224. package/src/handlers/resources/index.ts +23 -1570
  225. package/src/handlers/resources/shared.ts +103 -0
  226. package/src/handlers/resources/team.ts +133 -0
  227. package/src/handlers/resources/templates.ts +374 -0
  228. package/src/handlers/tools/admin.ts +285 -0
  229. package/src/handlers/tools/analytics.ts +301 -0
  230. package/src/handlers/tools/backup.ts +242 -0
  231. package/src/handlers/tools/core.ts +350 -0
  232. package/src/handlers/tools/export.ts +115 -0
  233. package/src/handlers/tools/github/helpers.ts +86 -0
  234. package/src/handlers/tools/github/insights-tools.ts +119 -0
  235. package/src/handlers/tools/github/issue-tools.ts +439 -0
  236. package/src/handlers/tools/github/kanban-tools.ts +134 -0
  237. package/src/handlers/tools/github/milestone-tools.ts +392 -0
  238. package/src/handlers/tools/github/mutation-tools.ts +17 -0
  239. package/src/handlers/tools/github/read-tools.ts +328 -0
  240. package/src/handlers/tools/github/schemas.ts +369 -0
  241. package/src/handlers/tools/github.ts +36 -0
  242. package/src/handlers/tools/index.ts +144 -3325
  243. package/src/handlers/tools/relationships.ts +358 -0
  244. package/src/handlers/tools/schemas.ts +132 -0
  245. package/src/handlers/tools/search.ts +343 -0
  246. package/src/handlers/tools/team.ts +273 -0
  247. package/src/server/McpServer.ts +63 -358
  248. package/src/server/Scheduler.ts +278 -0
  249. package/src/transports/http.ts +635 -0
  250. package/src/types/entities.ts +145 -0
  251. package/src/types/filtering.ts +54 -0
  252. package/src/types/github.ts +180 -0
  253. package/src/types/index.ts +67 -375
  254. package/src/utils/error-helpers.ts +52 -0
  255. package/src/utils/logger.ts +6 -3
  256. package/src/utils/security-utils.ts +0 -52
  257. package/src/vector/VectorSearchManager.ts +9 -33
  258. package/tests/constants/icons.test.ts +1 -2
  259. package/tests/constants/server-instructions.test.ts +30 -4
  260. package/tests/database/sqlite-adapter.test.ts +91 -7
  261. package/tests/e2e/auth.spec.ts +154 -0
  262. package/tests/e2e/health.spec.ts +63 -0
  263. package/tests/e2e/protocols.spec.ts +134 -0
  264. package/tests/e2e/resources.spec.ts +103 -0
  265. package/tests/e2e/scheduler.spec.ts +79 -0
  266. package/tests/e2e/security.spec.ts +91 -0
  267. package/tests/e2e/sessions.spec.ts +95 -0
  268. package/tests/e2e/stateless.spec.ts +121 -0
  269. package/tests/e2e/tools.spec.ts +111 -0
  270. package/tests/filtering/tool-filter.test.ts +46 -0
  271. package/tests/handlers/error-path-coverage.test.ts +324 -0
  272. package/tests/handlers/github-resource-handlers.test.ts +453 -0
  273. package/tests/handlers/github-tool-handlers.test.ts +899 -0
  274. package/tests/handlers/prompt-handler-coverage.test.ts +106 -0
  275. package/tests/handlers/prompt-handlers.test.ts +40 -0
  276. package/tests/handlers/resource-handler-coverage.test.ts +181 -0
  277. package/tests/handlers/resource-handlers.test.ts +33 -9
  278. package/tests/handlers/search-tool-handlers.test.ts +272 -0
  279. package/tests/handlers/targeted-gap-closure.test.ts +387 -0
  280. package/tests/handlers/team-resource-handlers.test.ts +156 -0
  281. package/tests/handlers/team-tool-handlers.test.ts +301 -0
  282. package/tests/handlers/tool-handler-coverage.test.ts +469 -0
  283. package/tests/handlers/tool-handlers.test.ts +2 -2
  284. package/tests/security/sql-injection.test.ts +3 -54
  285. package/tests/server/mcp-server.test.ts +503 -8
  286. package/tests/server/scheduler.test.ts +400 -0
  287. package/tests/transports/http-transport.test.ts +620 -0
  288. package/tests/vector/vector-search-manager.test.ts +60 -0
  289. package/vitest.config.ts +4 -1
  290. package/.memory-journal-team.db +0 -0
  291. package/.vscode/settings.json +0 -84
@@ -5,10 +5,6 @@
5
5
  */
6
6
  import { McpServer, ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';
7
7
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
8
- import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
9
- import { isInitializeRequest } from '@modelcontextprotocol/sdk/types.js';
10
- import { randomUUID } from 'node:crypto';
11
- import express from 'express';
12
8
  import { z } from 'zod';
13
9
  import { SqliteAdapter } from '../database/SqliteAdapter.js';
14
10
  import { VectorSearchManager } from '../vector/VectorSearchManager.js';
@@ -19,20 +15,26 @@ import { getTools, callTool } from '../handlers/tools/index.js';
19
15
  import { getResources, readResource } from '../handlers/resources/index.js';
20
16
  import { getPrompts, getPrompt } from '../handlers/prompts/index.js';
21
17
  import { generateInstructions } from '../constants/ServerInstructions.js';
18
+ import { Scheduler } from './Scheduler.js';
19
+ import { HttpTransport } from '../transports/http.js';
22
20
  import pkg from '../../package.json' with { type: 'json' };
23
- /** Session timeout for stateful HTTP mode (30 minutes) */
24
- const SESSION_TIMEOUT_MS = 30 * 60 * 1000;
25
- /** Session timeout sweep interval (5 minutes) */
26
- const SESSION_SWEEP_INTERVAL_MS = 5 * 60 * 1000;
27
21
  /**
28
22
  * Create and start the MCP server
29
23
  */
30
24
  export async function createServer(options) {
31
- const { transport, dbPath, toolFilter, defaultProjectNumber } = options;
25
+ const { transport, dbPath, teamDbPath, toolFilter, defaultProjectNumber } = options;
32
26
  // Initialize database (async for sql.js)
33
27
  const db = new SqliteAdapter(dbPath);
34
28
  await db.initialize();
35
29
  logger.info('Database initialized', { module: 'McpServer', dbPath });
30
+ // Initialize team database if configured
31
+ let teamDb;
32
+ if (teamDbPath) {
33
+ teamDb = new SqliteAdapter(teamDbPath);
34
+ await teamDb.initialize();
35
+ teamDb.applyTeamSchema();
36
+ logger.info('Team database initialized', { module: 'McpServer', teamDbPath });
37
+ }
36
38
  // Initialize vector search manager (lazy loading - model loads on first use)
37
39
  const vectorManager = new VectorSearchManager(dbPath);
38
40
  logger.info('Vector search manager created (lazy initialization)', { module: 'McpServer' });
@@ -84,7 +86,7 @@ export async function createServer(options) {
84
86
  }
85
87
  : undefined;
86
88
  // Get all tools once (unfiltered) for both instruction generation and registration
87
- const allTools = getTools(db, null, vectorManager, github, { defaultProjectNumber });
89
+ const allTools = getTools(db, null, vectorManager, github, { defaultProjectNumber }, teamDb);
88
90
  const allToolNames = new Set(allTools.map((t) => t.name));
89
91
  // Generate dynamic instructions based on enabled tools, resources, prompts, and latest entry
90
92
  const instructions = generateInstructions(filterConfig?.enabledTools ?? allToolNames, resources.map((r) => {
@@ -106,7 +108,7 @@ export async function createServer(options) {
106
108
  });
107
109
  // Apply filter to get the set of tools to register
108
110
  const tools = filterConfig
109
- ? getTools(db, filterConfig, vectorManager, github, { defaultProjectNumber })
111
+ ? getTools(db, filterConfig, vectorManager, github, { defaultProjectNumber }, teamDb)
110
112
  : allTools;
111
113
  for (const tool of tools) {
112
114
  const toolDef = tool;
@@ -139,7 +141,7 @@ export async function createServer(options) {
139
141
  const progressContext = progressToken !== undefined
140
142
  ? { server: server.server, progressToken }
141
143
  : undefined;
142
- const result = await callTool(toolDef.name, args, db, vectorManager, github, { defaultProjectNumber }, progressContext);
144
+ const result = await callTool(toolDef.name, args, db, vectorManager, github, { defaultProjectNumber }, progressContext, teamDb);
143
145
  // MCP 2025-11-25: If tool has outputSchema, return both:
144
146
  // - structuredContent: validated JSON for clients that support it
145
147
  // - content: formatted text fallback for clients that don't (e.g., AntiGravity)
@@ -193,7 +195,7 @@ export async function createServer(options) {
193
195
  mimeType: resDef.mimeType ?? 'application/json',
194
196
  ...(resDef.icons ? { icons: resDef.icons } : {}),
195
197
  }, async (uri, _variables) => {
196
- const result = await readResource(uri.href, db, vectorManager, filterConfig, github);
198
+ const result = await readResource(uri.href, db, vectorManager, filterConfig, github, scheduler, teamDb);
197
199
  const dataStr = typeof result.data === 'string'
198
200
  ? result.data
199
201
  : JSON.stringify(result.data, null, 2);
@@ -216,7 +218,7 @@ export async function createServer(options) {
216
218
  mimeType: resDef.mimeType ?? 'application/json',
217
219
  ...(resDef.icons ? { icons: resDef.icons } : {}),
218
220
  }, async (uri) => {
219
- const result = await readResource(uri.href, db, vectorManager, filterConfig, github);
221
+ const result = await readResource(uri.href, db, vectorManager, filterConfig, github, scheduler, teamDb);
220
222
  const dataStr = typeof result.data === 'string'
221
223
  ? result.data
222
224
  : JSON.stringify(result.data, null, 2);
@@ -264,6 +266,20 @@ export async function createServer(options) {
264
266
  return Promise.resolve(result);
265
267
  });
266
268
  }
269
+ // Initialize scheduler (HTTP/SSE only)
270
+ let scheduler = null;
271
+ if (options.scheduler) {
272
+ const hasAnyJob = options.scheduler.backupIntervalMinutes > 0 ||
273
+ options.scheduler.vacuumIntervalMinutes > 0 ||
274
+ options.scheduler.rebuildIndexIntervalMinutes > 0;
275
+ if (hasAnyJob && transport === 'stdio') {
276
+ logger.warning('Scheduler options ignored for stdio transport (session is ephemeral). ' +
277
+ 'Use HTTP/SSE transport for automated scheduling.', { module: 'Scheduler' });
278
+ }
279
+ else if (hasAnyJob) {
280
+ scheduler = new Scheduler(options.scheduler, db, vectorManager);
281
+ }
282
+ }
267
283
  // Start server based on transport
268
284
  if (transport === 'stdio') {
269
285
  const stdioTransport = new StdioServerTransport();
@@ -273,298 +289,33 @@ export async function createServer(options) {
273
289
  process.on('SIGINT', () => {
274
290
  logger.info('Shutting down...', { module: 'McpServer' });
275
291
  db.close();
292
+ teamDb?.close();
276
293
  process.exit(0);
277
294
  });
278
295
  }
279
296
  else {
280
- // HTTP transport with SSE support
297
+ // HTTP transport
281
298
  const port = options.port ?? 3000;
282
299
  const host = options.host ?? 'localhost';
283
300
  const corsOrigin = options.corsOrigin ?? process.env['MCP_CORS_ORIGIN'] ?? '*';
284
- const app = express();
285
- // Security headers middleware
286
- app.use((_req, res, next) => {
287
- res.setHeader('X-Content-Type-Options', 'nosniff');
288
- res.setHeader('X-Frame-Options', 'DENY');
289
- next();
301
+ const authToken = options.authToken ?? process.env['MCP_AUTH_TOKEN'] ?? undefined;
302
+ const httpTransport = new HttpTransport({
303
+ port,
304
+ host,
305
+ corsOrigin,
306
+ stateless: options.statelessHttp === true,
307
+ authToken,
290
308
  });
291
- // CORS middleware for browser-based clients (e.g., MCP Inspector)
292
- // Origin is configurable via --cors-origin flag or MCP_CORS_ORIGIN env var
293
- app.use((req, res, next) => {
294
- res.setHeader('Access-Control-Allow-Origin', corsOrigin);
295
- res.setHeader('Access-Control-Allow-Methods', 'GET, POST, DELETE, OPTIONS');
296
- res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Accept, mcp-session-id, Last-Event-ID, mcp-protocol-version');
297
- res.setHeader('Access-Control-Expose-Headers', 'mcp-session-id');
298
- // Handle OPTIONS preflight requests
299
- if (req.method === 'OPTIONS') {
300
- res.status(204).end();
301
- return;
302
- }
303
- next();
304
- });
305
- // JSON body parser with size limit to prevent memory exhaustion (DoS)
306
- app.use(express.json({ limit: '1mb' }));
307
- // Explicit OPTIONS handler for /mcp - MUST be before other /mcp routes
308
- // Using app.all to intercept before Express 5's auto-OPTIONS
309
- app.all('/mcp', (req, res, next) => {
310
- // CORS headers are already set by the middleware above.
311
- // For OPTIONS, respond immediately.
312
- if (req.method === 'OPTIONS') {
313
- res.status(204).end();
314
- return;
315
- }
316
- // For other methods, continue to next handler
317
- next();
309
+ await httpTransport.start(server, scheduler);
310
+ // Handle shutdown
311
+ process.on('SIGINT', () => {
312
+ void (async () => {
313
+ await httpTransport.stop(scheduler);
314
+ db.close();
315
+ teamDb?.close();
316
+ process.exit(0);
317
+ })();
318
318
  });
319
- if (options.statelessHttp) {
320
- // === STATELESS MODE ===
321
- // Single transport, no session management - ideal for serverless deployments
322
- const statelessTransport = new StreamableHTTPServerTransport({
323
- sessionIdGenerator: undefined,
324
- enableJsonResponse: true,
325
- });
326
- await server.connect(statelessTransport);
327
- logger.info('Stateless transport connected', { module: 'McpServer' });
328
- // POST /mcp - All requests go to the same transport (no session validation)
329
- app.post('/mcp', (req, res) => {
330
- void statelessTransport.handleRequest(req, res, req.body);
331
- });
332
- // GET /mcp - SSE not available in stateless mode
333
- app.get('/mcp', (_req, res) => {
334
- res.status(405).json({
335
- jsonrpc: '2.0',
336
- error: {
337
- code: -32000,
338
- message: 'SSE streaming not available in stateless mode',
339
- },
340
- id: null,
341
- });
342
- });
343
- // DELETE /mcp - No-op in stateless mode (no sessions to terminate)
344
- app.delete('/mcp', (_req, res) => {
345
- res.status(204).end();
346
- });
347
- // Start HTTP server
348
- const httpServer = app.listen(port, host, () => {
349
- logger.info('MCP server started on HTTP (stateless)', {
350
- module: 'McpServer',
351
- port,
352
- host,
353
- endpoint: `http://${host}:${port}/mcp`,
354
- });
355
- });
356
- httpServer.on('close', () => {
357
- logger.info('HTTP server closed', { module: 'McpServer' });
358
- });
359
- // Handle shutdown
360
- process.on('SIGINT', () => {
361
- logger.info('Shutting down HTTP server...', { module: 'McpServer' });
362
- void (async () => {
363
- try {
364
- await statelessTransport.close();
365
- }
366
- catch (error) {
367
- logger.error('Error closing transport', {
368
- module: 'McpServer',
369
- error: error instanceof Error ? error.message : String(error),
370
- });
371
- }
372
- httpServer.close();
373
- db.close();
374
- logger.info('Shutdown complete', { module: 'McpServer' });
375
- process.exit(0);
376
- })();
377
- });
378
- // Keep process alive
379
- setInterval(() => {
380
- // Heartbeat - keeps event loop active
381
- }, 1000 * 60 * 60);
382
- }
383
- else {
384
- // === STATEFUL MODE ===
385
- // Session-based transport with SSE support for notifications
386
- // Session transport storage with last-activity timestamps
387
- const transports = new Map();
388
- const sessionLastActivity = new Map();
389
- /** Update the last-activity timestamp for a session */
390
- const touchSession = (sid) => {
391
- sessionLastActivity.set(sid, Date.now());
392
- };
393
- /** Sweep expired sessions (called periodically) */
394
- const sweepExpiredSessions = () => {
395
- const now = Date.now();
396
- for (const [sid, lastActivity] of sessionLastActivity) {
397
- if (now - lastActivity > SESSION_TIMEOUT_MS && transports.has(sid)) {
398
- logger.info('Expiring idle HTTP session', {
399
- module: 'McpServer',
400
- sessionId: sid,
401
- idleMinutes: Math.round((now - lastActivity) / 60_000),
402
- });
403
- const t = transports.get(sid);
404
- if (t) {
405
- void t.close();
406
- }
407
- transports.delete(sid);
408
- sessionLastActivity.delete(sid);
409
- }
410
- }
411
- };
412
- // Start session timeout sweep (runs every 5 minutes)
413
- const sessionSweepTimer = setInterval(sweepExpiredSessions, SESSION_SWEEP_INTERVAL_MS);
414
- // POST /mcp - Handle JSON-RPC requests
415
- app.post('/mcp', (req, res) => {
416
- const sessionId = req.headers['mcp-session-id'];
417
- void (async () => {
418
- try {
419
- let httpTransport;
420
- if (sessionId && transports.has(sessionId)) {
421
- // Reuse existing transport and refresh session activity
422
- touchSession(sessionId);
423
- httpTransport = transports.get(sessionId);
424
- }
425
- else if (sessionId === undefined && isInitializeRequest(req.body)) {
426
- // New initialization request - create transport
427
- const newTransport = new StreamableHTTPServerTransport({
428
- sessionIdGenerator: () => randomUUID(),
429
- onsessioninitialized: (sid) => {
430
- logger.info('HTTP session initialized', {
431
- module: 'McpServer',
432
- sessionId: sid,
433
- });
434
- transports.set(sid, newTransport);
435
- touchSession(sid);
436
- },
437
- });
438
- // Clean up on transport close
439
- newTransport.onclose = () => {
440
- const sid = newTransport.sessionId;
441
- if (sid !== undefined && transports.has(sid)) {
442
- logger.info('HTTP transport closed', {
443
- module: 'McpServer',
444
- sessionId: sid,
445
- });
446
- transports.delete(sid);
447
- sessionLastActivity.delete(sid);
448
- }
449
- };
450
- // Connect transport to server before handling request
451
- await server.connect(newTransport);
452
- await newTransport.handleRequest(req, res, req.body);
453
- return;
454
- }
455
- else {
456
- // Invalid request - no session ID or not initialization
457
- res.status(400).json({
458
- jsonrpc: '2.0',
459
- error: {
460
- code: -32000,
461
- message: 'Bad Request: No valid session ID provided',
462
- },
463
- id: null,
464
- });
465
- return;
466
- }
467
- // Handle request with existing transport
468
- if (httpTransport !== undefined) {
469
- await httpTransport.handleRequest(req, res, req.body);
470
- }
471
- }
472
- catch (error) {
473
- logger.error('Error handling MCP request', {
474
- module: 'McpServer',
475
- error: error instanceof Error ? error.message : String(error),
476
- });
477
- if (!res.headersSent) {
478
- res.status(500).json({
479
- jsonrpc: '2.0',
480
- error: { code: -32603, message: 'Internal server error' },
481
- id: null,
482
- });
483
- }
484
- }
485
- })();
486
- });
487
- // GET /mcp - SSE stream for server-to-client notifications
488
- app.get('/mcp', (req, res) => {
489
- const sessionId = req.headers['mcp-session-id'];
490
- if (sessionId === undefined || !transports.has(sessionId)) {
491
- res.status(400).send('Invalid or missing session ID');
492
- return;
493
- }
494
- // Refresh session activity on SSE reconnect
495
- touchSession(sessionId);
496
- const lastEventId = req.headers['last-event-id'];
497
- if (lastEventId !== undefined) {
498
- logger.debug('Client reconnecting with Last-Event-ID', {
499
- module: 'McpServer',
500
- sessionId,
501
- lastEventId,
502
- });
503
- }
504
- const httpTransport = transports.get(sessionId);
505
- if (httpTransport !== undefined) {
506
- void httpTransport.handleRequest(req, res);
507
- }
508
- });
509
- // DELETE /mcp - Session termination
510
- app.delete('/mcp', (req, res) => {
511
- const sessionId = req.headers['mcp-session-id'];
512
- if (sessionId === undefined || !transports.has(sessionId)) {
513
- res.status(400).send('Invalid or missing session ID');
514
- return;
515
- }
516
- logger.info('Session termination requested', {
517
- module: 'McpServer',
518
- sessionId,
519
- });
520
- const httpTransport = transports.get(sessionId);
521
- if (httpTransport !== undefined) {
522
- void httpTransport.handleRequest(req, res);
523
- }
524
- });
525
- // Start HTTP server
526
- const httpServer = app.listen(port, host, () => {
527
- logger.info('MCP server started on HTTP (stateful)', {
528
- module: 'McpServer',
529
- port,
530
- host,
531
- endpoint: `http://${host}:${port}/mcp`,
532
- });
533
- });
534
- // Keep process alive - httpServer keeps the event loop active
535
- // but we also ensure it doesn't close prematurely
536
- httpServer.on('close', () => {
537
- logger.info('HTTP server closed', { module: 'McpServer' });
538
- });
539
- // Handle shutdown for HTTP - must be registered before blocking await
540
- process.on('SIGINT', () => {
541
- logger.info('Shutting down HTTP server...', { module: 'McpServer' });
542
- void (async () => {
543
- // Close all active transports
544
- for (const [sessionId, httpTransport] of transports) {
545
- try {
546
- logger.debug('Closing transport', { module: 'McpServer', sessionId });
547
- await httpTransport.close();
548
- }
549
- catch (error) {
550
- logger.error('Error closing transport', {
551
- module: 'McpServer',
552
- sessionId,
553
- error: error instanceof Error ? error.message : String(error),
554
- });
555
- }
556
- }
557
- transports.clear();
558
- sessionLastActivity.clear();
559
- clearInterval(sessionSweepTimer);
560
- httpServer.close();
561
- db.close();
562
- logger.info('Shutdown complete', { module: 'McpServer' });
563
- process.exit(0);
564
- })();
565
- });
566
- // sessionSweepTimer keeps the event loop active (no additional heartbeat needed)
567
- }
568
319
  }
569
320
  }
570
321
  export { SqliteAdapter };
@@ -1 +1 @@
1
- {"version":3,"file":"McpServer.js","sourceRoot":"","sources":["../../src/server/McpServer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"McpServer.js","sourceRoot":"","sources":["../../src/server/McpServer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Memory Journal MCP Server - Scheduler
3
+ *
4
+ * Lightweight in-process scheduler for periodic maintenance jobs.
5
+ * Only meaningful for HTTP/SSE transport (long-lived server processes).
6
+ * Uses setInterval for simplicity — no external dependencies.
7
+ */
8
+ import type { SqliteAdapter } from '../database/SqliteAdapter.js';
9
+ import type { VectorSearchManager } from '../vector/VectorSearchManager.js';
10
+ /** Scheduler configuration options */
11
+ export interface SchedulerOptions {
12
+ /** Automated backup interval in minutes (0 = disabled) */
13
+ backupIntervalMinutes: number;
14
+ /** Max backups to retain during automated cleanup */
15
+ keepBackups: number;
16
+ /** Database optimize interval in minutes (0 = disabled) */
17
+ vacuumIntervalMinutes: number;
18
+ /** Vector index rebuild interval in minutes (0 = disabled) */
19
+ rebuildIndexIntervalMinutes: number;
20
+ }
21
+ /** Status of a single scheduled job */
22
+ export interface JobStatus {
23
+ name: string;
24
+ enabled: boolean;
25
+ intervalMinutes: number;
26
+ lastRun: string | null;
27
+ lastResult: 'success' | 'error' | null;
28
+ lastError: string | null;
29
+ nextRun: string | null;
30
+ runCount: number;
31
+ }
32
+ /** Overall scheduler status */
33
+ export interface SchedulerStatus {
34
+ active: boolean;
35
+ jobs: JobStatus[];
36
+ }
37
+ /**
38
+ * Scheduler — runs periodic maintenance jobs for long-lived server processes.
39
+ *
40
+ * Jobs:
41
+ * - **backup**: Exports database to timestamped file, then prunes old backups.
42
+ * - **vacuum**: Runs `PRAGMA optimize` and flushes database to disk.
43
+ * - **rebuild-index**: Rebuilds vector search index from all entries.
44
+ */
45
+ export declare class Scheduler {
46
+ private readonly options;
47
+ private readonly db;
48
+ private readonly vectorManager;
49
+ private readonly timers;
50
+ private started;
51
+ constructor(options: SchedulerOptions, db: SqliteAdapter, vectorManager?: VectorSearchManager);
52
+ /**
53
+ * Start all enabled scheduled jobs.
54
+ * Each job runs on its own interval and failures are isolated.
55
+ */
56
+ start(): void;
57
+ /**
58
+ * Stop all scheduled jobs and clear timers.
59
+ * Safe to call multiple times.
60
+ */
61
+ stop(): void;
62
+ /**
63
+ * Get the current status of all scheduled jobs.
64
+ */
65
+ getStatus(): SchedulerStatus;
66
+ /**
67
+ * Schedule a recurring job.
68
+ */
69
+ private scheduleJob;
70
+ /**
71
+ * Execute a job with error isolation and status tracking.
72
+ */
73
+ private executeJob;
74
+ /**
75
+ * Backup job: export database to file, then cleanup old backups.
76
+ */
77
+ private runBackup;
78
+ /**
79
+ * Vacuum/optimize job: run PRAGMA optimize and flush to disk.
80
+ *
81
+ * Note: sql.js uses an in-memory database. PRAGMA optimize updates
82
+ * internal statistics, and flushSave() ensures the disk file is current.
83
+ * A full VACUUM on sql.js only compacts the in-memory representation.
84
+ */
85
+ private runVacuumOptimize;
86
+ /**
87
+ * Rebuild index job: full vector index rebuild from database entries.
88
+ */
89
+ private runRebuildIndex;
90
+ }
91
+ //# sourceMappingURL=Scheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Scheduler.d.ts","sourceRoot":"","sources":["../../src/server/Scheduler.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAO3E,sCAAsC;AACtC,MAAM,WAAW,gBAAgB;IAC7B,0DAA0D;IAC1D,qBAAqB,EAAE,MAAM,CAAA;IAC7B,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAA;IACnB,2DAA2D;IAC3D,qBAAqB,EAAE,MAAM,CAAA;IAC7B,8DAA8D;IAC9D,2BAA2B,EAAE,MAAM,CAAA;CACtC;AAED,uCAAuC;AACvC,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,OAAO,CAAA;IAChB,eAAe,EAAE,MAAM,CAAA;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,UAAU,EAAE,SAAS,GAAG,OAAO,GAAG,IAAI,CAAA;IACtC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;CACnB;AAED,+BAA+B;AAC/B,MAAM,WAAW,eAAe;IAC5B,MAAM,EAAE,OAAO,CAAA;IACf,IAAI,EAAE,SAAS,EAAE,CAAA;CACpB;AAiBD;;;;;;;GAOG;AACH,qBAAa,SAAS;IAClB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;IAC1C,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAe;IAClC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4B;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,OAAO,CAAQ;gBAEX,OAAO,EAAE,gBAAgB,EAAE,EAAE,EAAE,aAAa,EAAE,aAAa,CAAC,EAAE,mBAAmB;IAM7F;;;OAGG;IACH,KAAK,IAAI,IAAI;IAyCb;;;OAGG;IACH,IAAI,IAAI,IAAI;IAaZ;;OAEG;IACH,SAAS,IAAI,eAAe;IAsB5B;;OAEG;IACH,OAAO,CAAC,WAAW;IAkBnB;;OAEG;YACW,UAAU;IAyBxB;;OAEG;YACW,SAAS;IAsBvB;;;;;;OAMG;YACW,iBAAiB;IAY/B;;OAEG;YACW,eAAe;CAYhC"}