db-mcp 1.1.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (508) hide show
  1. package/README.md +247 -169
  2. package/dist/.tsbuildinfo +1 -0
  3. package/dist/adapters/database-adapter.d.ts +173 -0
  4. package/dist/adapters/database-adapter.d.ts.map +1 -0
  5. package/dist/adapters/query-validation.d.ts +20 -0
  6. package/dist/adapters/query-validation.d.ts.map +1 -0
  7. package/dist/adapters/registration/index.d.ts +4 -0
  8. package/dist/adapters/registration/index.d.ts.map +1 -0
  9. package/dist/adapters/registration/prompts.d.ts +7 -0
  10. package/dist/adapters/registration/prompts.d.ts.map +1 -0
  11. package/dist/adapters/registration/resources.d.ts +7 -0
  12. package/dist/adapters/registration/resources.d.ts.map +1 -0
  13. package/dist/adapters/registration/tools.d.ts +9 -0
  14. package/dist/adapters/registration/tools.d.ts.map +1 -0
  15. package/dist/adapters/sqlite/index.d.ts +9 -0
  16. package/dist/adapters/sqlite/index.d.ts.map +1 -0
  17. package/dist/adapters/sqlite/json-utils.d.ts +100 -0
  18. package/dist/adapters/sqlite/json-utils.d.ts.map +1 -0
  19. package/dist/adapters/sqlite/prompts/analysis.d.ts +23 -0
  20. package/dist/adapters/sqlite/prompts/analysis.d.ts.map +1 -0
  21. package/dist/adapters/sqlite/prompts/index.d.ts +16 -0
  22. package/dist/adapters/sqlite/prompts/index.d.ts.map +1 -0
  23. package/dist/adapters/sqlite/prompts/query.d.ts +19 -0
  24. package/dist/adapters/sqlite/prompts/query.d.ts.map +1 -0
  25. package/dist/adapters/sqlite/prompts/schema.d.ts +20 -0
  26. package/dist/adapters/sqlite/prompts/schema.d.ts.map +1 -0
  27. package/dist/adapters/sqlite/query-executor.d.ts +38 -0
  28. package/dist/adapters/sqlite/query-executor.d.ts.map +1 -0
  29. package/dist/adapters/sqlite/resources.d.ts +13 -0
  30. package/dist/adapters/sqlite/resources.d.ts.map +1 -0
  31. package/dist/adapters/sqlite/schema-manager.d.ts +69 -0
  32. package/dist/adapters/sqlite/schema-manager.d.ts.map +1 -0
  33. package/dist/adapters/sqlite/schemas/admin.d.ts +459 -0
  34. package/dist/adapters/sqlite/schemas/admin.d.ts.map +1 -0
  35. package/dist/adapters/sqlite/schemas/codemode.d.ts +30 -0
  36. package/dist/adapters/sqlite/schemas/codemode.d.ts.map +1 -0
  37. package/dist/adapters/sqlite/schemas/common.d.ts +9 -0
  38. package/dist/adapters/sqlite/schemas/common.d.ts.map +1 -0
  39. package/dist/adapters/sqlite/schemas/core.d.ts +530 -0
  40. package/dist/adapters/sqlite/schemas/core.d.ts.map +1 -0
  41. package/dist/adapters/sqlite/schemas/error-mixin.d.ts +10 -0
  42. package/dist/adapters/sqlite/schemas/error-mixin.d.ts.map +1 -0
  43. package/dist/adapters/sqlite/schemas/fts.d.ts +106 -0
  44. package/dist/adapters/sqlite/schemas/fts.d.ts.map +1 -0
  45. package/dist/adapters/sqlite/schemas/geo.d.ts +135 -0
  46. package/dist/adapters/sqlite/schemas/geo.d.ts.map +1 -0
  47. package/dist/adapters/sqlite/schemas/index.d.ts +23 -0
  48. package/dist/adapters/sqlite/schemas/index.d.ts.map +1 -0
  49. package/dist/adapters/sqlite/schemas/introspection.d.ts +583 -0
  50. package/dist/adapters/sqlite/schemas/introspection.d.ts.map +1 -0
  51. package/dist/adapters/sqlite/schemas/json.d.ts +849 -0
  52. package/dist/adapters/sqlite/schemas/json.d.ts.map +1 -0
  53. package/dist/adapters/sqlite/schemas/migration.d.ts +220 -0
  54. package/dist/adapters/sqlite/schemas/migration.d.ts.map +1 -0
  55. package/dist/adapters/sqlite/schemas/native.d.ts +235 -0
  56. package/dist/adapters/sqlite/schemas/native.d.ts.map +1 -0
  57. package/dist/adapters/sqlite/schemas/server.d.ts +13 -0
  58. package/dist/adapters/sqlite/schemas/server.d.ts.map +1 -0
  59. package/dist/adapters/sqlite/schemas/spatialite.d.ts +114 -0
  60. package/dist/adapters/sqlite/schemas/spatialite.d.ts.map +1 -0
  61. package/dist/adapters/sqlite/schemas/stats.d.ts +780 -0
  62. package/dist/adapters/sqlite/schemas/stats.d.ts.map +1 -0
  63. package/dist/adapters/sqlite/schemas/text.d.ts +570 -0
  64. package/dist/adapters/sqlite/schemas/text.d.ts.map +1 -0
  65. package/dist/adapters/sqlite/schemas/vector.d.ts +252 -0
  66. package/dist/adapters/sqlite/schemas/vector.d.ts.map +1 -0
  67. package/dist/adapters/sqlite/schemas/virtual.d.ts +257 -0
  68. package/dist/adapters/sqlite/schemas/virtual.d.ts.map +1 -0
  69. package/dist/adapters/sqlite/schemas/where.d.ts +20 -0
  70. package/dist/adapters/sqlite/schemas/where.d.ts.map +1 -0
  71. package/dist/adapters/sqlite/sqlite-adapter/lifecycle.d.ts +13 -0
  72. package/dist/adapters/sqlite/sqlite-adapter/lifecycle.d.ts.map +1 -0
  73. package/dist/adapters/sqlite/sqlite-adapter/schema.d.ts +7 -0
  74. package/dist/adapters/sqlite/sqlite-adapter/schema.d.ts.map +1 -0
  75. package/dist/adapters/sqlite/sqlite-adapter.d.ts +138 -0
  76. package/dist/adapters/sqlite/sqlite-adapter.d.ts.map +1 -0
  77. package/dist/adapters/sqlite/tools/admin/backup/analyze.d.ts +7 -0
  78. package/dist/adapters/sqlite/tools/admin/backup/analyze.d.ts.map +1 -0
  79. package/dist/adapters/sqlite/tools/admin/backup/create.d.ts +11 -0
  80. package/dist/adapters/sqlite/tools/admin/backup/create.d.ts.map +1 -0
  81. package/dist/adapters/sqlite/tools/admin/backup/dump.d.ts +7 -0
  82. package/dist/adapters/sqlite/tools/admin/backup/dump.d.ts.map +1 -0
  83. package/dist/adapters/sqlite/tools/admin/backup/index.d.ts +7 -0
  84. package/dist/adapters/sqlite/tools/admin/backup/index.d.ts.map +1 -0
  85. package/dist/adapters/sqlite/tools/admin/backup/integrity.d.ts +7 -0
  86. package/dist/adapters/sqlite/tools/admin/backup/integrity.d.ts.map +1 -0
  87. package/dist/adapters/sqlite/tools/admin/backup/optimize.d.ts +7 -0
  88. package/dist/adapters/sqlite/tools/admin/backup/optimize.d.ts.map +1 -0
  89. package/dist/adapters/sqlite/tools/admin/backup/restore.d.ts +7 -0
  90. package/dist/adapters/sqlite/tools/admin/backup/restore.d.ts.map +1 -0
  91. package/dist/adapters/sqlite/tools/admin/helpers.d.ts +18 -0
  92. package/dist/adapters/sqlite/tools/admin/helpers.d.ts.map +1 -0
  93. package/dist/adapters/sqlite/tools/admin/index.d.ts +10 -0
  94. package/dist/adapters/sqlite/tools/admin/index.d.ts.map +1 -0
  95. package/dist/adapters/sqlite/tools/admin/pragma.d.ts +37 -0
  96. package/dist/adapters/sqlite/tools/admin/pragma.d.ts.map +1 -0
  97. package/dist/adapters/sqlite/tools/admin/reindex.d.ts +10 -0
  98. package/dist/adapters/sqlite/tools/admin/reindex.d.ts.map +1 -0
  99. package/dist/adapters/sqlite/tools/admin/verify.d.ts +13 -0
  100. package/dist/adapters/sqlite/tools/admin/verify.d.ts.map +1 -0
  101. package/dist/adapters/sqlite/tools/admin/wal.d.ts +10 -0
  102. package/dist/adapters/sqlite/tools/admin/wal.d.ts.map +1 -0
  103. package/dist/adapters/sqlite/tools/codemode.d.ts +22 -0
  104. package/dist/adapters/sqlite/tools/codemode.d.ts.map +1 -0
  105. package/dist/adapters/sqlite/tools/column-validation.d.ts +26 -0
  106. package/dist/adapters/sqlite/tools/column-validation.d.ts.map +1 -0
  107. package/dist/adapters/sqlite/tools/core/alter-table.d.ts +11 -0
  108. package/dist/adapters/sqlite/tools/core/alter-table.d.ts.map +1 -0
  109. package/dist/adapters/sqlite/tools/core/constraints.d.ts +10 -0
  110. package/dist/adapters/sqlite/tools/core/constraints.d.ts.map +1 -0
  111. package/dist/adapters/sqlite/tools/core/convenience-helpers.d.ts +20 -0
  112. package/dist/adapters/sqlite/tools/core/convenience-helpers.d.ts.map +1 -0
  113. package/dist/adapters/sqlite/tools/core/convenience-schemas.d.ts +20 -0
  114. package/dist/adapters/sqlite/tools/core/convenience-schemas.d.ts.map +1 -0
  115. package/dist/adapters/sqlite/tools/core/convenience.d.ts +29 -0
  116. package/dist/adapters/sqlite/tools/core/convenience.d.ts.map +1 -0
  117. package/dist/adapters/sqlite/tools/core/datetime.d.ts +11 -0
  118. package/dist/adapters/sqlite/tools/core/datetime.d.ts.map +1 -0
  119. package/dist/adapters/sqlite/tools/core/index.d.ts +14 -0
  120. package/dist/adapters/sqlite/tools/core/index.d.ts.map +1 -0
  121. package/dist/adapters/sqlite/tools/core/indexes.d.ts +20 -0
  122. package/dist/adapters/sqlite/tools/core/indexes.d.ts.map +1 -0
  123. package/dist/adapters/sqlite/tools/core/queries.d.ts +16 -0
  124. package/dist/adapters/sqlite/tools/core/queries.d.ts.map +1 -0
  125. package/dist/adapters/sqlite/tools/core/tables.d.ts +37 -0
  126. package/dist/adapters/sqlite/tools/core/tables.d.ts.map +1 -0
  127. package/dist/adapters/sqlite/tools/core/triggers.d.ts +18 -0
  128. package/dist/adapters/sqlite/tools/core/triggers.d.ts.map +1 -0
  129. package/dist/adapters/sqlite/tools/fts.d.ts +13 -0
  130. package/dist/adapters/sqlite/tools/fts.d.ts.map +1 -0
  131. package/dist/adapters/sqlite/tools/geo.d.ts +14 -0
  132. package/dist/adapters/sqlite/tools/geo.d.ts.map +1 -0
  133. package/dist/adapters/sqlite/tools/index.d.ts +33 -0
  134. package/dist/adapters/sqlite/tools/index.d.ts.map +1 -0
  135. package/dist/adapters/sqlite/tools/introspection/analysis/constraints.d.ts +10 -0
  136. package/dist/adapters/sqlite/tools/introspection/analysis/constraints.d.ts.map +1 -0
  137. package/dist/adapters/sqlite/tools/introspection/analysis/diff.d.ts +11 -0
  138. package/dist/adapters/sqlite/tools/introspection/analysis/diff.d.ts.map +1 -0
  139. package/dist/adapters/sqlite/tools/introspection/analysis/index.d.ts +10 -0
  140. package/dist/adapters/sqlite/tools/introspection/analysis/index.d.ts.map +1 -0
  141. package/dist/adapters/sqlite/tools/introspection/analysis/risks.d.ts +9 -0
  142. package/dist/adapters/sqlite/tools/introspection/analysis/risks.d.ts.map +1 -0
  143. package/dist/adapters/sqlite/tools/introspection/analysis/snapshot.d.ts +40 -0
  144. package/dist/adapters/sqlite/tools/introspection/analysis/snapshot.d.ts.map +1 -0
  145. package/dist/adapters/sqlite/tools/introspection/diagnostics/index.d.ts +9 -0
  146. package/dist/adapters/sqlite/tools/introspection/diagnostics/index.d.ts.map +1 -0
  147. package/dist/adapters/sqlite/tools/introspection/diagnostics/indexes.d.ts +10 -0
  148. package/dist/adapters/sqlite/tools/introspection/diagnostics/indexes.d.ts.map +1 -0
  149. package/dist/adapters/sqlite/tools/introspection/diagnostics/query-plan.d.ts +10 -0
  150. package/dist/adapters/sqlite/tools/introspection/diagnostics/query-plan.d.ts.map +1 -0
  151. package/dist/adapters/sqlite/tools/introspection/diagnostics/storage.d.ts +10 -0
  152. package/dist/adapters/sqlite/tools/introspection/diagnostics/storage.d.ts.map +1 -0
  153. package/dist/adapters/sqlite/tools/introspection/graph/helpers.d.ts +44 -0
  154. package/dist/adapters/sqlite/tools/introspection/graph/helpers.d.ts.map +1 -0
  155. package/dist/adapters/sqlite/tools/introspection/graph/index.d.ts +9 -0
  156. package/dist/adapters/sqlite/tools/introspection/graph/index.d.ts.map +1 -0
  157. package/dist/adapters/sqlite/tools/introspection/graph/tools.d.ts +12 -0
  158. package/dist/adapters/sqlite/tools/introspection/graph/tools.d.ts.map +1 -0
  159. package/dist/adapters/sqlite/tools/introspection/index.d.ts +17 -0
  160. package/dist/adapters/sqlite/tools/introspection/index.d.ts.map +1 -0
  161. package/dist/adapters/sqlite/tools/json-helpers/helpers.d.ts +21 -0
  162. package/dist/adapters/sqlite/tools/json-helpers/helpers.d.ts.map +1 -0
  163. package/dist/adapters/sqlite/tools/json-helpers/index.d.ts +17 -0
  164. package/dist/adapters/sqlite/tools/json-helpers/index.d.ts.map +1 -0
  165. package/dist/adapters/sqlite/tools/json-helpers/read.d.ts +24 -0
  166. package/dist/adapters/sqlite/tools/json-helpers/read.d.ts.map +1 -0
  167. package/dist/adapters/sqlite/tools/json-helpers/write.d.ts +24 -0
  168. package/dist/adapters/sqlite/tools/json-helpers/write.d.ts.map +1 -0
  169. package/dist/adapters/sqlite/tools/json-operations/crud.d.ts +39 -0
  170. package/dist/adapters/sqlite/tools/json-operations/crud.d.ts.map +1 -0
  171. package/dist/adapters/sqlite/tools/json-operations/diff.d.ts +11 -0
  172. package/dist/adapters/sqlite/tools/json-operations/diff.d.ts.map +1 -0
  173. package/dist/adapters/sqlite/tools/json-operations/helpers.d.ts +18 -0
  174. package/dist/adapters/sqlite/tools/json-operations/helpers.d.ts.map +1 -0
  175. package/dist/adapters/sqlite/tools/json-operations/index.d.ts +10 -0
  176. package/dist/adapters/sqlite/tools/json-operations/index.d.ts.map +1 -0
  177. package/dist/adapters/sqlite/tools/json-operations/query.d.ts +24 -0
  178. package/dist/adapters/sqlite/tools/json-operations/query.d.ts.map +1 -0
  179. package/dist/adapters/sqlite/tools/json-operations/security.d.ts +19 -0
  180. package/dist/adapters/sqlite/tools/json-operations/security.d.ts.map +1 -0
  181. package/dist/adapters/sqlite/tools/json-operations/transform.d.ts +24 -0
  182. package/dist/adapters/sqlite/tools/json-operations/transform.d.ts.map +1 -0
  183. package/dist/adapters/sqlite/tools/migration/helpers.d.ts +34 -0
  184. package/dist/adapters/sqlite/tools/migration/helpers.d.ts.map +1 -0
  185. package/dist/adapters/sqlite/tools/migration/index.d.ts +15 -0
  186. package/dist/adapters/sqlite/tools/migration/index.d.ts.map +1 -0
  187. package/dist/adapters/sqlite/tools/migration/tracking/apply.d.ts +4 -0
  188. package/dist/adapters/sqlite/tools/migration/tracking/apply.d.ts.map +1 -0
  189. package/dist/adapters/sqlite/tools/migration/tracking/history.d.ts +4 -0
  190. package/dist/adapters/sqlite/tools/migration/tracking/history.d.ts.map +1 -0
  191. package/dist/adapters/sqlite/tools/migration/tracking/index.d.ts +7 -0
  192. package/dist/adapters/sqlite/tools/migration/tracking/index.d.ts.map +1 -0
  193. package/dist/adapters/sqlite/tools/migration/tracking/init.d.ts +4 -0
  194. package/dist/adapters/sqlite/tools/migration/tracking/init.d.ts.map +1 -0
  195. package/dist/adapters/sqlite/tools/migration/tracking/record.d.ts +4 -0
  196. package/dist/adapters/sqlite/tools/migration/tracking/record.d.ts.map +1 -0
  197. package/dist/adapters/sqlite/tools/migration/tracking/rollback.d.ts +4 -0
  198. package/dist/adapters/sqlite/tools/migration/tracking/rollback.d.ts.map +1 -0
  199. package/dist/adapters/sqlite/tools/migration/tracking/status.d.ts +4 -0
  200. package/dist/adapters/sqlite/tools/migration/tracking/status.d.ts.map +1 -0
  201. package/dist/adapters/sqlite/tools/stats/advanced.d.ts +28 -0
  202. package/dist/adapters/sqlite/tools/stats/advanced.d.ts.map +1 -0
  203. package/dist/adapters/sqlite/tools/stats/anomaly-detection.d.ts +22 -0
  204. package/dist/adapters/sqlite/tools/stats/anomaly-detection.d.ts.map +1 -0
  205. package/dist/adapters/sqlite/tools/stats/basic.d.ts +32 -0
  206. package/dist/adapters/sqlite/tools/stats/basic.d.ts.map +1 -0
  207. package/dist/adapters/sqlite/tools/stats/helpers.d.ts +27 -0
  208. package/dist/adapters/sqlite/tools/stats/helpers.d.ts.map +1 -0
  209. package/dist/adapters/sqlite/tools/stats/index.d.ts +12 -0
  210. package/dist/adapters/sqlite/tools/stats/index.d.ts.map +1 -0
  211. package/dist/adapters/sqlite/tools/stats/inference/hypothesis.d.ts +7 -0
  212. package/dist/adapters/sqlite/tools/stats/inference/hypothesis.d.ts.map +1 -0
  213. package/dist/adapters/sqlite/tools/stats/inference/index.d.ts +4 -0
  214. package/dist/adapters/sqlite/tools/stats/inference/index.d.ts.map +1 -0
  215. package/dist/adapters/sqlite/tools/stats/inference/outlier.d.ts +7 -0
  216. package/dist/adapters/sqlite/tools/stats/inference/outlier.d.ts.map +1 -0
  217. package/dist/adapters/sqlite/tools/stats/inference/regression.d.ts +7 -0
  218. package/dist/adapters/sqlite/tools/stats/inference/regression.d.ts.map +1 -0
  219. package/dist/adapters/sqlite/tools/stats/math-helpers.d.ts +17 -0
  220. package/dist/adapters/sqlite/tools/stats/math-helpers.d.ts.map +1 -0
  221. package/dist/adapters/sqlite/tools/stats/schema-risks.d.ts +15 -0
  222. package/dist/adapters/sqlite/tools/stats/schema-risks.d.ts.map +1 -0
  223. package/dist/adapters/sqlite/tools/text/formatting.d.ts +48 -0
  224. package/dist/adapters/sqlite/tools/text/formatting.d.ts.map +1 -0
  225. package/dist/adapters/sqlite/tools/text/helpers.d.ts +22 -0
  226. package/dist/adapters/sqlite/tools/text/helpers.d.ts.map +1 -0
  227. package/dist/adapters/sqlite/tools/text/index.d.ts +10 -0
  228. package/dist/adapters/sqlite/tools/text/index.d.ts.map +1 -0
  229. package/dist/adapters/sqlite/tools/text/regex.d.ts +21 -0
  230. package/dist/adapters/sqlite/tools/text/regex.d.ts.map +1 -0
  231. package/dist/adapters/sqlite/tools/text/search.d.ts +17 -0
  232. package/dist/adapters/sqlite/tools/text/search.d.ts.map +1 -0
  233. package/dist/adapters/sqlite/tools/text/sentiment.d.ts +13 -0
  234. package/dist/adapters/sqlite/tools/text/sentiment.d.ts.map +1 -0
  235. package/dist/adapters/sqlite/tools/text/validate.d.ts +11 -0
  236. package/dist/adapters/sqlite/tools/text/validate.d.ts.map +1 -0
  237. package/dist/adapters/sqlite/tools/vector/helpers.d.ts +11 -0
  238. package/dist/adapters/sqlite/tools/vector/helpers.d.ts.map +1 -0
  239. package/dist/adapters/sqlite/tools/vector/index.d.ts +14 -0
  240. package/dist/adapters/sqlite/tools/vector/index.d.ts.map +1 -0
  241. package/dist/adapters/sqlite/tools/vector/metadata.d.ts +28 -0
  242. package/dist/adapters/sqlite/tools/vector/metadata.d.ts.map +1 -0
  243. package/dist/adapters/sqlite/tools/vector/search.d.ts +16 -0
  244. package/dist/adapters/sqlite/tools/vector/search.d.ts.map +1 -0
  245. package/dist/adapters/sqlite/tools/vector/storage.d.ts +24 -0
  246. package/dist/adapters/sqlite/tools/vector/storage.d.ts.map +1 -0
  247. package/dist/adapters/sqlite/tools/vector/tools.d.ts +9 -0
  248. package/dist/adapters/sqlite/tools/vector/tools.d.ts.map +1 -0
  249. package/dist/adapters/sqlite/tools/virtual/analysis.d.ts +24 -0
  250. package/dist/adapters/sqlite/tools/virtual/analysis.d.ts.map +1 -0
  251. package/dist/adapters/sqlite/tools/virtual/extensions.d.ts +13 -0
  252. package/dist/adapters/sqlite/tools/virtual/extensions.d.ts.map +1 -0
  253. package/dist/adapters/sqlite/tools/virtual/helpers.d.ts +18 -0
  254. package/dist/adapters/sqlite/tools/virtual/helpers.d.ts.map +1 -0
  255. package/dist/adapters/sqlite/tools/virtual/index.d.ts +10 -0
  256. package/dist/adapters/sqlite/tools/virtual/index.d.ts.map +1 -0
  257. package/dist/adapters/sqlite/tools/virtual/views.d.ts +21 -0
  258. package/dist/adapters/sqlite/tools/virtual/views.d.ts.map +1 -0
  259. package/dist/adapters/sqlite/tools/virtual/vtable/analyze-csv.d.ts +4 -0
  260. package/dist/adapters/sqlite/tools/virtual/vtable/analyze-csv.d.ts.map +1 -0
  261. package/dist/adapters/sqlite/tools/virtual/vtable/csv.d.ts +4 -0
  262. package/dist/adapters/sqlite/tools/virtual/vtable/csv.d.ts.map +1 -0
  263. package/dist/adapters/sqlite/tools/virtual/vtable/drop.d.ts +4 -0
  264. package/dist/adapters/sqlite/tools/virtual/vtable/drop.d.ts.map +1 -0
  265. package/dist/adapters/sqlite/tools/virtual/vtable/index.d.ts +6 -0
  266. package/dist/adapters/sqlite/tools/virtual/vtable/index.d.ts.map +1 -0
  267. package/dist/adapters/sqlite/tools/virtual/vtable/info.d.ts +4 -0
  268. package/dist/adapters/sqlite/tools/virtual/vtable/info.d.ts.map +1 -0
  269. package/dist/adapters/sqlite/tools/virtual/vtable/list.d.ts +4 -0
  270. package/dist/adapters/sqlite/tools/virtual/vtable/list.d.ts.map +1 -0
  271. package/dist/adapters/sqlite/types.d.ts +89 -0
  272. package/dist/adapters/sqlite/types.d.ts.map +1 -0
  273. package/dist/adapters/sqlite-helpers.d.ts +51 -0
  274. package/dist/adapters/sqlite-helpers.d.ts.map +1 -0
  275. package/dist/adapters/sqlite-native/extensions.d.ts +17 -0
  276. package/dist/adapters/sqlite-native/extensions.d.ts.map +1 -0
  277. package/dist/adapters/sqlite-native/index.d.ts +11 -0
  278. package/dist/adapters/sqlite-native/index.d.ts.map +1 -0
  279. package/dist/adapters/sqlite-native/native-query-executor.d.ts +24 -0
  280. package/dist/adapters/sqlite-native/native-query-executor.d.ts.map +1 -0
  281. package/dist/adapters/sqlite-native/native-sqlite-adapter.d.ts +160 -0
  282. package/dist/adapters/sqlite-native/native-sqlite-adapter.d.ts.map +1 -0
  283. package/dist/adapters/sqlite-native/registration/index.d.ts +12 -0
  284. package/dist/adapters/sqlite-native/registration/index.d.ts.map +1 -0
  285. package/dist/adapters/sqlite-native/tools/spatialite/analysis.d.ts +23 -0
  286. package/dist/adapters/sqlite-native/tools/spatialite/analysis.d.ts.map +1 -0
  287. package/dist/adapters/sqlite-native/tools/spatialite/index.d.ts +15 -0
  288. package/dist/adapters/sqlite-native/tools/spatialite/index.d.ts.map +1 -0
  289. package/dist/adapters/sqlite-native/tools/spatialite/loader.d.ts +22 -0
  290. package/dist/adapters/sqlite-native/tools/spatialite/loader.d.ts.map +1 -0
  291. package/dist/adapters/sqlite-native/tools/spatialite/schemas.d.ts +78 -0
  292. package/dist/adapters/sqlite-native/tools/spatialite/schemas.d.ts.map +1 -0
  293. package/dist/adapters/sqlite-native/tools/spatialite/tools.d.ts +30 -0
  294. package/dist/adapters/sqlite-native/tools/spatialite/tools.d.ts.map +1 -0
  295. package/dist/adapters/sqlite-native/tools/transactions.d.ts +12 -0
  296. package/dist/adapters/sqlite-native/tools/transactions.d.ts.map +1 -0
  297. package/dist/adapters/sqlite-native/tools/window.d.ts +7 -0
  298. package/dist/adapters/sqlite-native/tools/window.d.ts.map +1 -0
  299. package/dist/adapters/sqlite-native/transaction-methods.d.ts +36 -0
  300. package/dist/adapters/sqlite-native/transaction-methods.d.ts.map +1 -0
  301. package/dist/audit/backup-manager.d.ts +90 -0
  302. package/dist/audit/backup-manager.d.ts.map +1 -0
  303. package/dist/audit/index.d.ts +11 -0
  304. package/dist/audit/index.d.ts.map +1 -0
  305. package/dist/audit/interceptor.d.ts +54 -0
  306. package/dist/audit/interceptor.d.ts.map +1 -0
  307. package/dist/audit/logger.d.ts +62 -0
  308. package/dist/audit/logger.d.ts.map +1 -0
  309. package/dist/audit/types.d.ts +112 -0
  310. package/dist/audit/types.d.ts.map +1 -0
  311. package/dist/auth/auth-context.d.ts +28 -0
  312. package/dist/auth/auth-context.d.ts.map +1 -0
  313. package/dist/auth/authorization-server-discovery.d.ts +90 -0
  314. package/dist/auth/authorization-server-discovery.d.ts.map +1 -0
  315. package/dist/auth/errors.d.ts +74 -0
  316. package/dist/auth/errors.d.ts.map +1 -0
  317. package/dist/auth/middleware/core.d.ts +22 -0
  318. package/dist/auth/middleware/core.d.ts.map +1 -0
  319. package/dist/auth/middleware/express-auth.d.ts +13 -0
  320. package/dist/auth/middleware/express-auth.d.ts.map +1 -0
  321. package/dist/auth/middleware/express-scopes.d.ts +6 -0
  322. package/dist/auth/middleware/express-scopes.d.ts.map +1 -0
  323. package/dist/auth/middleware/extraction.d.ts +2 -0
  324. package/dist/auth/middleware/extraction.d.ts.map +1 -0
  325. package/dist/auth/middleware/index.d.ts +5 -0
  326. package/dist/auth/middleware/index.d.ts.map +1 -0
  327. package/dist/auth/oauth-resource-server.d.ts +74 -0
  328. package/dist/auth/oauth-resource-server.d.ts.map +1 -0
  329. package/dist/auth/scope-map.d.ts +24 -0
  330. package/dist/auth/scope-map.d.ts.map +1 -0
  331. package/dist/auth/scopes/constants.d.ts +40 -0
  332. package/dist/auth/scopes/constants.d.ts.map +1 -0
  333. package/dist/auth/scopes/display.d.ts +5 -0
  334. package/dist/auth/scopes/display.d.ts.map +1 -0
  335. package/dist/auth/scopes/enforcement.d.ts +27 -0
  336. package/dist/auth/scopes/enforcement.d.ts.map +1 -0
  337. package/dist/auth/scopes/index.d.ts +6 -0
  338. package/dist/auth/scopes/index.d.ts.map +1 -0
  339. package/dist/auth/scopes/mapping.d.ts +39 -0
  340. package/dist/auth/scopes/mapping.d.ts.map +1 -0
  341. package/dist/auth/scopes/validation.d.ts +27 -0
  342. package/dist/auth/scopes/validation.d.ts.map +1 -0
  343. package/dist/auth/token-validator.d.ts +63 -0
  344. package/dist/auth/token-validator.d.ts.map +1 -0
  345. package/dist/auth/transport-agnostic.d.ts +11 -0
  346. package/dist/auth/transport-agnostic.d.ts.map +1 -0
  347. package/dist/auth/types.d.ts +257 -0
  348. package/dist/auth/types.d.ts.map +1 -0
  349. package/dist/chunk-E5IESRTK.js +489 -0
  350. package/dist/{chunk-TVIZ3XJH.js → chunk-FR65YPAH.js} +8509 -3925
  351. package/dist/{chunk-AOUL5SHS.js → chunk-L552U3QS.js} +880 -252
  352. package/dist/chunk-THATOQRT.js +2624 -0
  353. package/dist/chunk-W5WQVNVX.js +568 -0
  354. package/dist/cli.d.ts +7 -0
  355. package/dist/cli.d.ts.map +1 -0
  356. package/dist/cli.js +114 -19
  357. package/dist/codemode/api-constants.d.ts +40 -0
  358. package/dist/codemode/api-constants.d.ts.map +1 -0
  359. package/dist/codemode/api.d.ts +70 -0
  360. package/dist/codemode/api.d.ts.map +1 -0
  361. package/dist/codemode/auto-return.d.ts +25 -0
  362. package/dist/codemode/auto-return.d.ts.map +1 -0
  363. package/dist/codemode/index.d.ts +12 -0
  364. package/dist/codemode/index.d.ts.map +1 -0
  365. package/dist/codemode/sandbox-factory.d.ts +72 -0
  366. package/dist/codemode/sandbox-factory.d.ts.map +1 -0
  367. package/dist/codemode/sandbox.d.ts +54 -0
  368. package/dist/codemode/sandbox.d.ts.map +1 -0
  369. package/dist/codemode/security.d.ts +45 -0
  370. package/dist/codemode/security.d.ts.map +1 -0
  371. package/dist/codemode/types.d.ts +167 -0
  372. package/dist/codemode/types.d.ts.map +1 -0
  373. package/dist/constants/server-instructions.d.ts +22 -0
  374. package/dist/constants/server-instructions.d.ts.map +1 -0
  375. package/dist/filtering/tool-constants.d.ts +45 -0
  376. package/dist/filtering/tool-constants.d.ts.map +1 -0
  377. package/dist/filtering/tool-filter.d.ts +82 -0
  378. package/dist/filtering/tool-filter.d.ts.map +1 -0
  379. package/dist/{http-VSB7DBJR.js → http-HWTUVFIA.js} +587 -358
  380. package/dist/index.d.ts +9 -842
  381. package/dist/index.d.ts.map +1 -0
  382. package/dist/index.js +4 -5
  383. package/dist/server/mcp-server.d.ts +66 -0
  384. package/dist/server/mcp-server.d.ts.map +1 -0
  385. package/dist/server/registration/audit-tools.d.ts +13 -0
  386. package/dist/server/registration/audit-tools.d.ts.map +1 -0
  387. package/dist/server/registration/built-in-tools.d.ts +8 -0
  388. package/dist/server/registration/built-in-tools.d.ts.map +1 -0
  389. package/dist/server/registration/help-resources.d.ts +7 -0
  390. package/dist/server/registration/help-resources.d.ts.map +1 -0
  391. package/dist/server/registration/index.d.ts +4 -0
  392. package/dist/server/registration/index.d.ts.map +1 -0
  393. package/dist/{sqlite-26V3Y4MK.js → sqlite-6C3AJI4I.js} +115 -147
  394. package/dist/{sqlite-native-5O7FZJGB.js → sqlite-native-ZSSWCTYC.js} +1016 -349
  395. package/dist/transports/http/index.d.ts +8 -0
  396. package/dist/transports/http/index.d.ts.map +1 -0
  397. package/dist/transports/http/middleware.d.ts +25 -0
  398. package/dist/transports/http/middleware.d.ts.map +1 -0
  399. package/dist/transports/http/oauth.d.ts +24 -0
  400. package/dist/transports/http/oauth.d.ts.map +1 -0
  401. package/dist/transports/http/session.d.ts +2 -0
  402. package/dist/transports/http/session.d.ts.map +1 -0
  403. package/dist/transports/http/sessions/index.d.ts +4 -0
  404. package/dist/transports/http/sessions/index.d.ts.map +1 -0
  405. package/dist/transports/http/sessions/legacy-sse.d.ts +6 -0
  406. package/dist/transports/http/sessions/legacy-sse.d.ts.map +1 -0
  407. package/dist/transports/http/sessions/mutex.d.ts +6 -0
  408. package/dist/transports/http/sessions/mutex.d.ts.map +1 -0
  409. package/dist/transports/http/sessions/stateful.d.ts +12 -0
  410. package/dist/transports/http/sessions/stateful.d.ts.map +1 -0
  411. package/dist/transports/http/sessions/stateless.d.ts +6 -0
  412. package/dist/transports/http/sessions/stateless.d.ts.map +1 -0
  413. package/dist/transports/http/transport.d.ts +65 -0
  414. package/dist/transports/http/transport.d.ts.map +1 -0
  415. package/dist/transports/http/type-adapters.d.ts +20 -0
  416. package/dist/transports/http/type-adapters.d.ts.map +1 -0
  417. package/dist/transports/http/types.d.ts +120 -0
  418. package/dist/transports/http/types.d.ts.map +1 -0
  419. package/dist/types/adapter.d.ts +138 -0
  420. package/dist/types/adapter.d.ts.map +1 -0
  421. package/dist/types/auth.d.ts +79 -0
  422. package/dist/types/auth.d.ts.map +1 -0
  423. package/dist/types/database.d.ts +100 -0
  424. package/dist/types/database.d.ts.map +1 -0
  425. package/dist/types/filtering.d.ts +41 -0
  426. package/dist/types/filtering.d.ts.map +1 -0
  427. package/dist/types/index.d.ts +13 -0
  428. package/dist/types/index.d.ts.map +1 -0
  429. package/dist/types/server.d.ts +48 -0
  430. package/dist/types/server.d.ts.map +1 -0
  431. package/dist/utils/annotations.d.ts +62 -0
  432. package/dist/utils/annotations.d.ts.map +1 -0
  433. package/dist/utils/errors/base.d.ts +33 -0
  434. package/dist/utils/errors/base.d.ts.map +1 -0
  435. package/dist/utils/errors/categories.d.ts +41 -0
  436. package/dist/utils/errors/categories.d.ts.map +1 -0
  437. package/dist/utils/errors/classes.d.ts +124 -0
  438. package/dist/utils/errors/classes.d.ts.map +1 -0
  439. package/dist/utils/errors/error-response-fields.d.ts +24 -0
  440. package/dist/utils/errors/error-response-fields.d.ts.map +1 -0
  441. package/dist/utils/errors/format.d.ts +74 -0
  442. package/dist/utils/errors/format.d.ts.map +1 -0
  443. package/dist/utils/errors/index.d.ts +11 -0
  444. package/dist/utils/errors/index.d.ts.map +1 -0
  445. package/dist/utils/errors/suggestions.d.ts +16 -0
  446. package/dist/utils/errors/suggestions.d.ts.map +1 -0
  447. package/dist/utils/icons.d.ts +19 -0
  448. package/dist/utils/icons.d.ts.map +1 -0
  449. package/dist/utils/identifiers.d.ts +121 -0
  450. package/dist/utils/identifiers.d.ts.map +1 -0
  451. package/dist/utils/index.d.ts +9 -0
  452. package/dist/utils/index.d.ts.map +1 -0
  453. package/dist/utils/insights-manager.d.ts +39 -0
  454. package/dist/utils/insights-manager.d.ts.map +1 -0
  455. package/dist/utils/logger/error-codes.d.ts +48 -0
  456. package/dist/utils/logger/error-codes.d.ts.map +1 -0
  457. package/dist/utils/logger/index.d.ts +22 -0
  458. package/dist/utils/logger/index.d.ts.map +1 -0
  459. package/dist/utils/logger/logger.d.ts +94 -0
  460. package/dist/utils/logger/logger.d.ts.map +1 -0
  461. package/dist/utils/logger/module-logger.d.ts +28 -0
  462. package/dist/utils/logger/module-logger.d.ts.map +1 -0
  463. package/dist/utils/logger/types.d.ts +36 -0
  464. package/dist/utils/logger/types.d.ts.map +1 -0
  465. package/dist/utils/progress-utils.d.ts +54 -0
  466. package/dist/utils/progress-utils.d.ts.map +1 -0
  467. package/dist/utils/redaction.d.ts +4 -0
  468. package/dist/utils/redaction.d.ts.map +1 -0
  469. package/dist/utils/resource-annotations.d.ts +36 -0
  470. package/dist/utils/resource-annotations.d.ts.map +1 -0
  471. package/dist/utils/validate-json-path.d.ts +43 -0
  472. package/dist/utils/validate-json-path.d.ts.map +1 -0
  473. package/dist/utils/validate-path.d.ts +37 -0
  474. package/dist/utils/validate-path.d.ts.map +1 -0
  475. package/dist/utils/where-clause.d.ts +42 -0
  476. package/dist/utils/where-clause.d.ts.map +1 -0
  477. package/dist/version.d.ts +10 -0
  478. package/dist/version.d.ts.map +1 -0
  479. package/package.json +33 -20
  480. package/.gitattributes +0 -2
  481. package/dist/chunk-4IA3DB5C.js +0 -135
  482. package/dist/chunk-FW7UCRLN.js +0 -82
  483. package/dist/chunk-RHVEZ42P.js +0 -873
  484. package/dist/chunk-Z2GFQU3G.js +0 -363
  485. package/dist/worker-script.d.ts +0 -2
  486. package/dist/worker-script.js +0 -126
  487. package/playwright.config.ts +0 -101
  488. package/scripts/generate-server-instructions.ts +0 -111
  489. package/server.json +0 -52
  490. package/test-server/README.md +0 -118
  491. package/test-server/code-map.md +0 -409
  492. package/test-server/fixtures/sample.csv +0 -6
  493. package/test-server/reset-database.ps1 +0 -373
  494. package/test-server/sample.csv +0 -11
  495. package/test-server/test-agent-experience.md +0 -243
  496. package/test-server/test-database.sql +0 -388
  497. package/test-server/test-group-tools.md +0 -861
  498. package/test-server/test-help-resources.mjs +0 -238
  499. package/test-server/test-preflight.md +0 -53
  500. package/test-server/test-prompts.md +0 -354
  501. package/test-server/test-resources.md +0 -245
  502. package/test-server/test-tool-annotations.mjs +0 -157
  503. package/test-server/test-tools-advanced-1.md +0 -517
  504. package/test-server/test-tools-advanced-2.md +0 -487
  505. package/test-server/test-tools-codemode.md +0 -629
  506. package/test-server/test-tools.md +0 -176
  507. package/test-server/tool-reference.md +0 -236
  508. package/tsconfig.test.json +0 -9
@@ -1,873 +0,0 @@
1
- import { VERSION, NAME, READ_ONLY, SERVER_ICONS } from './chunk-FW7UCRLN.js';
2
- import { parseToolFilter, getToolFilterFromEnv, logger, getFilterSummary, DbMcpError } from './chunk-AOUL5SHS.js';
3
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
4
- import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
5
-
6
- // src/constants/server-instructions.ts
7
- var INSTRUCTIONS = `# db-mcp (SQLite MCP Server)
8
-
9
- ## Quick Access
10
-
11
- | Purpose | Action |
12
- | --------------- | -------------------------- |
13
- | Health check | \`server_health\` tool |
14
- | Server info | \`server_info\` tool |
15
- | Database schema | \`sqlite://schema\` resource |
16
- | Tool help | \`sqlite://help\` resource |
17
-
18
- ## Built-in Tools
19
-
20
- \`server_info\`, \`server_health\`, \`list_adapters\` \u2014 always available.
21
-
22
- ## Help Resources
23
-
24
- Read \`sqlite://help\` for gotchas and critical usage patterns.
25
- Read \`sqlite://help/{group}\` for group-specific tool reference (json, text, stats, vector, geo, admin, introspection, migration).
26
- Only help resources for your enabled tool groups are registered.`;
27
- var HELP_CONTENT = /* @__PURE__ */ new Map([
28
- [
29
- "admin",
30
- `# db-mcp Help \u2014 Database Administration (33 Native / 26 WASM)
31
-
32
- ## Transactions (7 tools, Native only)
33
-
34
- \`\`\`javascript
35
- // Atomic multi-statement execution (preferred for simple cases)
36
- sqlite_transaction_execute({ statements: ["UPDATE a SET x=1", "UPDATE b SET y=2"] });
37
-
38
- // Manual transaction control
39
- sqlite_transaction_begin({ mode: "immediate" }); // or "deferred", "exclusive"
40
- sqlite_transaction_savepoint({ name: "checkpoint" });
41
- sqlite_transaction_rollback_to({ name: "checkpoint" });
42
- sqlite_transaction_release({ name: "checkpoint" });
43
- sqlite_transaction_commit();
44
- sqlite_transaction_rollback();
45
- \`\`\`
46
-
47
- ## Maintenance
48
-
49
- \`\`\`javascript
50
- sqlite_integrity_check({ maxErrors: 10 }); // check for corruption
51
- sqlite_optimize({ analyze: true, reindex: true }); // optimize performance
52
- sqlite_vacuum(); // reclaim space
53
- sqlite_analyze({ table: "orders" }); // update statistics for query planner
54
- sqlite_dbstat({ summarize: true }); // storage stats (\u26A0\uFE0F summarize native-only; WASM returns counts only)
55
- \`\`\`
56
-
57
- ## Backup/Restore (Native only)
58
-
59
- \`\`\`javascript
60
- sqlite_backup({ targetPath: "/path/to/backup.db" });
61
- sqlite_verify_backup({ backupPath: "/path/to/backup.db" }); // check integrity without restoring
62
- sqlite_restore({ sourcePath: "/path/to/backup.db" }); // \u26A0\uFE0F WARNING: Replaces current database
63
- \`\`\`
64
-
65
- ## PRAGMA
66
-
67
- \`\`\`javascript
68
- sqlite_pragma_settings({ pragma: "journal_mode" }); // get value
69
- sqlite_pragma_settings({ pragma: "cache_size", value: 10000 }); // set value
70
- sqlite_pragma_table_info({ table: "users" }); // column details
71
- sqlite_pragma_compile_options({ filter: "FTS" }); // \u26A0\uFE0F WASM may show FTS3, not FTS5
72
- sqlite_pragma_database_list(); // list attached databases
73
- sqlite_pragma_optimize(); // run PRAGMA optimize
74
- \`\`\`
75
-
76
- ## Index & Stats
77
-
78
- - \`sqlite_index_stats({ table: "orders" })\` \u2014 stats for explicit indexes
79
-
80
- ## Views
81
-
82
- \`\`\`javascript
83
- sqlite_create_view({ viewName: "active_orders", selectQuery: "SELECT * FROM orders WHERE status = 'active'" });
84
- sqlite_create_view({ viewName: "v", selectQuery: "...", replace: true }); // CREATE OR REPLACE
85
- sqlite_list_views(); // list all views
86
- sqlite_drop_view({ viewName: "active_orders" });
87
- \`\`\`
88
-
89
- ## Virtual Tables
90
-
91
- \`\`\`javascript
92
- sqlite_list_virtual_tables(); // list FTS5, R-Tree, CSV tables
93
- sqlite_virtual_table_info({ tableName: "articles_fts" }); // module and column info
94
- sqlite_drop_virtual_table({ tableName: "old_fts", ifExists: true });
95
- \`\`\`
96
-
97
- ## Generate Series (pure JS)
98
-
99
- \`\`\`javascript
100
- sqlite_generate_series({ start: 1, stop: 100, step: 5 }); // returns array of values
101
- // \u26A0\uFE0F Creates a REGULAR table (not virtual) \u2014 use sqlite_drop_table to remove
102
- sqlite_create_series_table({ tableName: "numbers", start: 1, stop: 1000 });
103
- \`\`\`
104
-
105
- ## R-Tree (Native only)
106
-
107
- \`\`\`javascript
108
- sqlite_create_rtree_table({ tableName: "locations_idx", dimensions: 2 }); // 2D: minX, maxX, minY, maxY
109
- // Returns graceful error with wasmLimitation: true in WASM
110
- \`\`\`
111
-
112
- ## CSV Virtual Tables (Native only)
113
-
114
- \u26A0\uFE0F Requires ABSOLUTE file paths
115
-
116
- \`\`\`javascript
117
- sqlite_analyze_csv_schema({ filePath: "/absolute/path/to/data.csv" }); // analyze CSV structure
118
- sqlite_create_csv_table({ tableName: "csv_data", filePath: "/absolute/path/to/data.csv" });
119
- \`\`\`
120
-
121
- ## Business Insights
122
-
123
- \`\`\`javascript
124
- sqlite_append_insight({ insight: "Q4 revenue increased 23% YoY" }); // add to memo://insights
125
- \`\`\``
126
- ],
127
- [
128
- "geo",
129
- `# db-mcp Help \u2014 Geospatial Operations (4 basic + 7 SpatiaLite)
130
-
131
- ## Basic Geo (always available \u2014 Haversine formula)
132
-
133
- \`\`\`javascript
134
- sqlite_geo_distance({ lat1: 40.7128, lon1: -74.006, lat2: 34.0522, lon2: -118.2437 }); // returns km
135
- sqlite_geo_bounding_box({
136
- table: "stores", latColumn: "lat", lonColumn: "lon",
137
- minLat: 40, maxLat: 41, minLon: -75, maxLon: -73,
138
- });
139
- sqlite_geo_nearby({
140
- table: "stores", latColumn: "lat", lonColumn: "lon",
141
- centerLat: 40.7, centerLon: -74, radius: 10, unit: "km",
142
- });
143
- sqlite_geo_cluster({ table: "customers", latColumn: "lat", lonColumn: "lon", gridSize: 0.1 });
144
- \`\`\`
145
-
146
- ## SpatiaLite (7 tools, Native only)
147
-
148
- \`\`\`javascript
149
- // Load extension first
150
- sqlite_spatialite_load(); // \u26A0\uFE0F Required before using other spatial tools
151
-
152
- // Create spatial table with geometry column
153
- sqlite_spatialite_create_table({ tableName: "places", geometryColumn: "geom", geometryType: "POINT", srid: 4326 });
154
-
155
- // Import data (WKT or GeoJSON)
156
- sqlite_spatialite_import({ tableName: "places", format: "wkt", data: "POINT(-73.99 40.75)", additionalData: { name: "NYC" } });
157
- sqlite_spatialite_import({ tableName: "places", format: "geojson", data: '{"type":"Point","coordinates":[-73.99,40.75]}' });
158
-
159
- // Spatial queries (SELECT only)
160
- sqlite_spatialite_query({ query: "SELECT name, AsText(geom) FROM places WHERE ST_Within(geom, ...)" });
161
-
162
- // Spatial analysis
163
- // analysisType: "spatial_extent" | "point_in_polygon" | "nearest_neighbor" | "distance_matrix"
164
- // \u26A0\uFE0F nearest_neighbor/distance_matrix return CARTESIAN distance (degrees), not geodetic (km/miles)
165
- // For same source/target table, use excludeSelf: true to avoid self-matches
166
- sqlite_spatialite_analyze({ analysisType: "spatial_extent", sourceTable: "places", geometryColumn: "geom" });
167
- sqlite_spatialite_analyze({ analysisType: "nearest_neighbor", sourceTable: "pts", targetTable: "pts", excludeSelf: true });
168
-
169
- // Geometry transforms
170
- // buffer: 'distance' = radius; simplify: 'distance' = tolerance (0.0001 for lat/lon)
171
- // \u26A0\uFE0F Buffer auto-simplifies output by default (tolerance=0.0001). Use simplifyTolerance: 0 to disable
172
- sqlite_spatialite_transform({ operation: "buffer", geometry1: "POINT(-73.99 40.75)", distance: 0.01 });
173
- sqlite_spatialite_transform({ operation: "simplify", geometry1: "...", distance: 0.001 });
174
-
175
- // Spatial index (R-Tree)
176
- sqlite_spatialite_index({ tableName: "places", geometryColumn: "geom", action: "create" }); // create, drop, or check
177
- \`\`\``
178
- ],
179
- [
180
- "gotchas",
181
- `# db-mcp Help \u2014 Gotchas & Code Mode
182
-
183
- ## \u26A0\uFE0F Critical Gotchas
184
-
185
- 1. **sqlite_write_query**: \u26D4 Only INSERT/UPDATE/DELETE \u2014 use \`sqlite_read_query\` for SELECT
186
- 2. **Regex patterns**: Double-escape backslashes (\`\\\\\\\\\`) when passing through JSON/MCP
187
- 3. **FTS5 virtual tables**: \`*_fts\` and shadow tables \`*_fts_*\` are hidden from \`sqlite_list_tables\` for cleaner output
188
- 4. **FTS5 boolean logic**: Uses AND by default \u2014 \`"machine learning"\` = rows with BOTH words. Use OR explicitly: \`"machine OR learning"\`
189
- 5. **FTS5 rebuild**: After \`sqlite_fts_create\`, must call \`sqlite_fts_rebuild\` to populate index with existing data
190
- 6. **json_each row multiplication**: Expands arrays to rows \u2014 use \`limit\` param for large arrays
191
- 7. **json_group_object without groupByColumn**: Each row creates a key-value pair; duplicate keys result if key values aren't unique
192
- 8. **allowExpressions**: For column extraction ONLY (e.g., \`json_extract\`), NOT aggregate functions \u2014 use \`aggregateFunction\` param instead
193
- 9. **sqlite_json_normalize_column**: Defaults to \`preserve\` (maintains original format); use \`outputFormat: 'text'\` to force text
194
- 10. **Fuzzy matching tokenization**: Matches WORD TOKENS by default \u2014 \`"laptop"\` matches \`"Laptop Pro 15"\` (distance 0 on first token). Use \`tokenize: false\` for full-string matching
195
- 11. **SpatiaLite distances**: \`nearest_neighbor\`/\`distance_matrix\` return CARTESIAN distance (degrees), not geodetic (km/miles)
196
- 12. **SpatiaLite buffer**: Auto-simplifies output by default (tolerance=0.0001). Use \`simplifyTolerance: 0\` to disable
197
- 13. **sqlite_stats_top_n**: Auto-excludes long-content columns (description, body, notes, etc.) when \`selectColumns\` is omitted. Use \`selectColumns\` to override
198
- 14. **CSV virtual tables**: Require ABSOLUTE file paths
199
- 15. **sqlite_create_series_table**: Creates a REGULAR table (not virtual) \u2014 use \`sqlite_drop_table\` to remove
200
- 16. **sqlite_dbstat**: \`summarize\` only works in native; WASM returns counts only
201
- 17. **PRAGMA compile options**: WASM may show FTS3, not FTS5
202
-
203
- ## WASM vs Native
204
-
205
- | Feature | Native | WASM | Fallback |
206
- | ------------------------------------------------- | --------------------- | ----------- | ---------------- |
207
- | FTS5 full-text search | \u2705 | \u274C | None |
208
- | Transactions (7 tools) | \u2705 | \u274C | None |
209
- | Window functions (6 tools in stats group) | \u2705 | \u274C | None |
210
- | SpatiaLite GIS (7 tools; 4 basic geo always work) | \u2705 | \u274C | None |
211
- | Backup/Restore (3 tools) | \u2705 | \u274C | Graceful error |
212
- | R-Tree spatial indexing | \u2705 | \u274C | Graceful error |
213
- | CSV virtual tables | \u2705 | \u274C | Graceful error |
214
- | generate_series | JS fallback | JS fallback | \u2014 |
215
- | dbstat | \u2705 native (per-table) | \u274C | JS (counts only) |
216
- | soundex() | \u2705 native | \u274C | JS |
217
-
218
- ## Code Mode (1 tool)
219
-
220
- | Tool | Description |
221
- | --------------------- | ----------------------------------------------------------------- |
222
- | \`sqlite_execute_code\` | Execute JavaScript in a sandboxed environment with \`sqlite.*\` API |
223
-
224
- **Usage**: \`sqlite_execute_code({ code: "const tables = await sqlite.core.listTables(); return tables;" })\`
225
- **Discover**: \`sqlite.help()\` for all groups, \`sqlite.<group>.help()\` for methods.
226
- **Groups**: \`sqlite.core\`, \`sqlite.json\`, \`sqlite.text\`, \`sqlite.stats\`, \`sqlite.vector\`, \`sqlite.admin\`, \`sqlite.geo\`, \`sqlite.introspection\`, \`sqlite.migration\`
227
-
228
- ## Code Mode API Mapping
229
-
230
- \`sqlite_group_action\` \u2192 \`sqlite.group.action()\` (group prefixes dropped: \`sqlite_json_insert\` \u2192 \`sqlite.json.insert()\`)
231
-
232
- **Positional args work**: \`sqlite.core.readQuery("SELECT...")\`, \`sqlite.json.insert("docs", "data", {...})\`
233
-
234
- **Discovery**: \`sqlite.help()\` returns all groups and methods. \`sqlite.core.help()\`, \`sqlite.json.help()\` for group-specific methods.`
235
- ],
236
- [
237
- "introspection",
238
- `# db-mcp Help \u2014 Schema Introspection (9 tools)
239
-
240
- All introspection tools are **read-only** \u2014 they query PRAGMAs and sqlite_master, never modify data.
241
-
242
- ## Graph Analysis (3 tools)
243
-
244
- \`\`\`javascript
245
- // Build FK dependency graph \u2014 nodesOnly: true for lightweight response (nodes without edges)
246
- sqlite_dependency_graph({ includeRowCounts: true, excludeSystemTables: true });
247
- sqlite_dependency_graph({ nodesOnly: true }); // lighter payload
248
-
249
- // Safe DDL execution order \u2014 "create" = parents first (default), "drop" = children first
250
- sqlite_topological_sort({ direction: "create", excludeSystemTables: true });
251
- sqlite_topological_sort({ direction: "drop" }); // safe DROP order
252
-
253
- // Simulate DELETE/DROP/TRUNCATE impact \u2014 shows affected tables, cascade paths, severity scoring
254
- sqlite_cascade_simulator({ table: "users", operation: "delete" });
255
- sqlite_cascade_simulator({ table: "users", operation: "drop", compact: true }); // compact omits path arrays
256
- \`\`\`
257
-
258
- ## Schema Analysis (3 tools)
259
-
260
- \`\`\`javascript
261
- // Full schema in one call \u2014 compact: true omits column details, sections limits scope
262
- sqlite_schema_snapshot({ sections: ["tables", "indexes"], excludeSystemTables: true });
263
- sqlite_schema_snapshot({ compact: true }); // lighter payload
264
-
265
- // Find constraint health issues \u2014 missing PKs, nullable FKs, unindexed FKs
266
- sqlite_constraint_analysis({ excludeSystemTables: true });
267
- sqlite_constraint_analysis({ table: "orders", checks: ["missing_pk", "unindexed_fk"] }); // limit scope
268
-
269
- // Analyze DDL for SQLite-specific risks \u2014 does NOT execute the statements
270
- sqlite_migration_risks({ statements: ["ALTER TABLE users ADD COLUMN email TEXT", "DROP TABLE old_logs"] });
271
- \`\`\`
272
-
273
- ## Diagnostics (3 tools)
274
-
275
- \`\`\`javascript
276
- // Fragmentation, per-table size breakdown, optimization recommendations
277
- sqlite_storage_analysis({ includeTableDetails: true, excludeSystemTables: true });
278
- sqlite_storage_analysis({ limit: 10 }); // top 10 tables only
279
-
280
- // Audit index effectiveness \u2014 find redundant, missing FK, unindexed large tables
281
- sqlite_index_audit({ excludeSystemTables: true });
282
- sqlite_index_audit({ table: "orders", minSeverity: "warning" }); // reduce payload
283
-
284
- // EXPLAIN QUERY PLAN with scan-type classification and optimization suggestions (SELECT/WITH only)
285
- sqlite_query_plan({ sql: "SELECT * FROM orders WHERE status = 'active'" });
286
- \`\`\`
287
-
288
- ## \u26A0\uFE0F Gotchas
289
-
290
- - \`excludeSystemTables\` defaults to \`true\` \u2014 SpatiaLite system tables are hidden for cleaner output. Pass \`false\` to include them
291
- - \`sqlite_migration_risks\` analyzes DDL text statically \u2014 it does NOT execute the statements`
292
- ],
293
- [
294
- "json",
295
- `# db-mcp Help \u2014 JSON Operations (23 tools)
296
-
297
- ## Collection & CRUD
298
-
299
- - \`sqlite_create_json_collection({ tableName, indexes: [{ path: "$.type" }, { path: "$.author" }] })\` \u2014 creates table with JSON indexes
300
- - \`sqlite_json_insert({ table, column, data: { type: "article", title: "Hello", tags: ["news"] } })\` \u2014 insert JSON document
301
- - \`sqlite_json_select({ table, column, extractPaths? })\` \u2014 select rows, optionally extract specific JSON paths
302
- - \`sqlite_json_update({ table, column, path, value, whereClause })\` \u2014 update value at JSON path
303
- - \`sqlite_json_query({ table, column, filterPaths: { "$.type": "article" }, selectPaths: ["$.title"] })\` \u2014 query with path-based filters and projections
304
-
305
- ## Path Operations
306
-
307
- - \`sqlite_json_extract({ table, column, path: "$.title" })\` \u2014 extract value at path. Returns null if path doesn't exist
308
- - \`sqlite_json_set({ table, column, path: "$.views", value: 100, whereClause: "id = 1" })\` \u2014 set value at path (creates if missing)
309
- - \`sqlite_json_merge({ table, column, mergeData: { featured: true }, whereClause: "id = 1" })\` \u2014 merge object into existing JSON
310
- - \`sqlite_json_remove({ table, column, path, whereClause })\` \u2014 remove key at path
311
- - \`sqlite_json_validate_path({ path: "$.store.books[0].title" })\` \u2014 validate JSON path syntax without executing a query
312
- - \`sqlite_json_type({ table, column, path })\` \u2014 get JSON type (null, true, false, integer, real, text, array, object)
313
-
314
- ## Array Operations
315
-
316
- \u26A0\uFE0F \`json_each\` multiplies output rows \u2014 use \`limit\` param for large arrays
317
-
318
- - \`sqlite_json_array_append({ table, column, path: "$.tags", value: "featured", whereClause: "id = 1" })\` \u2014 append to array
319
- - \`sqlite_json_array_length({ table, column, path })\` \u2014 get array length
320
- - \`sqlite_json_each({ table, column, path: "$.tags", limit: 50 })\` \u2014 expand array to rows
321
-
322
- ## Aggregation & Analysis
323
-
324
- \`\`\`javascript
325
- // Regular tables: use column names directly
326
- sqlite_json_group_array({ table: "events", valueColumn: "user_id", groupByColumn: "event_type" });
327
-
328
- // JSON collections: use allowExpressions with json_extract for both columns
329
- // \u26A0\uFE0F allowExpressions is for column extraction ONLY, NOT aggregate functions
330
- // \u26A0\uFE0F Without groupByColumn, each row creates a key-value pair; duplicate keys if values aren't unique
331
- sqlite_json_group_array({
332
- table: "docs",
333
- valueColumn: "json_extract(data, '$.author')",
334
- groupByColumn: "json_extract(data, '$.type')",
335
- allowExpressions: true,
336
- });
337
-
338
- // For aggregate values (COUNT, SUM, AVG), use aggregateFunction parameter instead
339
- sqlite_json_group_object({ table: "events", keyColumn: "event_type", aggregateFunction: "COUNT(*)" });
340
- sqlite_json_group_object({ table: "orders", keyColumn: "status", aggregateFunction: "SUM(total)" });
341
- \`\`\`
342
-
343
- - \`sqlite_json_keys({ table, column, path? })\` \u2014 get distinct keys of JSON objects
344
- - \`sqlite_json_pretty({ table, column, whereClause? })\` \u2014 format JSON with indentation
345
- - \`sqlite_json_valid({ table, column })\` \u2014 check if values are valid JSON
346
- - \`sqlite_json_analyze_schema({ table, column })\` \u2014 infer schema types
347
-
348
- ## JSONB Optimization (SQLite 3.45+)
349
-
350
- - \`sqlite_json_storage_info({ table, column })\` \u2014 check text vs JSONB format
351
- - \`sqlite_jsonb_convert({ table, column })\` \u2014 convert to JSONB for faster queries
352
- - \`sqlite_json_normalize_column({ table, column, outputFormat? })\` \u2014 normalize JSON (sort keys, compact). \u26A0\uFE0F Defaults to \`"preserve"\` (maintains original format); use \`outputFormat: "text"\` to force text output`
353
- ],
354
- [
355
- "migration",
356
- `# db-mcp Help \u2014 Migration Tracking (6 tools)
357
-
358
- \u26A0\uFE0F Must call \`sqlite_migration_init()\` before using any other migration tool \u2014 it creates the tracking table.
359
-
360
- \`\`\`javascript
361
- // Initialize tracking table (idempotent \u2014 safe to call multiple times)
362
- sqlite_migration_init();
363
-
364
- // Apply migration: executes SQL and records atomically. If SQL fails, no record is created
365
- // SHA-256 dedup \u2014 submitting the same SQL twice is rejected as a duplicate
366
- sqlite_migration_apply({
367
- version: "2024-01-15-add-users",
368
- description: "Create users table",
369
- migrationSql: "CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT NOT NULL, email TEXT UNIQUE)",
370
- rollbackSql: "DROP TABLE users",
371
- sourceSystem: "agent",
372
- appliedBy: "claude",
373
- });
374
-
375
- // Record externally-applied migration (does NOT execute the SQL)
376
- sqlite_migration_record({
377
- version: "2024-01-10-initial",
378
- description: "Initial schema (pre-existing)",
379
- migrationSql: "CREATE TABLE orders (...)",
380
- sourceSystem: "manual",
381
- });
382
-
383
- // Rollback by ID or version \u2014 requires rollbackSql to have been recorded
384
- sqlite_migration_rollback({ version: "2024-01-15-add-users" });
385
- sqlite_migration_rollback({ id: 3, dryRun: true }); // preview SQL without executing
386
-
387
- // Query history with filters and pagination
388
- sqlite_migration_history({ status: "applied", limit: 10 });
389
- sqlite_migration_history({ sourceSystem: "agent", compact: true }); // compact omits hash and source system
390
-
391
- // Summary: latest version, counts by status, unique source systems
392
- sqlite_migration_status();
393
- \`\`\`
394
-
395
- ## \u26A0\uFE0F Gotchas
396
-
397
- - Rollback requires \`rollbackSql\` to have been provided when the migration was recorded/applied
398
- - Migration group is **opt-in** \u2014 not included in any shortcut except \`dev-schema\` and \`full\``
399
- ],
400
- [
401
- "stats",
402
- `# db-mcp Help \u2014 Statistical Analysis (13 core + 6 window)
403
-
404
- ## Core Statistics (always available)
405
-
406
- \`\`\`javascript
407
- sqlite_stats_basic({ table: "employees", column: "salary" }); // count, sum, avg, min, max
408
- sqlite_stats_count({ table: "orders", column: "status", distinct: true }); // count rows, optionally distinct
409
- sqlite_stats_group_by({ table: "orders", column: "total", groupBy: "status" }); // aggregate by group
410
- sqlite_stats_percentile({ table: "sales", column: "revenue", percentiles: [25, 50, 75, 90] });
411
- sqlite_stats_histogram({ table: "products", column: "price", buckets: 10 });
412
- sqlite_stats_correlation({ table: "data", column1: "x", column2: "y" }); // Pearson coefficient
413
- sqlite_stats_distinct({ table: "orders", column: "status" }); // distinct values
414
- sqlite_stats_summary({ table: "data", columns: ["price", "quantity", "discount"] }); // multi-column summary
415
- sqlite_stats_frequency({ table: "orders", column: "status" }); // frequency distribution
416
- sqlite_stats_regression({ table: "data", xColumn: "year", yColumn: "revenue" }); // linear
417
- sqlite_stats_regression({ table: "data", xColumn: "year", yColumn: "revenue", degree: 2 }); // quadratic
418
- sqlite_stats_outliers({ table: "sales", column: "amount", method: "iqr" }); // or "zscore". Use maxOutliers to limit payload
419
- sqlite_stats_hypothesis({ table: "samples", column: "value", testType: "ttest_one", expectedMean: 100 });
420
- \`\`\`
421
-
422
- \u26A0\uFE0F \`sqlite_stats_top_n\` \u2014 always use \`selectColumns\` to avoid returning all columns (large payloads with text fields):
423
-
424
- \`\`\`javascript
425
- sqlite_stats_top_n({
426
- table: "products",
427
- column: "price",
428
- n: 10,
429
- selectColumns: ["id", "name", "price"],
430
- });
431
- \`\`\`
432
-
433
- ## Window Functions (6 tools, Native only)
434
-
435
- \`\`\`javascript
436
- sqlite_window_row_number({ table: "employees", orderBy: "hire_date", partitionBy: "department" });
437
- sqlite_window_rank({ table: "sales", orderBy: "revenue DESC", partitionBy: "region", rankType: "dense_rank" });
438
- sqlite_window_lag_lead({ table: "sales", orderBy: "date", column: "revenue", partitionBy: "region" }); // access previous/next row values
439
- sqlite_window_running_total({ table: "transactions", column: "amount", orderBy: "date" });
440
- sqlite_window_moving_avg({ table: "stock_prices", column: "close_price", orderBy: "date", windowSize: 7 });
441
- sqlite_window_ntile({ table: "employees", orderBy: "salary DESC", buckets: 4, partitionBy: "department" }); // quartiles
442
- \`\`\``
443
- ],
444
- [
445
- "text",
446
- `# db-mcp Help \u2014 Text Processing & FTS5
447
-
448
- ## Full-Text Search / FTS5 (4 tools, Native only)
449
-
450
- \`\`\`javascript
451
- // Create FTS5 table with triggers for auto-sync on future changes
452
- sqlite_fts_create({ tableName: "articles_fts", sourceTable: "articles", columns: ["title", "content"] });
453
- sqlite_fts_rebuild({ table: "articles_fts" }); // \u26A0\uFE0F Required: populate index with existing data
454
-
455
- // FTS5 uses AND by default: "machine learning" = rows containing BOTH words
456
- // Use OR explicitly: "machine OR learning" for rows containing EITHER word
457
- sqlite_fts_search({ table: "articles_fts", query: "machine learning", limit: 10 });
458
- sqlite_fts_match_info({ table: "articles_fts", query: "machine learning" }); // bm25 ranking info
459
- \`\`\`
460
-
461
- \u26A0\uFE0F FTS5 virtual tables (\`*_fts\`) and shadow tables (\`*_fts_*\`) are hidden from \`sqlite_list_tables\` for cleaner output
462
-
463
- ## Text Processing (13 tools)
464
-
465
- \`\`\`javascript
466
- // Regex patterns: \u26A0\uFE0F Double-escape backslashes (\\\\) when passing through JSON/MCP
467
- sqlite_regex_match({ table: "logs", column: "message", pattern: "ERROR:\\\\\\\\s+(\\\\\\\\w+)" });
468
- sqlite_regex_extract({ table: "users", column: "email", pattern: "@([a-zA-Z0-9.-]+)", groupIndex: 1 });
469
-
470
- // Text manipulation
471
- sqlite_text_split({ table: "users", column: "email", delimiter: "@" }); // split into parts array
472
- sqlite_text_concat({ table: "users", columns: ["first_name", "last_name"], separator: " " });
473
- sqlite_text_replace({ table: "docs", column: "content", search: "old", replacement: "new" });
474
- sqlite_text_trim({ table: "users", column: "name" }); // trim whitespace
475
- sqlite_text_case({ table: "products", column: "name", mode: "upper" }); // or "lower"
476
- sqlite_text_substring({ table: "codes", column: "value", start: 1, length: 3 }); // extract substring
477
- sqlite_text_normalize({ table: "docs", column: "content", mode: "strip_accents" }); // or nfc, nfd, nfkc, nfkd
478
-
479
- // Validation patterns: email, phone, url, uuid, ipv4, custom
480
- sqlite_text_validate({ table: "users", column: "email", pattern: "email" });
481
- sqlite_text_validate({ table: "data", column: "field", pattern: "custom", customPattern: "^[A-Z]{2}[0-9]{4}$" });
482
-
483
- // Fuzzy matching \u2014 matches WORD TOKENS by default (not entire value)
484
- // "laptop" matches "Laptop Pro 15" (distance 0 on first token). Use tokenize: false for full-string matching.
485
- sqlite_fuzzy_match({ table: "products", column: "name", search: "laptop", maxDistance: 2 });
486
- sqlite_fuzzy_match({ table: "products", column: "name", search: "laptob", maxDistance: 2, tokenize: false }); // full value
487
-
488
- // Phonetic matching \u2014 finds words that sound alike (matches against any word in value)
489
- // Use includeRowData: false for lighter payloads when only matching values are needed
490
- sqlite_phonetic_match({ table: "products", column: "name", search: "laptop", algorithm: "soundex" });
491
- sqlite_phonetic_match({ table: "products", column: "name", search: "laptop", includeRowData: false }); // lighter
492
-
493
- // Advanced search \u2014 combines exact, fuzzy, and phonetic techniques
494
- // fuzzyThreshold: 0.3-0.4 = loose matching (more results), 0.6-0.8 = strict matching (fewer results)
495
- sqlite_advanced_search({
496
- table: "products", column: "name", searchTerm: "laptop",
497
- techniques: ["exact", "fuzzy", "phonetic"], fuzzyThreshold: 0.4,
498
- });
499
- \`\`\``
500
- ],
501
- [
502
- "vector",
503
- `# db-mcp Help \u2014 Vector/Semantic Search (11 tools)
504
-
505
- \`\`\`javascript
506
- // Create vector table with metadata columns
507
- sqlite_vector_create_table({ tableName: "docs", dimensions: 384, additionalColumns: [{ name: "content", type: "TEXT" }] });
508
-
509
- // Store vectors (single and batch)
510
- sqlite_vector_store({ table: "docs", idColumn: "id", vectorColumn: "emb", id: 1, vector: [...] });
511
- sqlite_vector_batch_store({ table: "docs", idColumn: "id", vectorColumn: "emb", items: [{ id: 1, vector: [...] }, { id: 2, vector: [...] }] });
512
-
513
- // Search vectors (returnColumns omits vector data from results for smaller payloads)
514
- sqlite_vector_search({ table: "docs", vectorColumn: "emb", queryVector: [...], limit: 10, returnColumns: ["id", "title"] });
515
-
516
- // Retrieve and delete vectors
517
- // Note: sqlite_vector_get returns parsed 'vector' array + raw JSON string in 'metadata' for flexibility
518
- sqlite_vector_get({ table: "docs", idColumn: "id", vectorColumn: "emb", id: 1 });
519
- sqlite_vector_delete({ table: "docs", idColumn: "id", ids: [1, 2, 3] });
520
-
521
- // Vector metadata
522
- sqlite_vector_count({ table: "docs" }); // or with dimensions filter: { table: "docs", dimensions: 384 }
523
- sqlite_vector_dimensions({ table: "docs", vectorColumn: "emb" });
524
- sqlite_vector_stats({ table: "docs", vectorColumn: "emb" }); // magnitude min/max/avg
525
-
526
- // Utility tools for preprocessing
527
- sqlite_vector_normalize({ vector: [3, 4, 0, 0] }); // returns unit vector [0.6, 0.8, 0, 0]
528
- sqlite_vector_distance({ vector1: [...], vector2: [...], metric: "cosine" }); // or "euclidean", "dot"
529
- \`\`\``
530
- ]
531
- ]);
532
-
533
- // src/server/mcp-server.ts
534
- var DbMcpServer = class {
535
- server;
536
- adapters = /* @__PURE__ */ new Map();
537
- toolFilter;
538
- config;
539
- constructor(config) {
540
- this.config = config;
541
- this.toolFilter = config.toolFilter ? parseToolFilter(config.toolFilter) : getToolFilterFromEnv();
542
- this.server = new McpServer(
543
- {
544
- name: config.name,
545
- version: config.version
546
- },
547
- {
548
- capabilities: {
549
- logging: {}
550
- },
551
- instructions: INSTRUCTIONS
552
- }
553
- );
554
- logger.info(getFilterSummary(this.toolFilter), { module: "FILTER" });
555
- logger.info("MCP Server initialized", {
556
- module: "SERVER",
557
- name: config.name,
558
- version: config.version,
559
- toolFilter: config.toolFilter ?? "none",
560
- capabilities: ["logging"]
561
- });
562
- this.registerBuiltInTools();
563
- this.registerHelpResources();
564
- }
565
- /**
566
- * Register a database adapter
567
- */
568
- async registerAdapter(adapter, config) {
569
- const adapterId = `${adapter.type}:${config.connectionString ?? "default"}`;
570
- await adapter.connect(config);
571
- this.adapters.set(adapterId, adapter);
572
- adapter.registerTools(this.server, this.toolFilter);
573
- adapter.registerResources(this.server);
574
- adapter.registerPrompts(this.server);
575
- logger.info(`Registered adapter: ${adapter.name} (${adapterId})`, {
576
- module: "SERVER"
577
- });
578
- }
579
- /**
580
- * Get an adapter by ID
581
- */
582
- getAdapter(adapterId) {
583
- return this.adapters.get(adapterId);
584
- }
585
- /**
586
- * Get all registered adapters
587
- */
588
- getAdapters() {
589
- return this.adapters;
590
- }
591
- /**
592
- * Register built-in server tools (health, info, etc.)
593
- */
594
- registerBuiltInTools() {
595
- const serverInfoOpts = {
596
- title: "Server Info",
597
- description: "Get information about the db-mcp server and registered adapters",
598
- icons: SERVER_ICONS,
599
- annotations: READ_ONLY
600
- };
601
- this.server.registerTool(
602
- "server_info",
603
- serverInfoOpts,
604
- () => {
605
- const adapterInfo = [];
606
- for (const [id, adapter] of this.adapters) {
607
- adapterInfo.push({
608
- id,
609
- ...adapter.getInfo()
610
- });
611
- }
612
- return {
613
- content: [
614
- {
615
- type: "text",
616
- text: JSON.stringify(
617
- {
618
- name: this.config.name,
619
- version: this.config.version,
620
- transport: this.config.transport,
621
- adapters: adapterInfo,
622
- toolFilter: {
623
- raw: this.toolFilter.raw,
624
- enabledGroups: [...this.toolFilter.enabledGroups]
625
- }
626
- },
627
- null,
628
- 2
629
- )
630
- }
631
- ]
632
- };
633
- }
634
- );
635
- const healthOpts = {
636
- title: "Server Health",
637
- description: "Check health status of all database connections",
638
- icons: SERVER_ICONS,
639
- annotations: READ_ONLY
640
- };
641
- this.server.registerTool(
642
- "server_health",
643
- healthOpts,
644
- async () => {
645
- const health = {
646
- server: "healthy",
647
- timestamp: (/* @__PURE__ */ new Date()).toISOString(),
648
- adapters: {}
649
- };
650
- for (const [id, adapter] of this.adapters) {
651
- try {
652
- const adapterHealth = await adapter.getHealth();
653
- health["adapters"][id] = adapterHealth;
654
- } catch (error) {
655
- health["adapters"][id] = {
656
- connected: false,
657
- error: error instanceof Error ? error.message : "Unknown error"
658
- };
659
- }
660
- }
661
- return {
662
- content: [
663
- {
664
- type: "text",
665
- text: JSON.stringify(health, null, 2)
666
- }
667
- ]
668
- };
669
- }
670
- );
671
- const listAdaptersOpts = {
672
- title: "List Adapters",
673
- description: "List all registered database adapters",
674
- icons: SERVER_ICONS,
675
- annotations: READ_ONLY
676
- };
677
- this.server.registerTool(
678
- "list_adapters",
679
- listAdaptersOpts,
680
- () => {
681
- const adapters = [];
682
- for (const [id, adapter] of this.adapters) {
683
- adapters.push({
684
- id,
685
- type: adapter.type,
686
- name: adapter.name,
687
- version: adapter.version,
688
- connected: adapter.isConnected()
689
- });
690
- }
691
- return {
692
- content: [
693
- {
694
- type: "text",
695
- text: JSON.stringify(adapters, null, 2)
696
- }
697
- ]
698
- };
699
- }
700
- );
701
- }
702
- /**
703
- * Register sqlite://help resources for on-demand reference documentation.
704
- * Always registers sqlite://help (gotchas). Group-specific help is filtered
705
- * by the tool filter configuration.
706
- */
707
- registerHelpResources() {
708
- const gotchasContent = HELP_CONTENT.get("gotchas");
709
- if (gotchasContent) {
710
- this.server.registerResource(
711
- "sqlite_help",
712
- "sqlite://help",
713
- {
714
- description: "Critical gotchas, WASM vs Native comparison, and Code Mode API reference",
715
- mimeType: "text/markdown"
716
- },
717
- () => ({
718
- contents: [
719
- {
720
- uri: "sqlite://help",
721
- mimeType: "text/markdown",
722
- text: gotchasContent
723
- }
724
- ]
725
- })
726
- );
727
- }
728
- const groupHelpKeys = [
729
- { group: "json", key: "json" },
730
- { group: "text", key: "text" },
731
- { group: "stats", key: "stats" },
732
- { group: "vector", key: "vector" },
733
- { group: "geo", key: "geo" },
734
- { group: "admin", key: "admin" },
735
- { group: "introspection", key: "introspection" },
736
- { group: "migration", key: "migration" }
737
- ];
738
- for (const { group, key } of groupHelpKeys) {
739
- if (!this.toolFilter.enabledGroups.has(group)) continue;
740
- const content = HELP_CONTENT.get(key);
741
- if (!content) continue;
742
- this.server.registerResource(
743
- `sqlite_help_${key}`,
744
- `sqlite://help/${key}`,
745
- {
746
- description: `Tool reference for the ${group} tool group`,
747
- mimeType: "text/markdown"
748
- },
749
- () => ({
750
- contents: [
751
- {
752
- uri: `sqlite://help/${key}`,
753
- mimeType: "text/markdown",
754
- text: content
755
- }
756
- ]
757
- })
758
- );
759
- }
760
- const registeredHelp = ["sqlite://help"];
761
- for (const { group, key } of groupHelpKeys) {
762
- if (this.toolFilter.enabledGroups.has(group)) {
763
- registeredHelp.push(`sqlite://help/${key}`);
764
- }
765
- }
766
- logger.info(`Help resources: ${registeredHelp.join(", ")}`, {
767
- module: "SERVER"
768
- });
769
- }
770
- /**
771
- * Start the server with the configured transport
772
- */
773
- async start() {
774
- switch (this.config.transport) {
775
- case "stdio":
776
- await this.startStdio();
777
- break;
778
- case "http":
779
- await this.startHttp();
780
- break;
781
- default:
782
- throw new DbMcpError(
783
- `Unsupported transport: ${this.config.transport}`,
784
- "SERVER_START_FAILED",
785
- "config" /* CONFIGURATION */
786
- );
787
- }
788
- }
789
- /**
790
- * Start server with stdio transport
791
- */
792
- async startStdio() {
793
- const transport = new StdioServerTransport();
794
- await this.server.connect(transport);
795
- logger.info(`db-mcp server started (stdio transport)`, {
796
- module: "SERVER"
797
- });
798
- }
799
- /**
800
- * Start server with HTTP transport (Streamable HTTP with SSE support)
801
- */
802
- async startHttp() {
803
- const { HttpTransport } = await import('./http-VSB7DBJR.js');
804
- const oauthConfig = {
805
- enabled: this.config.oauth?.enabled ?? false,
806
- authorizationServerUrl: this.config.oauth?.authorizationServerUrl ?? "",
807
- audience: this.config.oauth?.audience ?? this.config.name
808
- };
809
- if (this.config.oauth?.issuer !== void 0) {
810
- oauthConfig.issuer = this.config.oauth.issuer;
811
- }
812
- if (this.config.oauth?.jwksUri !== void 0) {
813
- oauthConfig.jwksUri = this.config.oauth.jwksUri;
814
- }
815
- if (this.config.oauth?.clockTolerance !== void 0) {
816
- oauthConfig.clockTolerance = this.config.oauth.clockTolerance;
817
- }
818
- if (this.config.oauth?.publicPaths !== void 0) {
819
- oauthConfig.publicPaths = this.config.oauth.publicPaths;
820
- }
821
- const transport = new HttpTransport({
822
- port: this.config.port ?? 3e3,
823
- ...this.config.host !== void 0 && { host: this.config.host },
824
- ...this.config.authToken !== void 0 && {
825
- authToken: this.config.authToken
826
- },
827
- ...this.config.enableHSTS !== void 0 && {
828
- enableHSTS: this.config.enableHSTS
829
- },
830
- oauth: oauthConfig,
831
- stateless: this.config.statelessHttp ?? false
832
- });
833
- await transport.initialize(this.server);
834
- await transport.start();
835
- const mode = this.config.statelessHttp ? "stateless" : "stateful";
836
- const host = this.config.host ?? "0.0.0.0";
837
- const port = String(this.config.port ?? 3e3);
838
- logger.info(
839
- `db-mcp server started (HTTP transport on ${host}:${port}, ${mode} mode)`,
840
- { module: "TRANSPORT", mode }
841
- );
842
- }
843
- /**
844
- * Gracefully shut down the server
845
- */
846
- async shutdown() {
847
- logger.info("Shutting down db-mcp server...", { module: "SERVER" });
848
- for (const [id, adapter] of this.adapters) {
849
- try {
850
- await adapter.disconnect();
851
- logger.info(`Disconnected adapter: ${id}`, { module: "SERVER" });
852
- } catch (error) {
853
- logger.error(`Error disconnecting adapter ${id}`, {
854
- module: "SERVER",
855
- error: error instanceof Error ? error : void 0
856
- });
857
- }
858
- }
859
- await this.server.close();
860
- logger.info("Server shutdown complete", { module: "SERVER" });
861
- }
862
- };
863
- function createServer(config) {
864
- return new DbMcpServer(config);
865
- }
866
- var DEFAULT_CONFIG = {
867
- name: NAME,
868
- version: VERSION,
869
- transport: "stdio",
870
- databases: []
871
- };
872
-
873
- export { DEFAULT_CONFIG, DbMcpServer, createServer };