db-mcp 3.0.1 → 4.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.
- package/README.md +92 -75
- package/dist/.tsbuildinfo +1 -1
- package/dist/adapters/database-adapter.d.ts +2 -1
- package/dist/adapters/database-adapter.d.ts.map +1 -1
- package/dist/adapters/registration/resources.d.ts.map +1 -1
- package/dist/adapters/registration/tools.d.ts.map +1 -1
- package/dist/adapters/sqlite/prompts/analysis.d.ts.map +1 -1
- package/dist/adapters/sqlite/resources.d.ts +1 -1
- package/dist/adapters/sqlite/resources.d.ts.map +1 -1
- package/dist/adapters/sqlite/schemas/admin.d.ts +29 -15
- package/dist/adapters/sqlite/schemas/admin.d.ts.map +1 -1
- package/dist/adapters/sqlite/schemas/core.d.ts +2 -0
- package/dist/adapters/sqlite/schemas/core.d.ts.map +1 -1
- package/dist/adapters/sqlite/schemas/fts.d.ts +4 -0
- package/dist/adapters/sqlite/schemas/fts.d.ts.map +1 -1
- package/dist/adapters/sqlite/schemas/introspection.d.ts +20 -11
- package/dist/adapters/sqlite/schemas/introspection.d.ts.map +1 -1
- package/dist/adapters/sqlite/schemas/spatialite.d.ts +1 -0
- package/dist/adapters/sqlite/schemas/spatialite.d.ts.map +1 -1
- package/dist/adapters/sqlite/schemas/text.d.ts +36 -0
- package/dist/adapters/sqlite/schemas/text.d.ts.map +1 -1
- package/dist/adapters/sqlite/sqlite-adapter.d.ts.map +1 -1
- package/dist/adapters/sqlite/tools/admin/index.d.ts.map +1 -1
- package/dist/adapters/sqlite/tools/admin/pragma.d.ts +0 -4
- package/dist/adapters/sqlite/tools/admin/pragma.d.ts.map +1 -1
- package/dist/adapters/sqlite/tools/core/queries.d.ts.map +1 -1
- package/dist/adapters/sqlite/tools/core/tables.d.ts.map +1 -1
- package/dist/adapters/sqlite/tools/fts.d.ts.map +1 -1
- package/dist/adapters/sqlite/tools/introspection/diagnostics/indexes.d.ts.map +1 -1
- package/dist/adapters/sqlite/tools/json-helpers/read.d.ts.map +1 -1
- package/dist/adapters/sqlite/tools/json-operations/crud.d.ts.map +1 -1
- package/dist/adapters/sqlite/tools/json-operations/query.d.ts.map +1 -1
- package/dist/adapters/sqlite/tools/text/helpers.d.ts +9 -0
- package/dist/adapters/sqlite/tools/text/helpers.d.ts.map +1 -1
- package/dist/adapters/sqlite/tools/text/index.d.ts.map +1 -1
- package/dist/adapters/sqlite/tools/text/search.d.ts +4 -0
- package/dist/adapters/sqlite/tools/text/search.d.ts.map +1 -1
- package/dist/adapters/sqlite/types.d.ts +4 -0
- package/dist/adapters/sqlite/types.d.ts.map +1 -1
- package/dist/adapters/sqlite-native/native-sqlite-adapter.d.ts.map +1 -1
- package/dist/adapters/sqlite-native/tools/spatialite/tools.d.ts.map +1 -1
- package/dist/audit/interceptor.d.ts.map +1 -1
- package/dist/audit/logger.d.ts +26 -25
- package/dist/audit/logger.d.ts.map +1 -1
- package/dist/{chunk-W5WQVNVX.js → chunk-EQF3WZHX.js} +10 -17
- package/dist/{chunk-37G4DLL6.js → chunk-NIC5Z2CA.js} +732 -138
- package/dist/chunk-R5M4WKDM.js +987 -0
- package/dist/{chunk-NV34JSQM.js → chunk-TGE7LFAR.js} +708 -996
- package/dist/{chunk-L552U3QS.js → chunk-Y57WFKAP.js} +227 -9
- package/dist/cli.js +103 -10
- package/dist/codemode/sandbox.d.ts.map +1 -1
- package/dist/constants/server-instructions.d.ts +1 -1
- package/dist/constants/server-instructions.d.ts.map +1 -1
- package/dist/filtering/tool-constants.d.ts +9 -9
- package/dist/{http-HWTUVFIA.js → http-2WGR3E5K.js} +13 -1
- package/dist/index.js +4 -4
- package/dist/observability/metrics.d.ts +36 -0
- package/dist/observability/metrics.d.ts.map +1 -0
- package/dist/observability/system-db.d.ts +13 -0
- package/dist/observability/system-db.d.ts.map +1 -0
- package/dist/server/mcp-server.d.ts +3 -0
- package/dist/server/mcp-server.d.ts.map +1 -1
- package/dist/server/registration/admin-tools.d.ts +6 -0
- package/dist/server/registration/admin-tools.d.ts.map +1 -0
- package/dist/server/registration/audit-tools.d.ts +4 -0
- package/dist/server/registration/audit-tools.d.ts.map +1 -1
- package/dist/server/registration/help-resources.d.ts.map +1 -1
- package/dist/server/registration/index.d.ts +3 -1
- package/dist/server/registration/index.d.ts.map +1 -1
- package/dist/server/registration/observability-resources.d.ts +11 -0
- package/dist/server/registration/observability-resources.d.ts.map +1 -0
- package/dist/server/subscription-manager.d.ts +35 -0
- package/dist/server/subscription-manager.d.ts.map +1 -0
- package/dist/{sqlite-TB56Z7G3.js → sqlite-D4WCNPU4.js} +8 -5
- package/dist/{sqlite-native-IF75BB3O.js → sqlite-native-DLVS2T52.js} +159 -34
- package/dist/transports/http/sessions/legacy-sse.d.ts.map +1 -1
- package/dist/transports/http/sessions/stateful.d.ts.map +1 -1
- package/dist/transports/http/transport.d.ts.map +1 -1
- package/dist/transports/http/types.d.ts +2 -0
- package/dist/transports/http/types.d.ts.map +1 -1
- package/dist/types/server.d.ts +2 -0
- package/dist/types/server.d.ts.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/logger/types.d.ts +1 -1
- package/dist/utils/logger/types.d.ts.map +1 -1
- package/dist/utils/tokens.d.ts +15 -0
- package/dist/utils/tokens.d.ts.map +1 -0
- package/package.json +10 -7
- package/dist/chunk-E5IESRTK.js +0 -489
- package/dist/utils/insights-manager.d.ts +0 -39
- package/dist/utils/insights-manager.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/sqlite-native/tools/spatialite/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,cAAc,EAEf,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AA2B1E;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,mBAAmB,GAC3B,cAAc,
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/sqlite-native/tools/spatialite/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,cAAc,EAEf,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AA2B1E;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,mBAAmB,GAC3B,cAAc,CAuDhB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,mBAAmB,GAC3B,cAAc,CAkHhB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,mBAAmB,GAC3B,cAAc,CAuChB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,mBAAmB,GAC3B,cAAc,CA2MhB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interceptor.d.ts","sourceRoot":"","sources":["../../src/audit/interceptor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"interceptor.d.ts","sourceRoot":"","sources":["../../src/audit/interceptor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAuE/E;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;OASG;IACH,MAAM,CAAC,CAAC,EACN,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC3B,OAAO,CAAC,CAAC,CAAC,CAAC;IAEd;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACtD;AAiBD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,WAAW,EACxB,aAAa,CAAC,EAAE,aAAa,GAC5B,gBAAgB,CAyJlB"}
|
package/dist/audit/logger.d.ts
CHANGED
|
@@ -1,37 +1,36 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* db-mcp — Audit Logger
|
|
3
3
|
*
|
|
4
|
-
* Async-buffered
|
|
5
|
-
*
|
|
4
|
+
* Async-buffered SQLite writer for the audit trail. Uses SystemDb
|
|
5
|
+
* to persist structured logs for queryability, or writes to
|
|
6
6
|
* stderr for containerised deployments (`--audit-log stderr`).
|
|
7
7
|
*
|
|
8
8
|
* Non-throwing by design: audit failures log to stderr but never
|
|
9
9
|
* propagate to tool callers.
|
|
10
10
|
*/
|
|
11
11
|
import type { AuditConfig, AuditEntry } from "./types.js";
|
|
12
|
+
import type { SystemDb } from "../observability/system-db.js";
|
|
12
13
|
export declare class AuditLogger {
|
|
13
14
|
readonly config: AuditConfig;
|
|
14
15
|
private buffer;
|
|
15
16
|
private flushTimer;
|
|
16
17
|
private activeFlush;
|
|
17
18
|
private closed;
|
|
18
|
-
private dirEnsured;
|
|
19
19
|
private readonly stderrMode;
|
|
20
|
-
|
|
20
|
+
private systemDb;
|
|
21
|
+
constructor(config: AuditConfig, systemDb?: SystemDb | null);
|
|
21
22
|
/**
|
|
22
|
-
*
|
|
23
|
-
* Provides immediate confirmation that audit is configured correctly.
|
|
24
|
-
* Non-throwing — falls back silently if the path is inaccessible.
|
|
23
|
+
* Initialization is handled externally by SystemDb.
|
|
25
24
|
*/
|
|
26
25
|
init(): Promise<void>;
|
|
27
26
|
/**
|
|
28
27
|
* Append an audit entry to the buffer.
|
|
29
|
-
* Non-blocking — the entry is
|
|
30
|
-
* actual
|
|
28
|
+
* Non-blocking — the entry is queued; the
|
|
29
|
+
* actual DB write happens on the next flush cycle.
|
|
31
30
|
*/
|
|
32
31
|
log(entry: AuditEntry): void;
|
|
33
32
|
/**
|
|
34
|
-
* Flush the buffer to
|
|
33
|
+
* Flush the buffer to SystemDb or stderr.
|
|
35
34
|
* Safe to call concurrently — serialises via `this.activeFlush` Promise.
|
|
36
35
|
*/
|
|
37
36
|
flush(): Promise<void>;
|
|
@@ -40,23 +39,25 @@ export declare class AuditLogger {
|
|
|
40
39
|
*/
|
|
41
40
|
close(): Promise<void>;
|
|
42
41
|
/**
|
|
43
|
-
* Read the most recent audit entries from the
|
|
44
|
-
*
|
|
45
|
-
* read from disk, preventing O(n) memory spikes for large audit logs.
|
|
46
|
-
* Used by the `sqlite://audit` resource.
|
|
47
|
-
*
|
|
48
|
-
* @param count Maximum number of entries to return (default 50)
|
|
42
|
+
* Read the most recent audit entries from the SystemDb.
|
|
43
|
+
* Retrieve recent entries directly from the SystemDb.
|
|
49
44
|
*/
|
|
50
|
-
recent(
|
|
45
|
+
recent(limit?: number): Promise<AuditEntry[]>;
|
|
51
46
|
/**
|
|
52
|
-
*
|
|
47
|
+
* Search and filter audit entries from the SystemDb.
|
|
53
48
|
*/
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
49
|
+
search(filters: {
|
|
50
|
+
tool?: string | undefined;
|
|
51
|
+
category?: string | undefined;
|
|
52
|
+
success?: boolean | undefined;
|
|
53
|
+
requestId?: string | undefined;
|
|
54
|
+
fromTimestamp?: string | undefined;
|
|
55
|
+
toTimestamp?: string | undefined;
|
|
56
|
+
limit?: number | undefined;
|
|
57
|
+
offset?: number | undefined;
|
|
58
|
+
}): Promise<{
|
|
59
|
+
entries: AuditEntry[];
|
|
60
|
+
totalCount: number;
|
|
61
|
+
}>;
|
|
61
62
|
}
|
|
62
63
|
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/audit/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/audit/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAiB,MAAM,YAAY,CAAC;AAEzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AA8B9D,qBAAa,WAAW;IACtB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAE7B,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,UAAU,CAA+C;IACjE,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAU;IACrC,OAAO,CAAC,QAAQ,CAAkB;gBAEtB,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAE,QAAQ,GAAG,IAAW;IAcjE;;OAEG;IAEG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B;;;;OAIG;IACH,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAa5B;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmE5B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAW5B;;;OAGG;IACG,MAAM,CAAC,KAAK,GAAE,MAA6B,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAyCzE;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE;QACpB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC9B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC/B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACnC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACjC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC7B,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,UAAU,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;CA4E3D"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { registerToolScope } from './chunk-
|
|
2
|
-
import { ValidationError, getAuthContext, isToolEnabled, ConnectionError, registerToolScopes, scopesGrantToolAccess, InsufficientScopeError, formatHandlerError } from './chunk-
|
|
1
|
+
import { registerToolScope, estimateTokens } from './chunk-R5M4WKDM.js';
|
|
2
|
+
import { ValidationError, getAuthContext, isToolEnabled, ConnectionError, registerToolScopes, scopesGrantToolAccess, InsufficientScopeError, formatHandlerError, metrics } from './chunk-Y57WFKAP.js';
|
|
3
3
|
import sqliteParser from 'sqlite-parser';
|
|
4
4
|
import { ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
5
5
|
import { z } from 'zod';
|
|
6
|
+
import { EventEmitter } from 'events';
|
|
6
7
|
|
|
7
8
|
var UNSAFE_FUNCTIONS = /* @__PURE__ */ new Set([
|
|
8
9
|
"LOAD_EXTENSION",
|
|
@@ -208,9 +209,7 @@ function registerToolImpl(adapter, server, tool) {
|
|
|
208
209
|
...result,
|
|
209
210
|
_meta: { tokenEstimate: 0 }
|
|
210
211
|
});
|
|
211
|
-
const tokenEstimate =
|
|
212
|
-
Buffer.byteLength(enriched, "utf8") / 4
|
|
213
|
-
);
|
|
212
|
+
const tokenEstimate = estimateTokens(enriched, "json");
|
|
214
213
|
const finalText = enriched.replace(
|
|
215
214
|
'"tokenEstimate":0',
|
|
216
215
|
`"tokenEstimate":${String(tokenEstimate)}`
|
|
@@ -235,9 +234,7 @@ function registerToolImpl(adapter, server, tool) {
|
|
|
235
234
|
null,
|
|
236
235
|
2
|
|
237
236
|
);
|
|
238
|
-
const tokenEstimate =
|
|
239
|
-
Buffer.byteLength(withMeta, "utf8") / 4
|
|
240
|
-
);
|
|
237
|
+
const tokenEstimate = estimateTokens(withMeta, "json");
|
|
241
238
|
const finalText = withMeta.replace(
|
|
242
239
|
'"tokenEstimate": 0',
|
|
243
240
|
`"tokenEstimate": ${String(tokenEstimate)}`
|
|
@@ -276,9 +273,7 @@ function registerToolImpl(adapter, server, tool) {
|
|
|
276
273
|
...structured,
|
|
277
274
|
_meta: { tokenEstimate: 0 }
|
|
278
275
|
});
|
|
279
|
-
const tokenEstimate2 =
|
|
280
|
-
Buffer.byteLength(enriched, "utf8") / 4
|
|
281
|
-
);
|
|
276
|
+
const tokenEstimate2 = estimateTokens(enriched, "json");
|
|
282
277
|
const finalText2 = enriched.replace(
|
|
283
278
|
'"tokenEstimate":0',
|
|
284
279
|
`"tokenEstimate":${String(tokenEstimate2)}`
|
|
@@ -299,9 +294,7 @@ function registerToolImpl(adapter, server, tool) {
|
|
|
299
294
|
null,
|
|
300
295
|
2
|
|
301
296
|
);
|
|
302
|
-
const tokenEstimate =
|
|
303
|
-
Buffer.byteLength(withMeta, "utf8") / 4
|
|
304
|
-
);
|
|
297
|
+
const tokenEstimate = estimateTokens(withMeta, "json");
|
|
305
298
|
const finalText = withMeta.replace(
|
|
306
299
|
'"tokenEstimate": 0',
|
|
307
300
|
`"tokenEstimate": ${String(tokenEstimate)}`
|
|
@@ -332,6 +325,7 @@ function registerResourceImpl(adapter, server, resource) {
|
|
|
332
325
|
...resource.icons ? { icons: resource.icons } : {}
|
|
333
326
|
},
|
|
334
327
|
async (resourceUri, _variables) => {
|
|
328
|
+
metrics.recordResourceRead(resourceUri.toString());
|
|
335
329
|
const context = adapter.createContext();
|
|
336
330
|
const content = await resource.handler(resourceUri.toString(), context);
|
|
337
331
|
return {
|
|
@@ -355,6 +349,7 @@ function registerResourceImpl(adapter, server, resource) {
|
|
|
355
349
|
...resource.icons ? { icons: resource.icons } : {}
|
|
356
350
|
},
|
|
357
351
|
async (resourceUri) => {
|
|
352
|
+
metrics.recordResourceRead(resourceUri.toString());
|
|
358
353
|
const context = adapter.createContext();
|
|
359
354
|
const content = await resource.handler(resourceUri.toString(), context);
|
|
360
355
|
return {
|
|
@@ -413,9 +408,7 @@ function registerPromptImpl(adapter, server, prompt) {
|
|
|
413
408
|
);
|
|
414
409
|
}
|
|
415
410
|
}
|
|
416
|
-
|
|
417
|
-
// src/adapters/database-adapter.ts
|
|
418
|
-
var DatabaseAdapter = class {
|
|
411
|
+
var DatabaseAdapter = class extends EventEmitter {
|
|
419
412
|
/** Connection status */
|
|
420
413
|
connected = false;
|
|
421
414
|
/** Database configuration */
|