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.
- package/.gitattributes +2 -0
- package/LICENSE +1 -1
- package/README.md +244 -518
- package/dist/chunk-4IA3DB5C.js +135 -0
- package/dist/chunk-AOUL5SHS.js +930 -0
- package/dist/chunk-DWJXQEFA.js +13759 -0
- package/dist/chunk-DZQLDEQS.js +879 -0
- package/dist/chunk-S5IDDSSB.js +74 -0
- package/dist/chunk-Z2GFQU3G.js +363 -0
- package/dist/cli.d.ts +0 -7
- package/dist/cli.js +227 -183
- package/dist/http-VSB7DBJR.js +1541 -0
- package/dist/index.d.ts +842 -10
- package/dist/index.js +5 -17
- package/dist/sqlite-VHBA4ABV.js +600 -0
- package/dist/sqlite-native-D2LH5ZT7.js +2498 -0
- package/dist/worker-script.d.ts +2 -0
- package/dist/worker-script.js +126 -0
- package/package.json +26 -16
- package/playwright.config.ts +101 -0
- package/scripts/generate-server-instructions.ts +111 -0
- package/server.json +5 -6
- package/test-server/README.md +118 -0
- package/test-server/code-map.md +409 -0
- package/test-server/fixtures/sample.csv +6 -0
- package/test-server/reset-database.ps1 +373 -0
- package/test-server/sample.csv +11 -0
- package/test-server/test-agent-experience.md +243 -0
- package/test-server/test-database.sql +388 -0
- package/test-server/test-group-tools.md +861 -0
- package/test-server/test-help-resources.mjs +238 -0
- package/test-server/test-preflight.md +53 -0
- package/test-server/test-prompts.md +354 -0
- package/test-server/test-resources.md +245 -0
- package/test-server/test-tool-annotations.mjs +157 -0
- package/test-server/test-tools-advanced-1.md +517 -0
- package/test-server/test-tools-advanced-2.md +487 -0
- package/test-server/test-tools-codemode.md +629 -0
- package/test-server/test-tools.md +176 -0
- package/test-server/tool-reference.md +236 -0
- package/tsconfig.test.json +9 -0
- package/dist/adapters/DatabaseAdapter.d.ts +0 -141
- package/dist/adapters/DatabaseAdapter.d.ts.map +0 -1
- package/dist/adapters/DatabaseAdapter.js +0 -131
- package/dist/adapters/DatabaseAdapter.js.map +0 -1
- package/dist/adapters/sqlite/SchemaManager.d.ts +0 -58
- package/dist/adapters/sqlite/SchemaManager.d.ts.map +0 -1
- package/dist/adapters/sqlite/SchemaManager.js +0 -187
- package/dist/adapters/sqlite/SchemaManager.js.map +0 -1
- package/dist/adapters/sqlite/SqliteAdapter.d.ts +0 -161
- package/dist/adapters/sqlite/SqliteAdapter.d.ts.map +0 -1
- package/dist/adapters/sqlite/SqliteAdapter.js +0 -741
- package/dist/adapters/sqlite/SqliteAdapter.js.map +0 -1
- package/dist/adapters/sqlite/index.d.ts +0 -9
- package/dist/adapters/sqlite/index.d.ts.map +0 -1
- package/dist/adapters/sqlite/index.js +0 -8
- package/dist/adapters/sqlite/index.js.map +0 -1
- package/dist/adapters/sqlite/json-utils.d.ts +0 -100
- package/dist/adapters/sqlite/json-utils.d.ts.map +0 -1
- package/dist/adapters/sqlite/json-utils.js +0 -274
- package/dist/adapters/sqlite/json-utils.js.map +0 -1
- package/dist/adapters/sqlite/output-schemas.d.ts +0 -1187
- package/dist/adapters/sqlite/output-schemas.d.ts.map +0 -1
- package/dist/adapters/sqlite/output-schemas.js +0 -1337
- package/dist/adapters/sqlite/output-schemas.js.map +0 -1
- package/dist/adapters/sqlite/prompts.d.ts +0 -13
- package/dist/adapters/sqlite/prompts.d.ts.map +0 -1
- package/dist/adapters/sqlite/prompts.js +0 -605
- package/dist/adapters/sqlite/prompts.js.map +0 -1
- package/dist/adapters/sqlite/resources.d.ts +0 -13
- package/dist/adapters/sqlite/resources.d.ts.map +0 -1
- package/dist/adapters/sqlite/resources.js +0 -251
- package/dist/adapters/sqlite/resources.js.map +0 -1
- package/dist/adapters/sqlite/tools/admin.d.ts +0 -14
- package/dist/adapters/sqlite/tools/admin.d.ts.map +0 -1
- package/dist/adapters/sqlite/tools/admin.js +0 -788
- package/dist/adapters/sqlite/tools/admin.js.map +0 -1
- package/dist/adapters/sqlite/tools/core.d.ts +0 -25
- package/dist/adapters/sqlite/tools/core.d.ts.map +0 -1
- package/dist/adapters/sqlite/tools/core.js +0 -359
- package/dist/adapters/sqlite/tools/core.js.map +0 -1
- package/dist/adapters/sqlite/tools/fts.d.ts +0 -13
- package/dist/adapters/sqlite/tools/fts.d.ts.map +0 -1
- package/dist/adapters/sqlite/tools/fts.js +0 -347
- package/dist/adapters/sqlite/tools/fts.js.map +0 -1
- package/dist/adapters/sqlite/tools/geo.d.ts +0 -14
- package/dist/adapters/sqlite/tools/geo.d.ts.map +0 -1
- package/dist/adapters/sqlite/tools/geo.js +0 -252
- package/dist/adapters/sqlite/tools/geo.js.map +0 -1
- package/dist/adapters/sqlite/tools/index.d.ts +0 -30
- package/dist/adapters/sqlite/tools/index.d.ts.map +0 -1
- package/dist/adapters/sqlite/tools/index.js +0 -61
- package/dist/adapters/sqlite/tools/index.js.map +0 -1
- package/dist/adapters/sqlite/tools/json-helpers.d.ts +0 -14
- package/dist/adapters/sqlite/tools/json-helpers.d.ts.map +0 -1
- package/dist/adapters/sqlite/tools/json-helpers.js +0 -477
- package/dist/adapters/sqlite/tools/json-helpers.js.map +0 -1
- package/dist/adapters/sqlite/tools/json-operations.d.ts +0 -14
- package/dist/adapters/sqlite/tools/json-operations.d.ts.map +0 -1
- package/dist/adapters/sqlite/tools/json-operations.js +0 -839
- package/dist/adapters/sqlite/tools/json-operations.js.map +0 -1
- package/dist/adapters/sqlite/tools/stats.d.ts +0 -15
- package/dist/adapters/sqlite/tools/stats.d.ts.map +0 -1
- package/dist/adapters/sqlite/tools/stats.js +0 -1219
- package/dist/adapters/sqlite/tools/stats.js.map +0 -1
- package/dist/adapters/sqlite/tools/text.d.ts +0 -14
- package/dist/adapters/sqlite/tools/text.d.ts.map +0 -1
- package/dist/adapters/sqlite/tools/text.js +0 -1141
- package/dist/adapters/sqlite/tools/text.js.map +0 -1
- package/dist/adapters/sqlite/tools/vector.d.ts +0 -14
- package/dist/adapters/sqlite/tools/vector.d.ts.map +0 -1
- package/dist/adapters/sqlite/tools/vector.js +0 -613
- package/dist/adapters/sqlite/tools/vector.js.map +0 -1
- package/dist/adapters/sqlite/tools/virtual.d.ts +0 -13
- package/dist/adapters/sqlite/tools/virtual.d.ts.map +0 -1
- package/dist/adapters/sqlite/tools/virtual.js +0 -930
- package/dist/adapters/sqlite/tools/virtual.js.map +0 -1
- package/dist/adapters/sqlite/types.d.ts +0 -207
- package/dist/adapters/sqlite/types.d.ts.map +0 -1
- package/dist/adapters/sqlite/types.js +0 -186
- package/dist/adapters/sqlite/types.js.map +0 -1
- package/dist/adapters/sqlite-native/NativeSqliteAdapter.d.ts +0 -163
- package/dist/adapters/sqlite-native/NativeSqliteAdapter.d.ts.map +0 -1
- package/dist/adapters/sqlite-native/NativeSqliteAdapter.js +0 -748
- package/dist/adapters/sqlite-native/NativeSqliteAdapter.js.map +0 -1
- package/dist/adapters/sqlite-native/index.d.ts +0 -11
- package/dist/adapters/sqlite-native/index.d.ts.map +0 -1
- package/dist/adapters/sqlite-native/index.js +0 -11
- package/dist/adapters/sqlite-native/index.js.map +0 -1
- package/dist/adapters/sqlite-native/tools/spatialite.d.ts +0 -19
- package/dist/adapters/sqlite-native/tools/spatialite.d.ts.map +0 -1
- package/dist/adapters/sqlite-native/tools/spatialite.js +0 -628
- package/dist/adapters/sqlite-native/tools/spatialite.js.map +0 -1
- package/dist/adapters/sqlite-native/tools/transactions.d.ts +0 -12
- package/dist/adapters/sqlite-native/tools/transactions.d.ts.map +0 -1
- package/dist/adapters/sqlite-native/tools/transactions.js +0 -255
- package/dist/adapters/sqlite-native/tools/transactions.js.map +0 -1
- package/dist/adapters/sqlite-native/tools/window.d.ts +0 -12
- package/dist/adapters/sqlite-native/tools/window.d.ts.map +0 -1
- package/dist/adapters/sqlite-native/tools/window.js +0 -370
- package/dist/adapters/sqlite-native/tools/window.js.map +0 -1
- package/dist/auth/AuthorizationServerDiscovery.d.ts +0 -90
- package/dist/auth/AuthorizationServerDiscovery.d.ts.map +0 -1
- package/dist/auth/AuthorizationServerDiscovery.js +0 -204
- package/dist/auth/AuthorizationServerDiscovery.js.map +0 -1
- package/dist/auth/OAuthResourceServer.d.ts +0 -65
- package/dist/auth/OAuthResourceServer.d.ts.map +0 -1
- package/dist/auth/OAuthResourceServer.js +0 -121
- package/dist/auth/OAuthResourceServer.js.map +0 -1
- package/dist/auth/TokenValidator.d.ts +0 -60
- package/dist/auth/TokenValidator.d.ts.map +0 -1
- package/dist/auth/TokenValidator.js +0 -235
- package/dist/auth/TokenValidator.js.map +0 -1
- package/dist/auth/errors.d.ts +0 -74
- package/dist/auth/errors.d.ts.map +0 -1
- package/dist/auth/errors.js +0 -133
- package/dist/auth/errors.js.map +0 -1
- package/dist/auth/index.d.ts +0 -13
- package/dist/auth/index.d.ts.map +0 -1
- package/dist/auth/index.js +0 -15
- package/dist/auth/index.js.map +0 -1
- package/dist/auth/middleware.d.ts +0 -81
- package/dist/auth/middleware.d.ts.map +0 -1
- package/dist/auth/middleware.js +0 -291
- package/dist/auth/middleware.js.map +0 -1
- package/dist/auth/scopes.d.ts +0 -136
- package/dist/auth/scopes.d.ts.map +0 -1
- package/dist/auth/scopes.js +0 -349
- package/dist/auth/scopes.js.map +0 -1
- package/dist/auth/types.d.ts +0 -257
- package/dist/auth/types.d.ts.map +0 -1
- package/dist/auth/types.js +0 -8
- package/dist/auth/types.js.map +0 -1
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/constants/ServerInstructions.d.ts +0 -45
- package/dist/constants/ServerInstructions.d.ts.map +0 -1
- package/dist/constants/ServerInstructions.js +0 -356
- package/dist/constants/ServerInstructions.js.map +0 -1
- package/dist/filtering/ToolConstants.d.ts +0 -34
- package/dist/filtering/ToolConstants.d.ts.map +0 -1
- package/dist/filtering/ToolConstants.js +0 -174
- package/dist/filtering/ToolConstants.js.map +0 -1
- package/dist/filtering/ToolFilter.d.ts +0 -82
- package/dist/filtering/ToolFilter.d.ts.map +0 -1
- package/dist/filtering/ToolFilter.js +0 -296
- package/dist/filtering/ToolFilter.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/server/McpServer.d.ts +0 -61
- package/dist/server/McpServer.d.ts.map +0 -1
- package/dist/server/McpServer.js +0 -270
- package/dist/server/McpServer.js.map +0 -1
- package/dist/transports/http.d.ts +0 -134
- package/dist/transports/http.d.ts.map +0 -1
- package/dist/transports/http.js +0 -516
- package/dist/transports/http.js.map +0 -1
- package/dist/transports/index.d.ts +0 -5
- package/dist/transports/index.d.ts.map +0 -1
- package/dist/transports/index.js +0 -5
- package/dist/transports/index.js.map +0 -1
- package/dist/types/index.d.ts +0 -380
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -68
- package/dist/types/index.js.map +0 -1
- package/dist/utils/annotations.d.ts +0 -44
- package/dist/utils/annotations.d.ts.map +0 -1
- package/dist/utils/annotations.js +0 -77
- package/dist/utils/annotations.js.map +0 -1
- package/dist/utils/errors.d.ts +0 -155
- package/dist/utils/errors.d.ts.map +0 -1
- package/dist/utils/errors.js +0 -329
- package/dist/utils/errors.js.map +0 -1
- package/dist/utils/identifiers.d.ts +0 -121
- package/dist/utils/identifiers.d.ts.map +0 -1
- package/dist/utils/identifiers.js +0 -319
- package/dist/utils/identifiers.js.map +0 -1
- package/dist/utils/index.d.ts +0 -7
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -7
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/insightsManager.d.ts +0 -39
- package/dist/utils/insightsManager.d.ts.map +0 -1
- package/dist/utils/insightsManager.js +0 -63
- package/dist/utils/insightsManager.js.map +0 -1
- package/dist/utils/logger.d.ts +0 -189
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js +0 -394
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/progress-utils.d.ts +0 -54
- package/dist/utils/progress-utils.d.ts.map +0 -1
- package/dist/utils/progress-utils.js +0 -74
- package/dist/utils/progress-utils.js.map +0 -1
- package/dist/utils/resourceAnnotations.d.ts +0 -36
- package/dist/utils/resourceAnnotations.d.ts.map +0 -1
- package/dist/utils/resourceAnnotations.js +0 -57
- package/dist/utils/resourceAnnotations.js.map +0 -1
- package/dist/utils/where-clause.d.ts +0 -41
- package/dist/utils/where-clause.d.ts.map +0 -1
- package/dist/utils/where-clause.js +0 -116
- 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
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
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 --
|
|
146
|
-
db-mcp --
|
|
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
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
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
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
if (
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
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
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
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
|
-
|
|
227
|
-
await server.start();
|
|
267
|
+
}
|
|
228
268
|
}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
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
|