db-mcp 1.0.2 → 1.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 (241) hide show
  1. package/.gitattributes +2 -0
  2. package/LICENSE +1 -1
  3. package/README.md +244 -518
  4. package/dist/chunk-4IA3DB5C.js +135 -0
  5. package/dist/chunk-AOUL5SHS.js +930 -0
  6. package/dist/chunk-DWJXQEFA.js +13759 -0
  7. package/dist/chunk-DZQLDEQS.js +879 -0
  8. package/dist/chunk-S5IDDSSB.js +74 -0
  9. package/dist/chunk-Z2GFQU3G.js +363 -0
  10. package/dist/cli.d.ts +0 -7
  11. package/dist/cli.js +227 -183
  12. package/dist/http-VSB7DBJR.js +1541 -0
  13. package/dist/index.d.ts +842 -10
  14. package/dist/index.js +5 -17
  15. package/dist/sqlite-VHBA4ABV.js +600 -0
  16. package/dist/sqlite-native-D2LH5ZT7.js +2498 -0
  17. package/dist/worker-script.d.ts +2 -0
  18. package/dist/worker-script.js +126 -0
  19. package/package.json +26 -16
  20. package/playwright.config.ts +101 -0
  21. package/scripts/generate-server-instructions.ts +111 -0
  22. package/server.json +5 -6
  23. package/test-server/README.md +118 -0
  24. package/test-server/code-map.md +409 -0
  25. package/test-server/fixtures/sample.csv +6 -0
  26. package/test-server/reset-database.ps1 +373 -0
  27. package/test-server/sample.csv +11 -0
  28. package/test-server/test-agent-experience.md +243 -0
  29. package/test-server/test-database.sql +388 -0
  30. package/test-server/test-group-tools.md +861 -0
  31. package/test-server/test-help-resources.mjs +238 -0
  32. package/test-server/test-preflight.md +53 -0
  33. package/test-server/test-prompts.md +354 -0
  34. package/test-server/test-resources.md +245 -0
  35. package/test-server/test-tool-annotations.mjs +157 -0
  36. package/test-server/test-tools-advanced-1.md +517 -0
  37. package/test-server/test-tools-advanced-2.md +487 -0
  38. package/test-server/test-tools-codemode.md +629 -0
  39. package/test-server/test-tools.md +176 -0
  40. package/test-server/tool-reference.md +236 -0
  41. package/tsconfig.test.json +9 -0
  42. package/dist/adapters/DatabaseAdapter.d.ts +0 -141
  43. package/dist/adapters/DatabaseAdapter.d.ts.map +0 -1
  44. package/dist/adapters/DatabaseAdapter.js +0 -131
  45. package/dist/adapters/DatabaseAdapter.js.map +0 -1
  46. package/dist/adapters/sqlite/SchemaManager.d.ts +0 -58
  47. package/dist/adapters/sqlite/SchemaManager.d.ts.map +0 -1
  48. package/dist/adapters/sqlite/SchemaManager.js +0 -187
  49. package/dist/adapters/sqlite/SchemaManager.js.map +0 -1
  50. package/dist/adapters/sqlite/SqliteAdapter.d.ts +0 -161
  51. package/dist/adapters/sqlite/SqliteAdapter.d.ts.map +0 -1
  52. package/dist/adapters/sqlite/SqliteAdapter.js +0 -741
  53. package/dist/adapters/sqlite/SqliteAdapter.js.map +0 -1
  54. package/dist/adapters/sqlite/index.d.ts +0 -9
  55. package/dist/adapters/sqlite/index.d.ts.map +0 -1
  56. package/dist/adapters/sqlite/index.js +0 -8
  57. package/dist/adapters/sqlite/index.js.map +0 -1
  58. package/dist/adapters/sqlite/json-utils.d.ts +0 -100
  59. package/dist/adapters/sqlite/json-utils.d.ts.map +0 -1
  60. package/dist/adapters/sqlite/json-utils.js +0 -274
  61. package/dist/adapters/sqlite/json-utils.js.map +0 -1
  62. package/dist/adapters/sqlite/output-schemas.d.ts +0 -1187
  63. package/dist/adapters/sqlite/output-schemas.d.ts.map +0 -1
  64. package/dist/adapters/sqlite/output-schemas.js +0 -1337
  65. package/dist/adapters/sqlite/output-schemas.js.map +0 -1
  66. package/dist/adapters/sqlite/prompts.d.ts +0 -13
  67. package/dist/adapters/sqlite/prompts.d.ts.map +0 -1
  68. package/dist/adapters/sqlite/prompts.js +0 -605
  69. package/dist/adapters/sqlite/prompts.js.map +0 -1
  70. package/dist/adapters/sqlite/resources.d.ts +0 -13
  71. package/dist/adapters/sqlite/resources.d.ts.map +0 -1
  72. package/dist/adapters/sqlite/resources.js +0 -251
  73. package/dist/adapters/sqlite/resources.js.map +0 -1
  74. package/dist/adapters/sqlite/tools/admin.d.ts +0 -14
  75. package/dist/adapters/sqlite/tools/admin.d.ts.map +0 -1
  76. package/dist/adapters/sqlite/tools/admin.js +0 -788
  77. package/dist/adapters/sqlite/tools/admin.js.map +0 -1
  78. package/dist/adapters/sqlite/tools/core.d.ts +0 -25
  79. package/dist/adapters/sqlite/tools/core.d.ts.map +0 -1
  80. package/dist/adapters/sqlite/tools/core.js +0 -359
  81. package/dist/adapters/sqlite/tools/core.js.map +0 -1
  82. package/dist/adapters/sqlite/tools/fts.d.ts +0 -13
  83. package/dist/adapters/sqlite/tools/fts.d.ts.map +0 -1
  84. package/dist/adapters/sqlite/tools/fts.js +0 -347
  85. package/dist/adapters/sqlite/tools/fts.js.map +0 -1
  86. package/dist/adapters/sqlite/tools/geo.d.ts +0 -14
  87. package/dist/adapters/sqlite/tools/geo.d.ts.map +0 -1
  88. package/dist/adapters/sqlite/tools/geo.js +0 -252
  89. package/dist/adapters/sqlite/tools/geo.js.map +0 -1
  90. package/dist/adapters/sqlite/tools/index.d.ts +0 -30
  91. package/dist/adapters/sqlite/tools/index.d.ts.map +0 -1
  92. package/dist/adapters/sqlite/tools/index.js +0 -61
  93. package/dist/adapters/sqlite/tools/index.js.map +0 -1
  94. package/dist/adapters/sqlite/tools/json-helpers.d.ts +0 -14
  95. package/dist/adapters/sqlite/tools/json-helpers.d.ts.map +0 -1
  96. package/dist/adapters/sqlite/tools/json-helpers.js +0 -477
  97. package/dist/adapters/sqlite/tools/json-helpers.js.map +0 -1
  98. package/dist/adapters/sqlite/tools/json-operations.d.ts +0 -14
  99. package/dist/adapters/sqlite/tools/json-operations.d.ts.map +0 -1
  100. package/dist/adapters/sqlite/tools/json-operations.js +0 -839
  101. package/dist/adapters/sqlite/tools/json-operations.js.map +0 -1
  102. package/dist/adapters/sqlite/tools/stats.d.ts +0 -15
  103. package/dist/adapters/sqlite/tools/stats.d.ts.map +0 -1
  104. package/dist/adapters/sqlite/tools/stats.js +0 -1219
  105. package/dist/adapters/sqlite/tools/stats.js.map +0 -1
  106. package/dist/adapters/sqlite/tools/text.d.ts +0 -14
  107. package/dist/adapters/sqlite/tools/text.d.ts.map +0 -1
  108. package/dist/adapters/sqlite/tools/text.js +0 -1141
  109. package/dist/adapters/sqlite/tools/text.js.map +0 -1
  110. package/dist/adapters/sqlite/tools/vector.d.ts +0 -14
  111. package/dist/adapters/sqlite/tools/vector.d.ts.map +0 -1
  112. package/dist/adapters/sqlite/tools/vector.js +0 -613
  113. package/dist/adapters/sqlite/tools/vector.js.map +0 -1
  114. package/dist/adapters/sqlite/tools/virtual.d.ts +0 -13
  115. package/dist/adapters/sqlite/tools/virtual.d.ts.map +0 -1
  116. package/dist/adapters/sqlite/tools/virtual.js +0 -930
  117. package/dist/adapters/sqlite/tools/virtual.js.map +0 -1
  118. package/dist/adapters/sqlite/types.d.ts +0 -207
  119. package/dist/adapters/sqlite/types.d.ts.map +0 -1
  120. package/dist/adapters/sqlite/types.js +0 -186
  121. package/dist/adapters/sqlite/types.js.map +0 -1
  122. package/dist/adapters/sqlite-native/NativeSqliteAdapter.d.ts +0 -163
  123. package/dist/adapters/sqlite-native/NativeSqliteAdapter.d.ts.map +0 -1
  124. package/dist/adapters/sqlite-native/NativeSqliteAdapter.js +0 -748
  125. package/dist/adapters/sqlite-native/NativeSqliteAdapter.js.map +0 -1
  126. package/dist/adapters/sqlite-native/index.d.ts +0 -11
  127. package/dist/adapters/sqlite-native/index.d.ts.map +0 -1
  128. package/dist/adapters/sqlite-native/index.js +0 -11
  129. package/dist/adapters/sqlite-native/index.js.map +0 -1
  130. package/dist/adapters/sqlite-native/tools/spatialite.d.ts +0 -19
  131. package/dist/adapters/sqlite-native/tools/spatialite.d.ts.map +0 -1
  132. package/dist/adapters/sqlite-native/tools/spatialite.js +0 -628
  133. package/dist/adapters/sqlite-native/tools/spatialite.js.map +0 -1
  134. package/dist/adapters/sqlite-native/tools/transactions.d.ts +0 -12
  135. package/dist/adapters/sqlite-native/tools/transactions.d.ts.map +0 -1
  136. package/dist/adapters/sqlite-native/tools/transactions.js +0 -255
  137. package/dist/adapters/sqlite-native/tools/transactions.js.map +0 -1
  138. package/dist/adapters/sqlite-native/tools/window.d.ts +0 -12
  139. package/dist/adapters/sqlite-native/tools/window.d.ts.map +0 -1
  140. package/dist/adapters/sqlite-native/tools/window.js +0 -370
  141. package/dist/adapters/sqlite-native/tools/window.js.map +0 -1
  142. package/dist/auth/AuthorizationServerDiscovery.d.ts +0 -90
  143. package/dist/auth/AuthorizationServerDiscovery.d.ts.map +0 -1
  144. package/dist/auth/AuthorizationServerDiscovery.js +0 -204
  145. package/dist/auth/AuthorizationServerDiscovery.js.map +0 -1
  146. package/dist/auth/OAuthResourceServer.d.ts +0 -65
  147. package/dist/auth/OAuthResourceServer.d.ts.map +0 -1
  148. package/dist/auth/OAuthResourceServer.js +0 -121
  149. package/dist/auth/OAuthResourceServer.js.map +0 -1
  150. package/dist/auth/TokenValidator.d.ts +0 -60
  151. package/dist/auth/TokenValidator.d.ts.map +0 -1
  152. package/dist/auth/TokenValidator.js +0 -235
  153. package/dist/auth/TokenValidator.js.map +0 -1
  154. package/dist/auth/errors.d.ts +0 -74
  155. package/dist/auth/errors.d.ts.map +0 -1
  156. package/dist/auth/errors.js +0 -133
  157. package/dist/auth/errors.js.map +0 -1
  158. package/dist/auth/index.d.ts +0 -13
  159. package/dist/auth/index.d.ts.map +0 -1
  160. package/dist/auth/index.js +0 -15
  161. package/dist/auth/index.js.map +0 -1
  162. package/dist/auth/middleware.d.ts +0 -81
  163. package/dist/auth/middleware.d.ts.map +0 -1
  164. package/dist/auth/middleware.js +0 -291
  165. package/dist/auth/middleware.js.map +0 -1
  166. package/dist/auth/scopes.d.ts +0 -136
  167. package/dist/auth/scopes.d.ts.map +0 -1
  168. package/dist/auth/scopes.js +0 -349
  169. package/dist/auth/scopes.js.map +0 -1
  170. package/dist/auth/types.d.ts +0 -257
  171. package/dist/auth/types.d.ts.map +0 -1
  172. package/dist/auth/types.js +0 -8
  173. package/dist/auth/types.js.map +0 -1
  174. package/dist/cli.d.ts.map +0 -1
  175. package/dist/cli.js.map +0 -1
  176. package/dist/constants/ServerInstructions.d.ts +0 -45
  177. package/dist/constants/ServerInstructions.d.ts.map +0 -1
  178. package/dist/constants/ServerInstructions.js +0 -356
  179. package/dist/constants/ServerInstructions.js.map +0 -1
  180. package/dist/filtering/ToolConstants.d.ts +0 -34
  181. package/dist/filtering/ToolConstants.d.ts.map +0 -1
  182. package/dist/filtering/ToolConstants.js +0 -174
  183. package/dist/filtering/ToolConstants.js.map +0 -1
  184. package/dist/filtering/ToolFilter.d.ts +0 -82
  185. package/dist/filtering/ToolFilter.d.ts.map +0 -1
  186. package/dist/filtering/ToolFilter.js +0 -296
  187. package/dist/filtering/ToolFilter.js.map +0 -1
  188. package/dist/index.d.ts.map +0 -1
  189. package/dist/index.js.map +0 -1
  190. package/dist/server/McpServer.d.ts +0 -61
  191. package/dist/server/McpServer.d.ts.map +0 -1
  192. package/dist/server/McpServer.js +0 -270
  193. package/dist/server/McpServer.js.map +0 -1
  194. package/dist/transports/http.d.ts +0 -134
  195. package/dist/transports/http.d.ts.map +0 -1
  196. package/dist/transports/http.js +0 -516
  197. package/dist/transports/http.js.map +0 -1
  198. package/dist/transports/index.d.ts +0 -5
  199. package/dist/transports/index.d.ts.map +0 -1
  200. package/dist/transports/index.js +0 -5
  201. package/dist/transports/index.js.map +0 -1
  202. package/dist/types/index.d.ts +0 -380
  203. package/dist/types/index.d.ts.map +0 -1
  204. package/dist/types/index.js +0 -68
  205. package/dist/types/index.js.map +0 -1
  206. package/dist/utils/annotations.d.ts +0 -44
  207. package/dist/utils/annotations.d.ts.map +0 -1
  208. package/dist/utils/annotations.js +0 -77
  209. package/dist/utils/annotations.js.map +0 -1
  210. package/dist/utils/errors.d.ts +0 -155
  211. package/dist/utils/errors.d.ts.map +0 -1
  212. package/dist/utils/errors.js +0 -329
  213. package/dist/utils/errors.js.map +0 -1
  214. package/dist/utils/identifiers.d.ts +0 -121
  215. package/dist/utils/identifiers.d.ts.map +0 -1
  216. package/dist/utils/identifiers.js +0 -319
  217. package/dist/utils/identifiers.js.map +0 -1
  218. package/dist/utils/index.d.ts +0 -7
  219. package/dist/utils/index.d.ts.map +0 -1
  220. package/dist/utils/index.js +0 -7
  221. package/dist/utils/index.js.map +0 -1
  222. package/dist/utils/insightsManager.d.ts +0 -39
  223. package/dist/utils/insightsManager.d.ts.map +0 -1
  224. package/dist/utils/insightsManager.js +0 -63
  225. package/dist/utils/insightsManager.js.map +0 -1
  226. package/dist/utils/logger.d.ts +0 -189
  227. package/dist/utils/logger.d.ts.map +0 -1
  228. package/dist/utils/logger.js +0 -394
  229. package/dist/utils/logger.js.map +0 -1
  230. package/dist/utils/progress-utils.d.ts +0 -54
  231. package/dist/utils/progress-utils.d.ts.map +0 -1
  232. package/dist/utils/progress-utils.js +0 -74
  233. package/dist/utils/progress-utils.js.map +0 -1
  234. package/dist/utils/resourceAnnotations.d.ts +0 -36
  235. package/dist/utils/resourceAnnotations.d.ts.map +0 -1
  236. package/dist/utils/resourceAnnotations.js +0 -57
  237. package/dist/utils/resourceAnnotations.js.map +0 -1
  238. package/dist/utils/where-clause.d.ts +0 -41
  239. package/dist/utils/where-clause.d.ts.map +0 -1
  240. package/dist/utils/where-clause.js +0 -116
  241. package/dist/utils/where-clause.js.map +0 -1
package/dist/cli.js CHANGED
@@ -1,111 +1,132 @@
1
1
  #!/usr/bin/env node
2
- /**
3
- * db-mcp - Command Line Interface
4
- *
5
- * Entry point for running the db-mcp server from the command line.
6
- */
7
- import { createServer, DEFAULT_CONFIG } from "./server/McpServer.js";
8
- /**
9
- * Parse command line arguments
10
- */
2
+ import { DEFAULT_CONFIG, createServer, VERSION } from './chunk-DZQLDEQS.js';
3
+ import './chunk-S5IDDSSB.js';
4
+ import './chunk-AOUL5SHS.js';
5
+
6
+ // src/cli.ts
11
7
  function parseArgs() {
12
- const args = process.argv.slice(2);
13
- const config = {};
14
- const databases = [];
15
- // Track extension flags (apply to last native sqlite database)
16
- let enableCsv = false;
17
- let enableSpatialite = false;
18
- for (let i = 0; i < args.length; i++) {
19
- const arg = args[i];
20
- if (arg === "--transport" || arg === "-t") {
21
- const value = args[++i];
22
- if (value === "stdio" || value === "http" || value === "sse") {
23
- config.transport = value;
24
- }
25
- }
26
- else if (arg === "--port" || arg === "-p") {
27
- const portValue = args[++i];
28
- if (portValue) {
29
- config.port = parseInt(portValue, 10);
30
- }
31
- }
32
- else if (arg === "--stateless") {
33
- // Enable stateless HTTP mode (no session management, no SSE)
34
- config.statelessHttp = true;
35
- }
36
- else if (arg === "--name") {
37
- const nameValue = args[++i];
38
- if (nameValue) {
39
- config.name = nameValue;
40
- }
41
- }
42
- else if (arg === "--version") {
43
- const versionValue = args[++i];
44
- if (versionValue) {
45
- config.version = versionValue;
46
- }
47
- }
48
- else if (arg === "--tool-filter") {
49
- const filterValue = args[++i];
50
- if (filterValue) {
51
- config.toolFilter = filterValue;
52
- }
53
- }
54
- else if (arg === "--sqlite") {
55
- const dbPath = args[++i];
56
- if (dbPath) {
57
- databases.push({
58
- type: "sqlite",
59
- connectionString: dbPath,
60
- });
61
- }
62
- }
63
- else if (arg === "--sqlite-native") {
64
- const dbPath = args[++i];
65
- if (dbPath) {
66
- databases.push({
67
- type: "sqlite",
68
- connectionString: dbPath,
69
- options: {
70
- backend: "better-sqlite3",
71
- csv: enableCsv,
72
- spatialite: enableSpatialite,
73
- },
74
- });
75
- }
76
- }
77
- else if (arg === "--csv") {
78
- enableCsv = true;
79
- // Apply to already-added native database if exists
80
- const lastDb = databases[databases.length - 1];
81
- if (lastDb?.options && "backend" in lastDb.options) {
82
- lastDb.options["csv"] = true;
83
- }
84
- }
85
- else if (arg === "--spatialite") {
86
- enableSpatialite = true;
87
- // Apply to already-added native database if exists
88
- const lastDb = databases[databases.length - 1];
89
- if (lastDb?.options && "backend" in lastDb.options) {
90
- lastDb.options["spatialite"] = true;
91
- }
92
- }
93
- else if (arg === "--help" || arg === "-h") {
94
- printHelp();
95
- process.exit(0);
96
- }
97
- }
98
- if (databases.length > 0) {
99
- config.databases = databases;
8
+ const args = process.argv.slice(2);
9
+ const config = {};
10
+ const databases = [];
11
+ let enableCsv = false;
12
+ let enableSpatialite = false;
13
+ for (let i = 0; i < args.length; i++) {
14
+ const arg = args[i];
15
+ if (arg === "--transport" || arg === "-t") {
16
+ const value = args[++i];
17
+ if (value === "stdio" || value === "http" || value === "sse") {
18
+ config.transport = value;
19
+ }
20
+ } else if (arg === "--port" || arg === "-p") {
21
+ const portValue = args[++i];
22
+ if (portValue) {
23
+ config.port = parseInt(portValue, 10);
24
+ }
25
+ } else if (arg === "--server-host") {
26
+ const hostValue = args[++i];
27
+ if (hostValue) {
28
+ config.host = hostValue;
29
+ }
30
+ } else if (arg === "--stateless") {
31
+ config.statelessHttp = true;
32
+ } else if (arg === "--enable-hsts") {
33
+ config.enableHSTS = true;
34
+ } else if (arg === "--auth-token") {
35
+ const tokenValue = args[++i];
36
+ if (tokenValue) {
37
+ config.authToken = tokenValue;
38
+ }
39
+ } else if (arg === "--oauth-enabled" || arg === "-o") {
40
+ if (!config.oauth) {
41
+ config.oauth = { enabled: true };
42
+ } else {
43
+ config.oauth.enabled = true;
44
+ }
45
+ } else if (arg === "--oauth-issuer") {
46
+ const issuerValue = args[++i];
47
+ if (issuerValue) {
48
+ config.oauth ??= { enabled: true };
49
+ config.oauth.authorizationServerUrl = issuerValue;
50
+ config.oauth.issuer = issuerValue;
51
+ }
52
+ } else if (arg === "--oauth-audience") {
53
+ const audValue = args[++i];
54
+ if (audValue) {
55
+ config.oauth ??= { enabled: true };
56
+ config.oauth.audience = audValue;
57
+ }
58
+ } else if (arg === "--oauth-jwks-uri") {
59
+ const jwksValue = args[++i];
60
+ if (jwksValue) {
61
+ config.oauth ??= { enabled: true };
62
+ config.oauth.jwksUri = jwksValue;
63
+ }
64
+ } else if (arg === "--oauth-clock-tolerance") {
65
+ const tolValue = args[++i];
66
+ if (tolValue) {
67
+ config.oauth ??= { enabled: true };
68
+ config.oauth.clockTolerance = parseInt(tolValue, 10);
69
+ }
70
+ } else if (arg === "--name") {
71
+ const nameValue = args[++i];
72
+ if (nameValue) {
73
+ config.name = nameValue;
74
+ }
75
+ } else if (arg === "--version") {
76
+ const versionValue = args[++i];
77
+ if (versionValue) {
78
+ config.version = versionValue;
79
+ }
80
+ } else if (arg === "--tool-filter") {
81
+ const filterValue = args[++i];
82
+ if (filterValue) {
83
+ config.toolFilter = filterValue;
84
+ }
85
+ } else if (arg === "--sqlite") {
86
+ const dbPath = args[++i];
87
+ if (dbPath) {
88
+ databases.push({
89
+ type: "sqlite",
90
+ connectionString: dbPath
91
+ });
92
+ }
93
+ } else if (arg === "--sqlite-native") {
94
+ const dbPath = args[++i];
95
+ if (dbPath) {
96
+ databases.push({
97
+ type: "sqlite",
98
+ connectionString: dbPath,
99
+ options: {
100
+ backend: "better-sqlite3",
101
+ csv: enableCsv,
102
+ spatialite: enableSpatialite
103
+ }
104
+ });
105
+ }
106
+ } else if (arg === "--csv") {
107
+ enableCsv = true;
108
+ const lastDb = databases[databases.length - 1];
109
+ if (lastDb?.options && "backend" in lastDb.options) {
110
+ lastDb.options["csv"] = true;
111
+ }
112
+ } else if (arg === "--spatialite") {
113
+ enableSpatialite = true;
114
+ const lastDb = databases[databases.length - 1];
115
+ if (lastDb?.options && "backend" in lastDb.options) {
116
+ lastDb.options["spatialite"] = true;
117
+ }
118
+ } else if (arg === "--help" || arg === "-h") {
119
+ printHelp();
120
+ process.exit(0);
100
121
  }
101
- return config;
122
+ }
123
+ if (databases.length > 0) {
124
+ config.databases = databases;
125
+ }
126
+ return config;
102
127
  }
103
- /**
104
- * Print help message
105
- */
106
128
  function printHelp() {
107
- // Use stderr for all output - stdout is reserved for MCP protocol
108
- console.error(`
129
+ console.error(`
109
130
  db-mcp - SQLite MCP Server
110
131
 
111
132
  Usage: db-mcp [options]
@@ -113,8 +134,19 @@ Usage: db-mcp [options]
113
134
  Transport Options:
114
135
  --transport, -t <type> Transport type: stdio (default), http, sse
115
136
  --port, -p <port> HTTP port (default: 3000)
137
+ --server-host <host> Host/IP to bind to (default: 0.0.0.0)
138
+ Use 127.0.0.1 to restrict to local connections
116
139
  --stateless Use stateless HTTP mode (no session management, no SSE)
117
140
  Ideal for serverless deployments (Lambda, Workers)
141
+ --enable-hsts Enable HSTS header (use when behind HTTPS)
142
+
143
+ Authentication Options:
144
+ --auth-token <token> Simple bearer token for HTTP authentication
145
+ --oauth-enabled, -o Enable OAuth 2.1 authentication
146
+ --oauth-issuer <url> Authorization server URL (issuer)
147
+ --oauth-audience <aud> Expected token audience
148
+ --oauth-jwks-uri <url> JWKS URI (auto-discovered from issuer if not set)
149
+ --oauth-clock-tolerance <seconds> Clock tolerance in seconds (default: 60)
118
150
 
119
151
  Database Options:
120
152
  --sqlite <path> Add SQLite database (WASM/sql.js)
@@ -126,7 +158,7 @@ Extension Options (Native only):
126
158
 
127
159
  Server Options:
128
160
  --name <name> Server name (default: db-mcp)
129
- --version <version> Server version (default: 0.1.0)
161
+ --version <version> Server version (default: ${VERSION})
130
162
  --tool-filter <filter> Tool filter string. Supports:
131
163
  Shortcuts: starter, analytics, search, spatial, minimal, full
132
164
  Groups: core, json, text, fts5, stats, vector, geo, ...
@@ -134,6 +166,14 @@ Server Options:
134
166
  Legacy: -vector,-geo (exclusion from all)
135
167
 
136
168
  Environment Variables:
169
+ MCP_HOST Host/IP to bind to (default: 0.0.0.0)
170
+ MCP_AUTH_TOKEN Simple bearer token (same as --auth-token)
171
+ OAUTH_ENABLED Enable OAuth 2.1 (same as --oauth-enabled)
172
+ OAUTH_ISSUER Authorization server URL
173
+ OAUTH_AUDIENCE Expected token audience
174
+ OAUTH_JWKS_URI JWKS URI
175
+ OAUTH_CLOCK_TOLERANCE Clock tolerance in seconds
176
+ MCP_ENABLE_HSTS Enable HSTS header (same as --enable-hsts)
137
177
  DB_MCP_TOOL_FILTER Tool filter string
138
178
  SQLITE_DATABASE SQLite database path
139
179
  CSV_EXTENSION_PATH Custom path to CSV extension binary
@@ -142,95 +182,99 @@ Environment Variables:
142
182
  Examples:
143
183
  db-mcp --sqlite-native ./data.db
144
184
  db-mcp --sqlite-native ./data.db --tool-filter "starter"
145
- db-mcp --sqlite-native ./data.db --tool-filter "core,json,text"
146
- db-mcp --sqlite-native ./data.db --tool-filter "-vector,-stats"
147
- db-mcp --transport http --port 3000 --sqlite ./data.db
185
+ db-mcp --transport http --port 3000 --auth-token my-secret --sqlite ./data.db
186
+ db-mcp --transport http --oauth-enabled --oauth-issuer http://keycloak:8080/realms/mcp --oauth-audience db-mcp --sqlite ./data.db
148
187
 
149
188
  For more information, visit: https://github.com/neverinfamous/db-mcp
150
189
  `);
151
190
  }
152
- /**
153
- * Load configuration from environment variables
154
- */
155
191
  function loadEnvConfig() {
156
- const config = {};
157
- const databases = [];
158
- // Tool filter from environment
159
- const toolFilter = process.env["DB_MCP_TOOL_FILTER"] ?? process.env["TOOL_FILTER"];
160
- if (toolFilter) {
161
- config.toolFilter = toolFilter;
192
+ const config = {};
193
+ const databases = [];
194
+ const host = process.env["MCP_HOST"] ?? process.env["HOST"];
195
+ if (host) {
196
+ config.host = host;
197
+ }
198
+ const authToken = process.env["MCP_AUTH_TOKEN"];
199
+ if (authToken) {
200
+ config.authToken = authToken;
201
+ }
202
+ const oauthEnabled = process.env["OAUTH_ENABLED"] === "true";
203
+ if (oauthEnabled) {
204
+ const oauth = { enabled: true };
205
+ const issuer = process.env["OAUTH_ISSUER"];
206
+ if (issuer) {
207
+ oauth.authorizationServerUrl = issuer;
208
+ oauth.issuer = issuer;
162
209
  }
163
- // SQLite database from environment
164
- const sqliteUri = process.env["SQLITE_DATABASE"] ?? process.env["SQLITE_PATH"];
165
- if (sqliteUri) {
166
- databases.push({ type: "sqlite", connectionString: sqliteUri });
167
- }
168
- if (databases.length > 0) {
169
- config.databases = databases;
170
- }
171
- return config;
210
+ const audience = process.env["OAUTH_AUDIENCE"];
211
+ if (audience) oauth.audience = audience;
212
+ const jwksUri = process.env["OAUTH_JWKS_URI"];
213
+ if (jwksUri) oauth.jwksUri = jwksUri;
214
+ const clockTolerance = process.env["OAUTH_CLOCK_TOLERANCE"];
215
+ if (clockTolerance) oauth.clockTolerance = parseInt(clockTolerance, 10);
216
+ config.oauth = oauth;
217
+ }
218
+ const toolFilter = process.env["DB_MCP_TOOL_FILTER"] ?? process.env["TOOL_FILTER"];
219
+ if (toolFilter) {
220
+ config.toolFilter = toolFilter;
221
+ }
222
+ const sqliteUri = process.env["SQLITE_DATABASE"] ?? process.env["SQLITE_PATH"];
223
+ if (sqliteUri) {
224
+ databases.push({ type: "sqlite", connectionString: sqliteUri });
225
+ }
226
+ if (databases.length > 0) {
227
+ config.databases = databases;
228
+ }
229
+ return config;
172
230
  }
173
- /**
174
- * Main entry point
175
- */
176
231
  async function main() {
177
- try {
178
- // Load configuration from environment, then CLI (CLI overrides env)
179
- const envConfig = loadEnvConfig();
180
- const cliConfig = parseArgs();
181
- const config = {
182
- ...DEFAULT_CONFIG,
183
- ...envConfig,
184
- ...cliConfig,
185
- databases: [
186
- ...(envConfig.databases ?? []),
187
- ...(cliConfig.databases ?? []),
188
- ],
189
- };
190
- // Create server
191
- const server = createServer(config);
192
- // Handle shutdown signals
193
- process.on("SIGINT", () => {
194
- void server.shutdown().then(() => {
195
- process.exit(0);
196
- });
197
- });
198
- process.on("SIGTERM", () => {
199
- void server.shutdown().then(() => {
200
- process.exit(0);
201
- });
202
- });
203
- // Register database adapters based on config.databases
204
- for (const dbConfig of config.databases) {
205
- if (dbConfig.type === "sqlite") {
206
- const options = dbConfig.options;
207
- if (options?.backend === "better-sqlite3") {
208
- // Use native SQLite adapter with FTS5, window functions, transactions
209
- const { NativeSqliteAdapter } = await import("./adapters/sqlite-native/index.js");
210
- const adapter = new NativeSqliteAdapter();
211
- await server.registerAdapter(adapter, dbConfig);
212
- }
213
- else {
214
- // Use sql.js WASM adapter (default)
215
- const { SqliteAdapter } = await import("./adapters/sqlite/index.js");
216
- const adapter = new SqliteAdapter();
217
- await server.registerAdapter(adapter, dbConfig);
218
- }
219
- }
220
- // TODO: Add other database adapters as they are implemented
221
- // else if (dbConfig.type === 'postgresql') { ... }
222
- }
223
- if (config.databases.length === 0) {
224
- console.error("Warning: No databases configured. Use --sqlite, --postgresql, etc. or set DATABASE_URI");
232
+ try {
233
+ const envConfig = loadEnvConfig();
234
+ const cliConfig = parseArgs();
235
+ const config = {
236
+ ...DEFAULT_CONFIG,
237
+ ...envConfig,
238
+ ...cliConfig,
239
+ databases: [
240
+ ...envConfig.databases ?? [],
241
+ ...cliConfig.databases ?? []
242
+ ]
243
+ };
244
+ const server = createServer(config);
245
+ process.on("SIGINT", () => {
246
+ void server.shutdown().then(() => {
247
+ process.exit(0);
248
+ });
249
+ });
250
+ process.on("SIGTERM", () => {
251
+ void server.shutdown().then(() => {
252
+ process.exit(0);
253
+ });
254
+ });
255
+ for (const dbConfig of config.databases) {
256
+ if (dbConfig.type === "sqlite") {
257
+ const options = dbConfig.options;
258
+ if (options?.backend === "better-sqlite3") {
259
+ const { NativeSqliteAdapter } = await import('./sqlite-native-D2LH5ZT7.js');
260
+ const adapter = new NativeSqliteAdapter();
261
+ await server.registerAdapter(adapter, dbConfig);
262
+ } else {
263
+ const { SqliteAdapter } = await import('./sqlite-VHBA4ABV.js');
264
+ const adapter = new SqliteAdapter();
265
+ await server.registerAdapter(adapter, dbConfig);
225
266
  }
226
- // Start server
227
- await server.start();
267
+ }
228
268
  }
229
- catch (error) {
230
- console.error("Fatal error:", error);
231
- process.exit(1);
269
+ if (config.databases.length === 0) {
270
+ console.error(
271
+ "Warning: No databases configured. Use --sqlite or --sqlite-native, or set SQLITE_DATABASE"
272
+ );
232
273
  }
274
+ await server.start();
275
+ } catch (error) {
276
+ console.error("Fatal error:", error);
277
+ process.exit(1);
278
+ }
233
279
  }
234
- // Run
235
280
  main().catch(console.error);
236
- //# sourceMappingURL=cli.js.map