memento-mcp-server 0.1.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 (555) hide show
  1. package/.cursor/rules/cache-management.mdc +171 -0
  2. package/.cursor/rules/database-schema.mdc +344 -0
  3. package/.cursor/rules/deployment.mdc +596 -0
  4. package/.cursor/rules/error-logging.mdc +298 -0
  5. package/.cursor/rules/forgetting-algorithms.mdc +426 -0
  6. package/.cursor/rules/http-server.mdc +432 -0
  7. package/.cursor/rules/hybrid-search.mdc +424 -0
  8. package/.cursor/rules/implementation.mdc +369 -0
  9. package/.cursor/rules/lightweight-embedding.mdc +178 -0
  10. package/.cursor/rules/mcp-client-development.mdc +0 -0
  11. package/.cursor/rules/mcp-server-development.mdc +0 -0
  12. package/.cursor/rules/mcp-tools-architecture.mdc +205 -0
  13. package/.cursor/rules/memento-memory-rule.mdc +8 -0
  14. package/.cursor/rules/memento-project-overview.mdc +0 -0
  15. package/.cursor/rules/memory-algorithms.mdc +502 -0
  16. package/.cursor/rules/monitoring.mdc +622 -0
  17. package/.cursor/rules/performance-alerts.mdc +537 -0
  18. package/.cursor/rules/performance-monitoring.mdc +345 -0
  19. package/.cursor/rules/performance-optimization.mdc +563 -0
  20. package/.cursor/rules/project-structure.mdc +310 -0
  21. package/.cursor/rules/testing.mdc +473 -0
  22. package/.dockerignore +15 -0
  23. package/.eslintrc.json +34 -0
  24. package/.github/ISSUE_TEMPLATE/bug_report.md +51 -0
  25. package/.github/ISSUE_TEMPLATE/feature_request.md +45 -0
  26. package/.github/ISSUE_TEMPLATE/question.md +31 -0
  27. package/.github/PULL_REQUEST_TEMPLATE.md +97 -0
  28. package/AGENTS.md +28 -0
  29. package/CHANGELOG.md +416 -0
  30. package/CODE_OF_CONDUCT.md +62 -0
  31. package/CONTRIBUTING.md +165 -0
  32. package/DOCKER_SETUP_GUIDE.md +84 -0
  33. package/Dockerfile +90 -0
  34. package/INSTALL.en.md +303 -0
  35. package/INSTALL.md +303 -0
  36. package/README.en.md +330 -0
  37. package/README.md +427 -0
  38. package/backup/legacy-removal-20250930-201816/http-server-legacy.ts +1068 -0
  39. package/backup/legacy-removal-20250930-201816/rollback-to-legacy.ps1 +46 -0
  40. package/backup/legacy-removal-20250930-201816/rollback-to-legacy.sh +48 -0
  41. package/dist/algorithms/forgetting-algorithm.d.ts +90 -0
  42. package/dist/algorithms/forgetting-algorithm.d.ts.map +1 -0
  43. package/dist/algorithms/forgetting-algorithm.js +160 -0
  44. package/dist/algorithms/forgetting-algorithm.js.map +1 -0
  45. package/dist/algorithms/hybrid-search-engine.d.ts +108 -0
  46. package/dist/algorithms/hybrid-search-engine.d.ts.map +1 -0
  47. package/dist/algorithms/hybrid-search-engine.js +384 -0
  48. package/dist/algorithms/hybrid-search-engine.js.map +1 -0
  49. package/dist/algorithms/search-engine.d.ts +64 -0
  50. package/dist/algorithms/search-engine.d.ts.map +1 -0
  51. package/dist/algorithms/search-engine.js +304 -0
  52. package/dist/algorithms/search-engine.js.map +1 -0
  53. package/dist/algorithms/search-ranking.d.ts +145 -0
  54. package/dist/algorithms/search-ranking.d.ts.map +1 -0
  55. package/dist/algorithms/search-ranking.js +311 -0
  56. package/dist/algorithms/search-ranking.js.map +1 -0
  57. package/dist/algorithms/spaced-repetition.d.ts +83 -0
  58. package/dist/algorithms/spaced-repetition.d.ts.map +1 -0
  59. package/dist/algorithms/spaced-repetition.js +153 -0
  60. package/dist/algorithms/spaced-repetition.js.map +1 -0
  61. package/dist/algorithms/vector-search-engine.d.ts +96 -0
  62. package/dist/algorithms/vector-search-engine.d.ts.map +1 -0
  63. package/dist/algorithms/vector-search-engine.js +410 -0
  64. package/dist/algorithms/vector-search-engine.js.map +1 -0
  65. package/dist/client/index.d.ts +55 -0
  66. package/dist/client/index.d.ts.map +1 -0
  67. package/dist/client/index.js +179 -0
  68. package/dist/client/index.js.map +1 -0
  69. package/dist/config/index.d.ts +20 -0
  70. package/dist/config/index.d.ts.map +1 -0
  71. package/dist/config/index.js +87 -0
  72. package/dist/config/index.js.map +1 -0
  73. package/dist/database/init.d.ts +7 -0
  74. package/dist/database/init.d.ts.map +1 -0
  75. package/dist/database/init.js +117 -0
  76. package/dist/database/init.js.map +1 -0
  77. package/dist/database/migrate.d.ts +6 -0
  78. package/dist/database/migrate.d.ts.map +1 -0
  79. package/dist/database/migrate.js +84 -0
  80. package/dist/database/migrate.js.map +1 -0
  81. package/dist/database/schema.sql +159 -0
  82. package/dist/npm-client/context-injector.d.ts +106 -0
  83. package/dist/npm-client/context-injector.d.ts.map +1 -0
  84. package/dist/npm-client/context-injector.js +296 -0
  85. package/dist/npm-client/context-injector.js.map +1 -0
  86. package/dist/npm-client/index.d.ts +42 -0
  87. package/dist/npm-client/index.d.ts.map +1 -0
  88. package/dist/npm-client/index.js +43 -0
  89. package/dist/npm-client/index.js.map +1 -0
  90. package/dist/npm-client/memento-client.d.ts +114 -0
  91. package/dist/npm-client/memento-client.d.ts.map +1 -0
  92. package/dist/npm-client/memento-client.js +391 -0
  93. package/dist/npm-client/memento-client.js.map +1 -0
  94. package/dist/npm-client/memory-manager.d.ts +137 -0
  95. package/dist/npm-client/memory-manager.d.ts.map +1 -0
  96. package/dist/npm-client/memory-manager.js +341 -0
  97. package/dist/npm-client/memory-manager.js.map +1 -0
  98. package/dist/npm-client/types.d.ts +216 -0
  99. package/dist/npm-client/types.d.ts.map +1 -0
  100. package/dist/npm-client/types.js +44 -0
  101. package/dist/npm-client/types.js.map +1 -0
  102. package/dist/npm-client/utils.d.ts +91 -0
  103. package/dist/npm-client/utils.d.ts.map +1 -0
  104. package/dist/npm-client/utils.js +351 -0
  105. package/dist/npm-client/utils.js.map +1 -0
  106. package/dist/scripts/copy-assets.d.ts +3 -0
  107. package/dist/scripts/copy-assets.d.ts.map +1 -0
  108. package/dist/scripts/copy-assets.js +31 -0
  109. package/dist/scripts/copy-assets.js.map +1 -0
  110. package/dist/server/http-server.d.ts +28 -0
  111. package/dist/server/http-server.d.ts.map +1 -0
  112. package/dist/server/http-server.js +930 -0
  113. package/dist/server/http-server.js.map +1 -0
  114. package/dist/server/index-backup.d.ts +5 -0
  115. package/dist/server/index-backup.d.ts.map +1 -0
  116. package/dist/server/index-backup.js +793 -0
  117. package/dist/server/index-backup.js.map +1 -0
  118. package/dist/server/index-refactored.d.ts +6 -0
  119. package/dist/server/index-refactored.d.ts.map +1 -0
  120. package/dist/server/index-refactored.js +206 -0
  121. package/dist/server/index-refactored.js.map +1 -0
  122. package/dist/server/index.d.ts +12 -0
  123. package/dist/server/index.d.ts.map +1 -0
  124. package/dist/server/index.js +301 -0
  125. package/dist/server/index.js.map +1 -0
  126. package/dist/server/simple-mcp-server.d.ts +8 -0
  127. package/dist/server/simple-mcp-server.d.ts.map +1 -0
  128. package/dist/server/simple-mcp-server.js +152 -0
  129. package/dist/server/simple-mcp-server.js.map +1 -0
  130. package/dist/services/async-optimizer.d.ts +136 -0
  131. package/dist/services/async-optimizer.d.ts.map +1 -0
  132. package/dist/services/async-optimizer.js +406 -0
  133. package/dist/services/async-optimizer.js.map +1 -0
  134. package/dist/services/batch-scheduler.d.ts +156 -0
  135. package/dist/services/batch-scheduler.d.ts.map +1 -0
  136. package/dist/services/batch-scheduler.js +612 -0
  137. package/dist/services/batch-scheduler.js.map +1 -0
  138. package/dist/services/cache-service.d.ts +168 -0
  139. package/dist/services/cache-service.d.ts.map +1 -0
  140. package/dist/services/cache-service.js +360 -0
  141. package/dist/services/cache-service.js.map +1 -0
  142. package/dist/services/database-optimizer.d.ts +110 -0
  143. package/dist/services/database-optimizer.d.ts.map +1 -0
  144. package/dist/services/database-optimizer.js +369 -0
  145. package/dist/services/database-optimizer.js.map +1 -0
  146. package/dist/services/embedding-provider-factory.d.ts +62 -0
  147. package/dist/services/embedding-provider-factory.d.ts.map +1 -0
  148. package/dist/services/embedding-provider-factory.js +152 -0
  149. package/dist/services/embedding-provider-factory.js.map +1 -0
  150. package/dist/services/embedding-service.d.ts +95 -0
  151. package/dist/services/embedding-service.d.ts.map +1 -0
  152. package/dist/services/embedding-service.js +276 -0
  153. package/dist/services/embedding-service.js.map +1 -0
  154. package/dist/services/error-logging-service.d.ts +134 -0
  155. package/dist/services/error-logging-service.d.ts.map +1 -0
  156. package/dist/services/error-logging-service.js +271 -0
  157. package/dist/services/error-logging-service.js.map +1 -0
  158. package/dist/services/forgetting-policy-service.d.ts +94 -0
  159. package/dist/services/forgetting-policy-service.d.ts.map +1 -0
  160. package/dist/services/forgetting-policy-service.js +233 -0
  161. package/dist/services/forgetting-policy-service.js.map +1 -0
  162. package/dist/services/gemini-embedding-service.d.ts +82 -0
  163. package/dist/services/gemini-embedding-service.d.ts.map +1 -0
  164. package/dist/services/gemini-embedding-service.js +232 -0
  165. package/dist/services/gemini-embedding-service.js.map +1 -0
  166. package/dist/services/lightweight-embedding-service.d.ts +95 -0
  167. package/dist/services/lightweight-embedding-service.d.ts.map +1 -0
  168. package/dist/services/lightweight-embedding-service.js +263 -0
  169. package/dist/services/lightweight-embedding-service.js.map +1 -0
  170. package/dist/services/memory-embedding-service.d.ts +69 -0
  171. package/dist/services/memory-embedding-service.d.ts.map +1 -0
  172. package/dist/services/memory-embedding-service.js +223 -0
  173. package/dist/services/memory-embedding-service.js.map +1 -0
  174. package/dist/services/minilm-embedding-service.d.ts +92 -0
  175. package/dist/services/minilm-embedding-service.d.ts.map +1 -0
  176. package/dist/services/minilm-embedding-service.js +216 -0
  177. package/dist/services/minilm-embedding-service.js.map +1 -0
  178. package/dist/services/performance-alert-service.d.ts +142 -0
  179. package/dist/services/performance-alert-service.d.ts.map +1 -0
  180. package/dist/services/performance-alert-service.js +366 -0
  181. package/dist/services/performance-alert-service.js.map +1 -0
  182. package/dist/services/performance-monitor.d.ts +144 -0
  183. package/dist/services/performance-monitor.d.ts.map +1 -0
  184. package/dist/services/performance-monitor.js +416 -0
  185. package/dist/services/performance-monitor.js.map +1 -0
  186. package/dist/services/performance-monitoring-integration.d.ts +77 -0
  187. package/dist/services/performance-monitoring-integration.d.ts.map +1 -0
  188. package/dist/services/performance-monitoring-integration.js +177 -0
  189. package/dist/services/performance-monitoring-integration.js.map +1 -0
  190. package/dist/services/unified-embedding-service.d.ts +75 -0
  191. package/dist/services/unified-embedding-service.d.ts.map +1 -0
  192. package/dist/services/unified-embedding-service.js +211 -0
  193. package/dist/services/unified-embedding-service.js.map +1 -0
  194. package/dist/test/debug-http-v2.d.ts +5 -0
  195. package/dist/test/debug-http-v2.d.ts.map +1 -0
  196. package/dist/test/debug-http-v2.js +28 -0
  197. package/dist/test/debug-http-v2.js.map +1 -0
  198. package/dist/test/performance-benchmark.d.ts +57 -0
  199. package/dist/test/performance-benchmark.d.ts.map +1 -0
  200. package/dist/test/performance-benchmark.js +427 -0
  201. package/dist/test/performance-benchmark.js.map +1 -0
  202. package/dist/test/test-alerts-direct.d.ts +7 -0
  203. package/dist/test/test-alerts-direct.d.ts.map +1 -0
  204. package/dist/test/test-alerts-direct.js +101 -0
  205. package/dist/test/test-alerts-direct.js.map +1 -0
  206. package/dist/test/test-batch-scheduler.d.ts +2 -0
  207. package/dist/test/test-batch-scheduler.d.ts.map +1 -0
  208. package/dist/test/test-batch-scheduler.js +156 -0
  209. package/dist/test/test-batch-scheduler.js.map +1 -0
  210. package/dist/test/test-client.d.ts +5 -0
  211. package/dist/test/test-client.d.ts.map +1 -0
  212. package/dist/test/test-client.js +86 -0
  213. package/dist/test/test-client.js.map +1 -0
  214. package/dist/test/test-embedding.d.ts +6 -0
  215. package/dist/test/test-embedding.d.ts.map +1 -0
  216. package/dist/test/test-embedding.js +142 -0
  217. package/dist/test/test-embedding.js.map +1 -0
  218. package/dist/test/test-error-logging.d.ts +7 -0
  219. package/dist/test/test-error-logging.d.ts.map +1 -0
  220. package/dist/test/test-error-logging.js +105 -0
  221. package/dist/test/test-error-logging.js.map +1 -0
  222. package/dist/test/test-forgetting.d.ts +6 -0
  223. package/dist/test/test-forgetting.d.ts.map +1 -0
  224. package/dist/test/test-forgetting.js +154 -0
  225. package/dist/test/test-forgetting.js.map +1 -0
  226. package/dist/test/test-gemini-embedding.d.ts +7 -0
  227. package/dist/test/test-gemini-embedding.d.ts.map +1 -0
  228. package/dist/test/test-gemini-embedding.js +134 -0
  229. package/dist/test/test-gemini-embedding.js.map +1 -0
  230. package/dist/test/test-http-server-v2-simple.d.ts +6 -0
  231. package/dist/test/test-http-server-v2-simple.d.ts.map +1 -0
  232. package/dist/test/test-http-server-v2-simple.js +131 -0
  233. package/dist/test/test-http-server-v2-simple.js.map +1 -0
  234. package/dist/test/test-http-server-v2.d.ts +7 -0
  235. package/dist/test/test-http-server-v2.d.ts.map +1 -0
  236. package/dist/test/test-http-server-v2.js +529 -0
  237. package/dist/test/test-http-server-v2.js.map +1 -0
  238. package/dist/test/test-lightweight-embedding.d.ts +6 -0
  239. package/dist/test/test-lightweight-embedding.d.ts.map +1 -0
  240. package/dist/test/test-lightweight-embedding.js +189 -0
  241. package/dist/test/test-lightweight-embedding.js.map +1 -0
  242. package/dist/test/test-m1-completion.d.ts +7 -0
  243. package/dist/test/test-m1-completion.d.ts.map +1 -0
  244. package/dist/test/test-m1-completion.js +124 -0
  245. package/dist/test/test-m1-completion.js.map +1 -0
  246. package/dist/test/test-memory-injection-prompt.d.ts +2 -0
  247. package/dist/test/test-memory-injection-prompt.d.ts.map +1 -0
  248. package/dist/test/test-memory-injection-prompt.js +299 -0
  249. package/dist/test/test-memory-injection-prompt.js.map +1 -0
  250. package/dist/test/test-performance-alerts.d.ts +7 -0
  251. package/dist/test/test-performance-alerts.d.ts.map +1 -0
  252. package/dist/test/test-performance-alerts.js +109 -0
  253. package/dist/test/test-performance-alerts.js.map +1 -0
  254. package/dist/test/test-performance-monitor.d.ts +2 -0
  255. package/dist/test/test-performance-monitor.d.ts.map +1 -0
  256. package/dist/test/test-performance-monitor.js +182 -0
  257. package/dist/test/test-performance-monitor.js.map +1 -0
  258. package/dist/test/test-performance-monitoring.d.ts +6 -0
  259. package/dist/test/test-performance-monitoring.d.ts.map +1 -0
  260. package/dist/test/test-performance-monitoring.js +156 -0
  261. package/dist/test/test-performance-monitoring.js.map +1 -0
  262. package/dist/test/test-search.d.ts +5 -0
  263. package/dist/test/test-search.d.ts.map +1 -0
  264. package/dist/test/test-search.js +141 -0
  265. package/dist/test/test-search.js.map +1 -0
  266. package/dist/test/test-simple-alerts.d.ts +6 -0
  267. package/dist/test/test-simple-alerts.d.ts.map +1 -0
  268. package/dist/test/test-simple-alerts.js +106 -0
  269. package/dist/test/test-simple-alerts.js.map +1 -0
  270. package/dist/test/test-vector-search-engine.d.ts +2 -0
  271. package/dist/test/test-vector-search-engine.d.ts.map +1 -0
  272. package/dist/test/test-vector-search-engine.js +225 -0
  273. package/dist/test/test-vector-search-engine.js.map +1 -0
  274. package/dist/tools/base-tool.d.ts +64 -0
  275. package/dist/tools/base-tool.d.ts.map +1 -0
  276. package/dist/tools/base-tool.js +158 -0
  277. package/dist/tools/base-tool.js.map +1 -0
  278. package/dist/tools/cleanup-memory-tool.d.ts +10 -0
  279. package/dist/tools/cleanup-memory-tool.d.ts.map +1 -0
  280. package/dist/tools/cleanup-memory-tool.js +66 -0
  281. package/dist/tools/cleanup-memory-tool.js.map +1 -0
  282. package/dist/tools/database-optimize-tool.d.ts +10 -0
  283. package/dist/tools/database-optimize-tool.d.ts.map +1 -0
  284. package/dist/tools/database-optimize-tool.js +64 -0
  285. package/dist/tools/database-optimize-tool.js.map +1 -0
  286. package/dist/tools/error-stats.d.ts +93 -0
  287. package/dist/tools/error-stats.d.ts.map +1 -0
  288. package/dist/tools/error-stats.js +115 -0
  289. package/dist/tools/error-stats.js.map +1 -0
  290. package/dist/tools/forget-tool.d.ts +63 -0
  291. package/dist/tools/forget-tool.d.ts.map +1 -0
  292. package/dist/tools/forget-tool.js +340 -0
  293. package/dist/tools/forget-tool.js.map +1 -0
  294. package/dist/tools/forgetting-stats-tool.d.ts +10 -0
  295. package/dist/tools/forgetting-stats-tool.d.ts.map +1 -0
  296. package/dist/tools/forgetting-stats-tool.js +37 -0
  297. package/dist/tools/forgetting-stats-tool.js.map +1 -0
  298. package/dist/tools/index.d.ts +33 -0
  299. package/dist/tools/index.d.ts.map +1 -0
  300. package/dist/tools/index.js +55 -0
  301. package/dist/tools/index.js.map +1 -0
  302. package/dist/tools/memory-injection-prompt.d.ts +31 -0
  303. package/dist/tools/memory-injection-prompt.d.ts.map +1 -0
  304. package/dist/tools/memory-injection-prompt.js +203 -0
  305. package/dist/tools/memory-injection-prompt.js.map +1 -0
  306. package/dist/tools/performance-alerts.d.ts +127 -0
  307. package/dist/tools/performance-alerts.d.ts.map +1 -0
  308. package/dist/tools/performance-alerts.js +208 -0
  309. package/dist/tools/performance-alerts.js.map +1 -0
  310. package/dist/tools/performance-stats-tool.d.ts +10 -0
  311. package/dist/tools/performance-stats-tool.d.ts.map +1 -0
  312. package/dist/tools/performance-stats-tool.js +38 -0
  313. package/dist/tools/performance-stats-tool.js.map +1 -0
  314. package/dist/tools/pin-tool.d.ts +39 -0
  315. package/dist/tools/pin-tool.d.ts.map +1 -0
  316. package/dist/tools/pin-tool.js +211 -0
  317. package/dist/tools/pin-tool.js.map +1 -0
  318. package/dist/tools/recall-tool.d.ts +27 -0
  319. package/dist/tools/recall-tool.d.ts.map +1 -0
  320. package/dist/tools/recall-tool.js +335 -0
  321. package/dist/tools/recall-tool.js.map +1 -0
  322. package/dist/tools/remember-tool.d.ts +10 -0
  323. package/dist/tools/remember-tool.d.ts.map +1 -0
  324. package/dist/tools/remember-tool.js +101 -0
  325. package/dist/tools/remember-tool.js.map +1 -0
  326. package/dist/tools/resolve-error.d.ts +54 -0
  327. package/dist/tools/resolve-error.d.ts.map +1 -0
  328. package/dist/tools/resolve-error.js +63 -0
  329. package/dist/tools/resolve-error.js.map +1 -0
  330. package/dist/tools/tool-registry.d.ts +134 -0
  331. package/dist/tools/tool-registry.d.ts.map +1 -0
  332. package/dist/tools/tool-registry.js +337 -0
  333. package/dist/tools/tool-registry.js.map +1 -0
  334. package/dist/tools/types.d.ts +56 -0
  335. package/dist/tools/types.d.ts.map +1 -0
  336. package/dist/tools/types.js +23 -0
  337. package/dist/tools/types.js.map +1 -0
  338. package/dist/tools/unpin-tool.d.ts +43 -0
  339. package/dist/tools/unpin-tool.d.ts.map +1 -0
  340. package/dist/tools/unpin-tool.js +233 -0
  341. package/dist/tools/unpin-tool.js.map +1 -0
  342. package/dist/types/embedding.types.d.ts +65 -0
  343. package/dist/types/embedding.types.d.ts.map +1 -0
  344. package/dist/types/embedding.types.js +6 -0
  345. package/dist/types/embedding.types.js.map +1 -0
  346. package/dist/types/index.d.ts +103 -0
  347. package/dist/types/index.d.ts.map +1 -0
  348. package/dist/types/index.js +5 -0
  349. package/dist/types/index.js.map +1 -0
  350. package/dist/utils/database.d.ts +62 -0
  351. package/dist/utils/database.d.ts.map +1 -0
  352. package/dist/utils/database.js +399 -0
  353. package/dist/utils/database.js.map +1 -0
  354. package/dist/utils/stopwords.d.ts +18 -0
  355. package/dist/utils/stopwords.d.ts.map +1 -0
  356. package/dist/utils/stopwords.js +117 -0
  357. package/dist/utils/stopwords.js.map +1 -0
  358. package/docker-compose.dev.yml +50 -0
  359. package/docker-compose.prod.yml +77 -0
  360. package/docker-compose.yml +43 -0
  361. package/docs/en/Memento-Goals.md +217 -0
  362. package/docs/en/Memento-M1-DetailSpecs.md +130 -0
  363. package/docs/en/Memento-Milestones.md +135 -0
  364. package/docs/en/Search-Ranking-Memory-Decay-Formulas.md +177 -0
  365. package/docs/en/api-reference.md +658 -0
  366. package/docs/en/architecture.md +1302 -0
  367. package/docs/en/developer-guide.md +1005 -0
  368. package/docs/en/user-manual.md +595 -0
  369. package/docs/ko/Memento-Goals.md +217 -0
  370. package/docs/ko/Memento-M1-DetailSpecs.md +130 -0
  371. package/docs/ko/Memento-Milestones.md +134 -0
  372. package/docs/ko/Search-Ranking-Memory-Decay-Formulas.md +177 -0
  373. package/docs/ko/api-reference.md +658 -0
  374. package/docs/ko/architecture.md +1302 -0
  375. package/docs/ko/developer-guide.md +1006 -0
  376. package/docs/ko/embedding-api-reference.md +122 -0
  377. package/docs/ko/embedding-configuration.md +62 -0
  378. package/docs/ko/embedding-performance-benchmark.md +62 -0
  379. package/docs/ko/embedding-service-guide.md +314 -0
  380. package/docs/ko/user-manual.md +595 -0
  381. package/env.example +49 -0
  382. package/install.sh +191 -0
  383. package/mcp-http-client.js +218 -0
  384. package/mcp.json +0 -0
  385. package/package.json +125 -0
  386. package/packages/mcp-client/docs/API-REFERENCE.md +560 -0
  387. package/packages/mcp-client/docs/BEST-PRACTICES.md +564 -0
  388. package/packages/mcp-client/docs/MIGRATION-GUIDE.md +344 -0
  389. package/packages/mcp-client/docs/PERFORMANCE-GUIDE.md +476 -0
  390. package/packages/mcp-client/docs/TROUBLESHOOTING.md +564 -0
  391. package/packages/mcp-client/package-lock.json +907 -0
  392. package/packages/mcp-client/package.json +58 -0
  393. package/packages/mcp-client/performance-optimizer.js +428 -0
  394. package/packages/mcp-client/test-basic.js +65 -0
  395. package/packages/mcp-client/test-integration.js +366 -0
  396. package/scripts/auto-setup.js +234 -0
  397. package/scripts/backup-daily.bat +28 -0
  398. package/scripts/backup-embeddings.js +108 -0
  399. package/scripts/check-db-integrity.js +93 -0
  400. package/scripts/debug-embeddings.js +184 -0
  401. package/scripts/direct-sql-migration.sql +36 -0
  402. package/scripts/docker-migration.sh +105 -0
  403. package/scripts/fix-migration.js +93 -0
  404. package/scripts/fix-vector-dimensions.js +206 -0
  405. package/scripts/migrate-embedding-data.js +307 -0
  406. package/scripts/regenerate-embeddings.js +144 -0
  407. package/scripts/restore-legacy.ps1 +60 -0
  408. package/scripts/restore-legacy.sh +62 -0
  409. package/scripts/run-migration.js +122 -0
  410. package/scripts/safe-migration.js +150 -0
  411. package/scripts/simple-migrate.js +41 -0
  412. package/scripts/simple-update.js +123 -0
  413. package/scripts/start-container.sh +10 -0
  414. package/src/algorithms/forgetting-algorithm.spec.ts +538 -0
  415. package/src/algorithms/forgetting-algorithm.ts +243 -0
  416. package/src/algorithms/hybrid-search-engine.spec.ts +484 -0
  417. package/src/algorithms/hybrid-search-engine.ts +489 -0
  418. package/src/algorithms/search-engine.spec.ts +429 -0
  419. package/src/algorithms/search-engine.ts +392 -0
  420. package/src/algorithms/search-ranking.spec.ts +293 -0
  421. package/src/algorithms/search-ranking.ts +407 -0
  422. package/src/algorithms/spaced-repetition.spec.ts +510 -0
  423. package/src/algorithms/spaced-repetition.ts +238 -0
  424. package/src/algorithms/vector-search-engine.ts +505 -0
  425. package/src/client/index.spec.ts +427 -0
  426. package/src/client/index.ts +222 -0
  427. package/src/config/index.spec.ts +339 -0
  428. package/src/config/index.ts +106 -0
  429. package/src/database/init.spec.ts +239 -0
  430. package/src/database/init.ts +130 -0
  431. package/src/database/migrate.spec.ts +293 -0
  432. package/src/database/migrate.ts +94 -0
  433. package/src/database/migrations/001_add_embedding_metadata.sql +29 -0
  434. package/src/database/schema.sql +159 -0
  435. package/src/npm-client/context-injector.spec.ts +335 -0
  436. package/src/npm-client/context-injector.ts +412 -0
  437. package/src/npm-client/index.spec.ts +108 -0
  438. package/src/npm-client/index.ts +96 -0
  439. package/src/npm-client/memento-client.spec.ts +549 -0
  440. package/src/npm-client/memento-client.ts +501 -0
  441. package/src/npm-client/memory-manager.spec.ts +374 -0
  442. package/src/npm-client/memory-manager.ts +414 -0
  443. package/src/npm-client/types.spec.ts +427 -0
  444. package/src/npm-client/types.ts +296 -0
  445. package/src/npm-client/utils.spec.ts +355 -0
  446. package/src/npm-client/utils.ts +423 -0
  447. package/src/scripts/copy-assets.js +37 -0
  448. package/src/server/http-server.spec.ts +648 -0
  449. package/src/server/http-server.ts +1030 -0
  450. package/src/server/index-backup.ts +875 -0
  451. package/src/server/index-refactored.ts +237 -0
  452. package/src/server/index.spec.ts +281 -0
  453. package/src/server/index.ts +347 -0
  454. package/src/server/simple-mcp-server.spec.ts +207 -0
  455. package/src/server/simple-mcp-server.ts +173 -0
  456. package/src/services/async-optimizer.spec.ts +569 -0
  457. package/src/services/async-optimizer.ts +484 -0
  458. package/src/services/batch-scheduler.ts +759 -0
  459. package/src/services/cache-service.spec.ts +372 -0
  460. package/src/services/cache-service.ts +434 -0
  461. package/src/services/database-optimizer.spec.ts +344 -0
  462. package/src/services/database-optimizer.ts +450 -0
  463. package/src/services/embedding-provider-factory.ts +173 -0
  464. package/src/services/embedding-service.spec.ts +342 -0
  465. package/src/services/embedding-service.ts +333 -0
  466. package/src/services/error-logging-service.spec.ts +416 -0
  467. package/src/services/error-logging-service.ts +383 -0
  468. package/src/services/forgetting-policy-service.spec.ts +140 -0
  469. package/src/services/forgetting-policy-service.ts +334 -0
  470. package/src/services/gemini-embedding-service.spec.ts +463 -0
  471. package/src/services/gemini-embedding-service.ts +283 -0
  472. package/src/services/lightweight-embedding-service.spec.ts +458 -0
  473. package/src/services/lightweight-embedding-service.ts +324 -0
  474. package/src/services/memory-embedding-service.spec.ts +417 -0
  475. package/src/services/memory-embedding-service.ts +289 -0
  476. package/src/services/minilm-embedding-service.spec.ts +104 -0
  477. package/src/services/minilm-embedding-service.ts +262 -0
  478. package/src/services/performance-alert-service.spec.ts +517 -0
  479. package/src/services/performance-alert-service.ts +477 -0
  480. package/src/services/performance-monitor.spec.ts +401 -0
  481. package/src/services/performance-monitor.ts +532 -0
  482. package/src/services/performance-monitoring-integration.spec.ts +478 -0
  483. package/src/services/performance-monitoring-integration.ts.bak +276 -0
  484. package/src/services/unified-embedding-service.spec.ts +224 -0
  485. package/src/services/unified-embedding-service.ts +255 -0
  486. package/src/test/debug-http-v2.ts +30 -0
  487. package/src/test/embedding-integration-test.spec.ts +295 -0
  488. package/src/test/embedding-integration-test.ts +295 -0
  489. package/src/test/embedding-performance-benchmark.spec.ts +354 -0
  490. package/src/test/embedding-performance-benchmark.ts +312 -0
  491. package/src/test/performance-benchmark.ts +565 -0
  492. package/src/test/test-alerts-direct.ts +136 -0
  493. package/src/test/test-batch-scheduler-simple.spec.ts +122 -0
  494. package/src/test/test-batch-scheduler.spec.ts +453 -0
  495. package/src/test/test-batch-scheduler.ts +182 -0
  496. package/src/test/test-client.ts +97 -0
  497. package/src/test/test-embedding.ts +153 -0
  498. package/src/test/test-error-handling.spec.ts +575 -0
  499. package/src/test/test-error-logging.ts +117 -0
  500. package/src/test/test-forgetting.ts +162 -0
  501. package/src/test/test-gemini-embedding.ts +159 -0
  502. package/src/test/test-http-server-v2-simple.ts +147 -0
  503. package/src/test/test-http-server-v2.ts +586 -0
  504. package/src/test/test-hybrid-search-engine.spec.ts +521 -0
  505. package/src/test/test-integration-fixed.spec.ts +612 -0
  506. package/src/test/test-integration.spec.ts +463 -0
  507. package/src/test/test-lightweight-embedding.ts +208 -0
  508. package/src/test/test-m1-completion.spec.ts +614 -0
  509. package/src/test/test-m1-completion.ts +141 -0
  510. package/src/test/test-m1-integration.spec.ts +514 -0
  511. package/src/test/test-memory-injection-prompt.spec.ts +650 -0
  512. package/src/test/test-memory-injection-prompt.ts +391 -0
  513. package/src/test/test-performance-alerts.ts +125 -0
  514. package/src/test/test-performance-monitor-updates.spec.ts +490 -0
  515. package/src/test/test-performance-monitor.spec.ts +284 -0
  516. package/src/test/test-performance-monitor.ts +228 -0
  517. package/src/test/test-performance-monitoring.ts +171 -0
  518. package/src/test/test-search.ts +151 -0
  519. package/src/test/test-simple-alerts.ts +136 -0
  520. package/src/test/test-vector-search-engine.spec.ts +408 -0
  521. package/src/test/test-vector-search-engine.ts +303 -0
  522. package/src/tools/base-tool.ts +189 -0
  523. package/src/tools/cleanup-memory-tool.ts +77 -0
  524. package/src/tools/database-optimize-tool.ts +79 -0
  525. package/src/tools/error-stats.ts +119 -0
  526. package/src/tools/forget-tool.spec.ts +613 -0
  527. package/src/tools/forget-tool.ts +454 -0
  528. package/src/tools/forgetting-stats-tool.ts +47 -0
  529. package/src/tools/index.ts +71 -0
  530. package/src/tools/memory-injection-prompt.ts +257 -0
  531. package/src/tools/performance-alerts.ts +226 -0
  532. package/src/tools/performance-stats-tool.ts +48 -0
  533. package/src/tools/pin-tool.spec.ts +497 -0
  534. package/src/tools/pin-tool.ts +277 -0
  535. package/src/tools/recall-tool.spec.ts +475 -0
  536. package/src/tools/recall-tool.ts +389 -0
  537. package/src/tools/remember-tool.spec.ts +469 -0
  538. package/src/tools/remember-tool.ts +112 -0
  539. package/src/tools/resolve-error.ts +69 -0
  540. package/src/tools/tool-registry.ts +417 -0
  541. package/src/tools/types.ts +63 -0
  542. package/src/tools/unpin-tool.spec.ts +549 -0
  543. package/src/tools/unpin-tool.ts +306 -0
  544. package/src/types/embedding.types.ts +78 -0
  545. package/src/types/index.spec.ts +420 -0
  546. package/src/types/index.ts +117 -0
  547. package/src/utils/database.spec.ts +77 -0
  548. package/src/utils/database.ts +458 -0
  549. package/src/utils/stopwords.ts +128 -0
  550. package/start-docker-setup.bat +38 -0
  551. package/static/logo.png +0 -0
  552. package/static/memento_logo.svg +2 -0
  553. package/test-docker.js +103 -0
  554. package/tsconfig.json +46 -0
  555. package/vitest.config.ts +23 -0
@@ -0,0 +1,77 @@
1
+ version: '3.8'
2
+
3
+ services:
4
+ memento-prod:
5
+ build:
6
+ context: .
7
+ dockerfile: Dockerfile
8
+ ports:
9
+ - "8080:8080"
10
+ environment:
11
+ - NODE_ENV=production
12
+ - DOCKER=true
13
+ - DB_PATH=/app/data/memory.db
14
+ - LOG_LEVEL=info
15
+ - PORT=8080
16
+ - OPENAI_API_KEY=${OPENAI_API_KEY}
17
+ - GEMINI_API_KEY=${GEMINI_API_KEY}
18
+ - EMBEDDING_PROVIDER=${EMBEDDING_PROVIDER:-lightweight}
19
+ - GEMINI_MODEL=${GEMINI_MODEL:-text-embedding-004}
20
+ - EMBEDDING_DIMENSIONS=${EMBEDDING_DIMENSIONS:-512}
21
+ - MAX_CONNECTIONS=${MAX_CONNECTIONS:-1000}
22
+ - CACHE_TTL=${CACHE_TTL:-300000}
23
+ - CACHE_MAX_SIZE=${CACHE_MAX_SIZE:-1000}
24
+ volumes:
25
+ - ./data:/app/data
26
+ - ./logs:/app/logs
27
+ restart: unless-stopped
28
+ command: ["/app/start-container.sh"]
29
+ stdin_open: true
30
+ tty: true
31
+ networks:
32
+ - memento-network
33
+ healthcheck:
34
+ test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
35
+ interval: 30s
36
+ timeout: 10s
37
+ retries: 3
38
+ start_period: 40s
39
+
40
+ # 프로덕션용 Redis (캐싱)
41
+ redis-prod:
42
+ image: redis:7-alpine
43
+ ports:
44
+ - "6379:6379"
45
+ volumes:
46
+ - redis_prod_data:/data
47
+ restart: unless-stopped
48
+ command: redis-server --appendonly yes --maxmemory 256mb --maxmemory-policy allkeys-lru
49
+ networks:
50
+ - memento-network
51
+ healthcheck:
52
+ test: ["CMD", "redis-cli", "ping"]
53
+ interval: 30s
54
+ timeout: 10s
55
+ retries: 3
56
+
57
+ # Nginx 리버스 프록시 (선택사항)
58
+ nginx:
59
+ image: nginx:alpine
60
+ ports:
61
+ - "80:80"
62
+ - "443:443"
63
+ volumes:
64
+ - ./nginx.conf:/etc/nginx/nginx.conf:ro
65
+ - ./ssl:/etc/nginx/ssl:ro
66
+ depends_on:
67
+ - memento-prod
68
+ restart: unless-stopped
69
+ networks:
70
+ - memento-network
71
+
72
+ volumes:
73
+ redis_prod_data:
74
+
75
+ networks:
76
+ memento-network:
77
+ driver: bridge
@@ -0,0 +1,43 @@
1
+ services:
2
+ memento-mcp-server:
3
+ build: .
4
+ ports:
5
+ - "9001:9001"
6
+ environment:
7
+ - NODE_ENV=production
8
+ - DOCKER=true
9
+ - DB_PATH=/app/data/memory.db
10
+ - LOG_LEVEL=info
11
+ - OPENAI_API_KEY=${OPENAI_API_KEY}
12
+ - GEMINI_API_KEY=${GEMINI_API_KEY}
13
+ - EMBEDDING_PROVIDER=${EMBEDDING_PROVIDER:-lightweight}
14
+ - GEMINI_MODEL=${GEMINI_MODEL:-text-embedding-004}
15
+ - EMBEDDING_DIMENSIONS=${EMBEDDING_DIMENSIONS:-512}
16
+ - PORT=9001
17
+ volumes:
18
+ - ./data:/app/data
19
+ - ./logs:/app/logs
20
+ restart: unless-stopped
21
+ user: root
22
+ command: ["/app/start-container.sh"]
23
+ stdin_open: true
24
+ tty: true
25
+ healthcheck:
26
+ test: ["CMD", "curl", "-f", "http://localhost:9001/health"]
27
+ interval: 30s
28
+ timeout: 10s
29
+ retries: 3
30
+ start_period: 40s
31
+
32
+ # Redis for caching (optional)
33
+ # redis:
34
+ # image: redis:7-alpine
35
+ # ports:
36
+ # - "6379:6379"
37
+ # volumes:
38
+ # - redis_data:/data
39
+ # restart: unless-stopped
40
+ # command: redis-server --appendonly yes
41
+
42
+ volumes:
43
+ redis_data:
@@ -0,0 +1,217 @@
1
+ # Memento Goals
2
+
3
+ ## 1. Goal Summary
4
+
5
+ **Goal**: Provide storage+search+summary+forgetting mechanisms modeled after human memory systems (working memory, episodic memory, semantic memory, procedural memory) so that agents don't lose conversation/task context.
6
+
7
+ **Non-goals**: Large-scale RAG platforms, general-purpose data lakes. Initially focus on personal/workspace-level long-term memory and conversation-session transitions.
8
+
9
+ ### Rationale for Human Memory Model
10
+
11
+ - **Episodic/Semantic Separation**: Tulving lineage – episodic is events, semantic is knowledge. The two systems are interdependent. [PMC](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2657600/) +1
12
+
13
+ - **Working Memory**: Central executive, phonological loop, visuospatial memory components manage "currently processing information". [Simply Psychology](https://www.simplypsychology.org/working-memory.html) +1
14
+
15
+ - **Forgetting/Spaced Repetition**: Ebbinghaus curve and "periodic reminders" are advantageous for long-term retention. [PMC](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2657600/) +1
16
+
17
+ ### MCP Application Rationale
18
+
19
+ MCP exposes Tools/Resources/Prompts as standards and can be easily connected from clients (Claude, ChatGPT, Cursor, etc.). [WorkOS](https://workos.com/) +3, [Model Context Protocol](https://modelcontextprotocol.io/) +3
20
+
21
+ ## 2. System Overview (Components)
22
+
23
+ ### Memory MCP Server
24
+
25
+ - **Protocol**: MCP (spec 2025-03-26)
26
+ - **Interface**: tools (memory write/search/pin/delete, etc.), resources (read-only views), prompts (context injection templates). [Model Context Protocol](https://modelcontextprotocol.io/) +1
27
+
28
+ ### Storage
29
+
30
+ - **Primary**: PostgreSQL + pgvector (managing vectors/metadata/transactions together). [GitHub](https://github.com/pgvector/pgvector) +1
31
+ - **Alternative**: SQLite+FTS5 (+lancedb) for embedded, or Qdrant/Milvus for separation
32
+
33
+ ### Embedding & Summary
34
+
35
+ Text embedding models (sentence embeddings), "information compression summarizer (map-reduce)" pipeline.
36
+
37
+ ### Scheduler/Worker
38
+
39
+ "Sleep consolidation" batch (nighttime clustering, summarization, rule extraction), "forgetting/review" batch (re-exposure, deletion candidate selection).
40
+
41
+ ## 3. Data Model (Corresponding to Human Memory)
42
+
43
+ ### Core Tables
44
+
45
+ #### memory_item
46
+ - `id`, `type`(working|episodic|semantic|procedural), `title`, `content`, `source`(chat|tool|file|url), `agent_id`, `user_id`, `project_id`
47
+ - `created_at`, `last_accessed_at`, `importance`(0~1), `pinned`(bool), `privacy_scope`(private|team|public), `origin_trace`(json)
48
+
49
+ #### memory_embedding
50
+ - `memory_id` FK, `embedding` vector, `dim`
51
+
52
+ #### memory_tag (N:N)
53
+ - Tags (e.g., tech:mariadb, pref:coffee, task:ads-settlement)
54
+
55
+ #### memory_link
56
+ - Relationships between memories (cause_of, derived_from, duplicates, contradicts) – semantic connection network
57
+
58
+ #### feedback_event
59
+ - `memory_id`, `event`(used|edited|neglected|helpful|not_helpful), `score`, `ts`
60
+
61
+ ### Working Memory Buffer
62
+
63
+ #### wm_buffer
64
+ - `session_id`, `items`(json), `token_budget`, `expires_at`
65
+
66
+ When session ends/token limit exceeded, transition to **episodic** snapshot.
67
+
68
+ ## 4. Search, Ranking, Forgetting (Including Formulas)
69
+
70
+ ### 4.1 Search Score
71
+
72
+ Final score S:
73
+
74
+ ```
75
+ S = α * relevance + β * recency + γ * importance + δ * usage - ε * duplication_penalty
76
+ ```
77
+
78
+ - **relevance**: Cosine similarity (embedding) + keyword TF-IDF correction
79
+ - **recency**: `exp(-λ * age_days)` (applying Ebbinghaus-type forgetting function; λ is domain-specific tuning) [PMC](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2657600/) +1
80
+ - **importance**: Explicit/inferred ("user preferences, rules, long-term goals" get higher weights)
81
+ - **usage**: Log scale of query/citation/reuse frequency
82
+ - **duplication_penalty**: Deduction for similar items within clusters
83
+
84
+ ### 4.2 Forgetting/Spaced Repetition
85
+
86
+ - **Soft deletion candidate queue**: Items with low S and old `last_accessed_at` among non-pinned/non-policy items
87
+ - **Retention policy**: Tag/scope-specific TTL (e.g., wm: 48h, episodic: 90d, semantic: indefinite)
88
+ - **Spaced repetition**: High-importance items generate review events (card-form reminders) for re-exposure
89
+
90
+ ### 4.3 Semantic Integration ("Sleep Consolidation")
91
+
92
+ Cluster recent episodic → conflict/consistency check → generate semantic in rule/fact form
93
+
94
+ Implement "fast episodic → slow semantic integration" using CLS hypothesis (hippocampus-neocortex complementary learning) as motif. [PubMed](https://pubmed.ncbi.nlm.nih.gov/) +1
95
+
96
+ ## 5. MCP Interface Design (Tools/Resources/Prompts)
97
+
98
+ ### 5.1 tools (Summarized Signatures)
99
+
100
+ #### remember
101
+ - **Input**: `content`, `type?`, `tags?`, `importance?`, `source?`, `privacy_scope?`
102
+ - **Output**: `memory_id`
103
+
104
+ #### recall
105
+ - **Input**: `query`, `filters?`(type/tags/time/project/agent), `limit?`
106
+ - **Output**: `items[]`(snippet, score, recall_reason)
107
+
108
+ #### pin / unpin
109
+
110
+ #### forget
111
+ - Hard/soft deletion options, GDPR-style "right to erasure" support
112
+
113
+ #### summarize_thread
114
+ - Current session log → wm_buffer summary → episodic storage
115
+
116
+ #### link
117
+ - Create relationships between memories (cause, derivation, duplication, contradiction)
118
+
119
+ #### export
120
+ - NDJSON/Markdown/CSV export
121
+
122
+ #### feedback
123
+ - Collect usability/accuracy feedback (helpful, not_helpful, attach correct answers)
124
+
125
+ **MCP Spec Rationale**: Standardize tools/resources/prompts so clients can automatically discover, call, and configure. [Model Context Protocol](https://modelcontextprotocol.io/) +1
126
+
127
+ ### 5.2 resources
128
+
129
+ - `memory/{id}`: Read-only single view
130
+ - `memory/search?query=...`: Recent search result cache resource (useful for client-side preview)
131
+
132
+ ### 5.3 prompts
133
+
134
+ #### memory_injection
135
+ - **Description**: "Before this turn's response, inject 'top 5 related memory summaries' as context"
136
+ - **Parameters**: `query`, `token_budget`
137
+
138
+ Easy for agents to use with MCP Prompts functionality. [Model Context Protocol](https://modelcontextprotocol.io/)
139
+
140
+ ## 6. Agent Execution Flow
141
+
142
+ 1. **WM Loading**: Organize current user message + previous n-turn summary in `wm_buffer`
143
+ 2. **Query Construction**: `query = user_msg + task + wm_summary`
144
+ 3. **recall call**:
145
+ - Filter: `project_id`, `tags`, `type in {semantic, episodic}`
146
+ - 1st ANN (vector) → 2nd rerank (BM25/keyword + rule match)
147
+ - Deduplication & compression: map-reduce summary, record conflicts as `link(contradicts)`
148
+ 4. **Prompt Injection**: Inject top K items with `prompts.memory_injection`
149
+ 5. **After Response Generation**:
150
+ - Record new facts/preferences/decisions with `remember`
151
+ - Reflect `feedback(helpful)` signals
152
+ 6. **Batch Work (Night)**: Clustering, summary integration, forgetting/reminder scheduling
153
+
154
+ ## 7. Minimum Viable Product (MVP) Spec
155
+
156
+ - Memory write/read/search/pin/delete tools
157
+ - Initially support only episodic/semantic types (working memory as session cache)
158
+ - **Score**: `S = 0.5*relevance + 0.2*recency + 0.2*importance + 0.1*usage`
159
+ - **Retention**: episodic 90d, semantic indefinite, wm 48h
160
+ - **Storage**: Postgres+pgvector, ivfflat index, cosine distance. [GitHub](https://github.com/pgvector/pgvector) +1
161
+ - MCP `prompts.memory_injection` 1 type
162
+
163
+ ## 8. Example: TypeScript MCP Server Skeleton
164
+
165
+ ```typescript
166
+ // package: mcp-memory-server
167
+ import { Server } from "@modelcontextprotocol/sdk/server";
168
+ import { z } from "zod";
169
+ import { recall, remember, pin, unpin, forget, summarizeThread, link, exportMem, feedback } from "./tools";
170
+
171
+ const server = new Server({ name: "mcp-memory", version: "0.1.0" });
172
+
173
+ // Tools
174
+ server.tool("remember", {
175
+ schema: z.object({
176
+ content: z.string(),
177
+ type: z.enum(["episodic","semantic"]).default("episodic"),
178
+ tags: z.array(z.string()).optional(),
179
+ importance: z.number().min(0).max(1).default(0.5),
180
+ source: z.string().optional(),
181
+ privacy_scope: z.enum(["private","team","public"]).default("private")
182
+ }),
183
+ handler: remember
184
+ });
185
+
186
+ server.tool("recall", {
187
+ schema: z.object({
188
+ query: z.string(),
189
+ filters: z.object({
190
+ type: z.array(z.enum(["episodic","semantic"])).optional(),
191
+ tags: z.array(z.string()).optional(),
192
+ project_id: z.string().optional(),
193
+ time_from: z.string().optional(),
194
+ time_to: z.string().optional()
195
+ }).optional(),
196
+ limit: z.number().default(8)
197
+ }),
198
+ handler: recall
199
+ });
200
+
201
+ // ... register pin/unpin/forget/summarizeThread/link/export/feedback ...
202
+
203
+ // Resources
204
+ server.resource("memory/{id}", async (params) => {/* read-only view */});
205
+
206
+ // Prompts
207
+ server.prompt("memory_injection", {
208
+ params: [{ name: "query", required: true }, { name: "token_budget", required: false }],
209
+ getPrompt: async ({ query, token_budget = 1200 }) => {
210
+ const items = await recall({ query, limit: 6 });
211
+ const summary = await compress(items, token_budget);
212
+ return [{ role: "system", content: `Related long-term memory summary:\n${summary}` }];
213
+ }
214
+ });
215
+
216
+ server.start();
217
+ ```
@@ -0,0 +1,130 @@
1
+ # MCP Memory Server M1 Detailed Design Document
2
+
3
+ ## 1. Purpose
4
+
5
+ This stage (M1) aims to implement a lightweight memory assistant MCP server that can be easily run by individual users in a local environment.
6
+ The database uses SQLite embedded DB that can be used without separate installation, and provides basic functions such as memory storage, search, deletion, and pinning through the MCP interface.
7
+
8
+ ## 2. Overall Architecture
9
+
10
+ - **Client**: IDE supporting MCP (e.g., Cursor) or AI Agent
11
+ - **Server**: MCP Memory Server (Node.js/TypeScript based)
12
+ - **Storage**: SQLite database (memory.db file)
13
+
14
+ **Structure**:
15
+ ```
16
+ [Client/Agent] ↔ [MCP Memory Server] ↔ [SQLite DB (memory.db)]
17
+ ```
18
+
19
+ ## 3. Feature Scope
20
+
21
+ ### Memory Storage (remember)
22
+ - **Input**: content, type, tags, importance, privacy_scope
23
+ - **Output**: memory_id
24
+ - **Action**: Store text in DB, generate embedding and record in vector column
25
+
26
+ ### Memory Search (recall)
27
+ - **Input**: query, filters(type, tags, date), limit
28
+ - **Output**: List of related memories
29
+ - **Action**: Combine FTS5 (keyword) + VSS (vector search)
30
+
31
+ ### Memory Deletion (forget)
32
+ - **Soft Delete**: Automatically removed when TTL expires
33
+ - **Hard Delete**: Direct user call
34
+
35
+ ### Memory Pin/Unpin (pin/unpin)
36
+ - Exclude specific memories from TTL and forgetting policies
37
+
38
+ ## 4. Database Design (SQLite)
39
+
40
+ ### 4.1 Main Table
41
+
42
+ ```sql
43
+ CREATE TABLE memory_item (
44
+ id TEXT PRIMARY KEY,
45
+ type TEXT CHECK (type IN ('working','episodic','semantic','procedural')),
46
+ content TEXT,
47
+ importance REAL,
48
+ privacy_scope TEXT CHECK (privacy_scope IN ('private','team','public')) DEFAULT 'private',
49
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
50
+ last_accessed TIMESTAMP,
51
+ pinned BOOLEAN DEFAULT FALSE
52
+ );
53
+ ```
54
+
55
+ ### 4.2 Indexes
56
+
57
+ #### FTS5 (Text Search)
58
+ ```sql
59
+ CREATE VIRTUAL TABLE memory_item_fts USING fts5(content);
60
+ ```
61
+
62
+ #### VSS (Vector Search, 1536-dimensional example)
63
+ ```sql
64
+ CREATE VIRTUAL TABLE memory_item_vss USING vss0(embedding(1536));
65
+ ```
66
+
67
+ ## 5. MCP Interface (M1 Limited)
68
+
69
+ ### Tools
70
+ - `remember(content, type?, tags?, importance?, privacy_scope?)`
71
+ - `recall(query, filters?, limit?)`
72
+ - `forget(id, hard?)`
73
+ - `pin(id)` / `unpin(id)`
74
+
75
+ ### Resources
76
+ - `memory/{id}` (read single memory)
77
+
78
+ ### Prompts
79
+ - `memory_injection(query, token_budget)`
80
+ - Inject top 5 related memories summarized into prompt
81
+
82
+ ## 6. Forgetting Policy
83
+
84
+ - **Working Memory**: Deleted after 48 hours
85
+ - **Episodic Memory**: Maintained for 90 days
86
+ - **Semantic Memory**: Indefinite
87
+ - **Pinned**: Excluded from deletion targets
88
+
89
+ Periodically run batch jobs (cron jobs) to clean up expired records.
90
+
91
+ ## 7. Operation Flow
92
+
93
+ ### Memory Storage
94
+ 1. User calls `remember`
95
+ 2. Record in DB → Update FTS5 index → Generate embedding and record in VSS table
96
+
97
+ ### Memory Search
98
+ 1. User calls `recall`
99
+ 2. Keyword search with FTS5 → Vector search with VSS → Sum scores → Return top K results
100
+
101
+ ### Forgetting/Deletion
102
+ 1. Batch job deletes TTL expired items
103
+ 2. Immediate removal when user calls `forget`
104
+
105
+ ## 8. Operations and Deployment
106
+
107
+ - **Runtime Environment**: Node.js (v20 or higher)
108
+ - **Deployment Method**: Local execution
109
+ ```bash
110
+ node memory-server.js
111
+ ```
112
+ - **DB Management**: Single memory.db file (stored in local storage)
113
+ - **Backup/Restore**: Can be handled by file copying
114
+
115
+ ## 9. Limitations and Next Stage Considerations
116
+
117
+ **Limitations**: Single user only, no permission management
118
+
119
+ **Expansion Considerations**:
120
+ - Add API Key authentication in M2
121
+ - Switch to SQLite server mode
122
+ - Plan to enable team collaboration using ACL (user_id, privacy_scope)
123
+
124
+ ## 10. Checklist
125
+
126
+ - [ ] SQLite DB initial schema creation completed
127
+ - [ ] MCP Tools (remember, recall, forget, pin/unpin) implementation completed
128
+ - [ ] FTS5 + VSS based search working properly
129
+ - [ ] TTL based forgetting policy batch script applied
130
+ - [ ] MCP Client integration testing completed in local environment
@@ -0,0 +1,135 @@
1
+ # 📄 MCP Memory Server Design and Milestones Document
2
+ ## 🎯 Vision
3
+
4
+ Implement an AI Agent memory assistant MCP server that mimics human memory structure (working memory, episodic memory, semantic memory).
5
+
6
+ - Personal (MVP): Single SQLite file based, lightweight local execution
7
+ - Team: Internal network only server + single API Key, SQLite + serialization queue
8
+ - Organization: Postgres + pgvector + JWT authentication, SSO/LDAP integration
9
+
10
+ ## 🛠 Milestone Overview
11
+
12
+ | Stage | Target | Storage | Authentication | Security Scope | Operation Method |
13
+ |-------|--------|---------|----------------|----------------|------------------|
14
+ | M1 | Personal | SQLite Embedded | None | Local | Local execution |
15
+ | M2 | Team | SQLite Server Mode (WAL + serialization queue) | Single API Key | Internal network only | Docker single container |
16
+ | M3 | Organization Entry | Postgres + pgvector | JWT (user-specific tokens) | Internal network or VPN | Docker Compose (server+DB) |
17
+ | M4 | Organization Expansion | Postgres + HA configuration | JWT + RBAC + SSO/LDAP | Enterprise security policy compliance | Kubernetes/Cloud RDS |
18
+
19
+ ## ⚙️ Stage-by-Stage Design
20
+
21
+ ### 🔹 M1. Personal Use (MVP)
22
+
23
+ - **DB**: SQLite (memory.db)
24
+ - **Indexes**: FTS5, sqlite-vec (vector search)
25
+ - **MCP Tools**: remember, recall, forget, pin
26
+ - **Forgetting Policy**: TTL-based (working 48h, episodic 90d, semantic indefinite)
27
+ - **Operation**: Local execution (node memory-server.js)
28
+
29
+ ### 🔹 M2. Team Collaboration (Internal Network Only Server)
30
+
31
+ - **DB**: SQLite (WAL mode)
32
+ - **Write Processing**: Server-level queuing → serialization
33
+ - **Read Processing**: Multiple concurrent reads possible
34
+ - **Authentication**: Single API Key (API_KEY=team-secret-key)
35
+ - **Security**: Internal network only (external ports blocked)
36
+ - **Operation**: Docker single container
37
+
38
+ ```yaml
39
+ services:
40
+ memory-server:
41
+ build: .
42
+ ports:
43
+ - "8080:8080"
44
+ volumes:
45
+ - ./data:/app/data
46
+ environment:
47
+ - DB_PATH=/app/data/memory.db
48
+ - API_KEY=team-secret-key
49
+ ```
50
+
51
+ - **ACL**: Apply privacy_scope (private | team)
52
+
53
+ ### 🔹 M3. Organization Entry (Postgres Migration)
54
+
55
+ - **DB**: Postgres 15+, pgvector extension
56
+
57
+ **Schema**:
58
+
59
+ ```sql
60
+ CREATE TABLE memory_item (
61
+ id UUID PRIMARY KEY,
62
+ user_id TEXT NOT NULL,
63
+ project_id TEXT,
64
+ type TEXT CHECK (type IN ('working','episodic','semantic','procedural')),
65
+ content TEXT,
66
+ importance REAL,
67
+ privacy_scope TEXT CHECK (privacy_scope IN ('private','team','public')) DEFAULT 'private',
68
+ created_at TIMESTAMPTZ DEFAULT now(),
69
+ last_accessed TIMESTAMPTZ,
70
+ embedding vector(1536),
71
+ content_tsv tsvector GENERATED ALWAYS AS (to_tsvector('english', content)) STORED
72
+ );
73
+ CREATE INDEX ON memory_item USING ivfflat (embedding vector_cosine_ops) WITH (lists = 100);
74
+ CREATE INDEX ON memory_item USING GIN (content_tsv);
75
+ ```
76
+
77
+ - **Authentication**: JWT-based user-specific tokens (including user_id claim)
78
+ - **Security**: Internal network or VPN restriction
79
+ - **Operation**: Docker Compose (Memory Server + Postgres)
80
+
81
+ ### 🔹 M4. Organization Expansion (High Availability + Enterprise Security)
82
+
83
+ - **DB**: Postgres cluster (HA configuration, cloud RDS possible)
84
+ - **Authentication**: JWT + RBAC + SSO/LDAP integration
85
+ - **Permission Model**:
86
+ - privacy_scope: private/team/public
87
+ - project_id: workspace unit
88
+ - RBAC (Role-Based Access Control) → admin/editor/viewer
89
+ - **Operation**: Kubernetes, Helm Chart deployment, monitoring (Prometheus)
90
+ - **Additional Features**: Auto archiving, backup/restore, GDPR-style deletion
91
+
92
+ ## 📦 MCP Interface (Common)
93
+
94
+ ### Tools
95
+
96
+ - `remember(content, type, tags?, importance?, privacy_scope?)`
97
+ - `recall(query, filters?, limit?)`
98
+ - `pin(id), unpin(id)`
99
+ - `forget(id, hard?)`
100
+ - `summarize_thread(session_id)`
101
+ - `link(src, dst, rel)`
102
+ - `export(format)`
103
+ - `feedback(memory_id, helpful?)`
104
+
105
+ ### Resources
106
+
107
+ - `memory/{id}`
108
+ - `memory/search?query=...`
109
+
110
+ ### Prompts
111
+
112
+ - `memory_injection(query, token_budget)` → Inject top K related memories summarized
113
+
114
+ ## 🔐 Security Model Summary
115
+
116
+ - **M1**: None (local only)
117
+ - **M2**: Single API Key (team shared)
118
+ - **M3**: JWT (user-specific tokens, can integrate with organization account server)
119
+ - **M4**: JWT + RBAC + SSO/LDAP → Enterprise security policy compliance
120
+
121
+ ## 📑 Migration Guide Summary
122
+
123
+ 1. Extract memory_item.csv from SQLite
124
+ 2. Create schema in Postgres (pgvector, tsvector)
125
+ 3. CSV import → `\copy`
126
+ 4. Recalculate and update embeddings
127
+ 5. Replace only DB driver in MCP Memory Server
128
+
129
+ ## ✅ Checklist
130
+
131
+ - [ ] Personal SQLite server completed
132
+ - [ ] Team stage Docker deployment + API Key applied
133
+ - [ ] Postgres migration documentation completed
134
+ - [ ] Organization stage JWT authentication integration
135
+ - [ ] Roadmap for SSO/LDAP integration confirmed