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.
Files changed (92) hide show
  1. package/README.md +92 -75
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/adapters/database-adapter.d.ts +2 -1
  4. package/dist/adapters/database-adapter.d.ts.map +1 -1
  5. package/dist/adapters/registration/resources.d.ts.map +1 -1
  6. package/dist/adapters/registration/tools.d.ts.map +1 -1
  7. package/dist/adapters/sqlite/prompts/analysis.d.ts.map +1 -1
  8. package/dist/adapters/sqlite/resources.d.ts +1 -1
  9. package/dist/adapters/sqlite/resources.d.ts.map +1 -1
  10. package/dist/adapters/sqlite/schemas/admin.d.ts +29 -15
  11. package/dist/adapters/sqlite/schemas/admin.d.ts.map +1 -1
  12. package/dist/adapters/sqlite/schemas/core.d.ts +2 -0
  13. package/dist/adapters/sqlite/schemas/core.d.ts.map +1 -1
  14. package/dist/adapters/sqlite/schemas/fts.d.ts +4 -0
  15. package/dist/adapters/sqlite/schemas/fts.d.ts.map +1 -1
  16. package/dist/adapters/sqlite/schemas/introspection.d.ts +20 -11
  17. package/dist/adapters/sqlite/schemas/introspection.d.ts.map +1 -1
  18. package/dist/adapters/sqlite/schemas/spatialite.d.ts +1 -0
  19. package/dist/adapters/sqlite/schemas/spatialite.d.ts.map +1 -1
  20. package/dist/adapters/sqlite/schemas/text.d.ts +36 -0
  21. package/dist/adapters/sqlite/schemas/text.d.ts.map +1 -1
  22. package/dist/adapters/sqlite/sqlite-adapter.d.ts.map +1 -1
  23. package/dist/adapters/sqlite/tools/admin/index.d.ts.map +1 -1
  24. package/dist/adapters/sqlite/tools/admin/pragma.d.ts +0 -4
  25. package/dist/adapters/sqlite/tools/admin/pragma.d.ts.map +1 -1
  26. package/dist/adapters/sqlite/tools/core/queries.d.ts.map +1 -1
  27. package/dist/adapters/sqlite/tools/core/tables.d.ts.map +1 -1
  28. package/dist/adapters/sqlite/tools/fts.d.ts.map +1 -1
  29. package/dist/adapters/sqlite/tools/introspection/diagnostics/indexes.d.ts.map +1 -1
  30. package/dist/adapters/sqlite/tools/json-helpers/read.d.ts.map +1 -1
  31. package/dist/adapters/sqlite/tools/json-operations/crud.d.ts.map +1 -1
  32. package/dist/adapters/sqlite/tools/json-operations/query.d.ts.map +1 -1
  33. package/dist/adapters/sqlite/tools/text/helpers.d.ts +9 -0
  34. package/dist/adapters/sqlite/tools/text/helpers.d.ts.map +1 -1
  35. package/dist/adapters/sqlite/tools/text/index.d.ts.map +1 -1
  36. package/dist/adapters/sqlite/tools/text/search.d.ts +4 -0
  37. package/dist/adapters/sqlite/tools/text/search.d.ts.map +1 -1
  38. package/dist/adapters/sqlite/types.d.ts +4 -0
  39. package/dist/adapters/sqlite/types.d.ts.map +1 -1
  40. package/dist/adapters/sqlite-native/native-sqlite-adapter.d.ts.map +1 -1
  41. package/dist/adapters/sqlite-native/tools/spatialite/tools.d.ts.map +1 -1
  42. package/dist/audit/interceptor.d.ts.map +1 -1
  43. package/dist/audit/logger.d.ts +26 -25
  44. package/dist/audit/logger.d.ts.map +1 -1
  45. package/dist/{chunk-W5WQVNVX.js → chunk-EQF3WZHX.js} +10 -17
  46. package/dist/{chunk-37G4DLL6.js → chunk-NIC5Z2CA.js} +732 -138
  47. package/dist/chunk-R5M4WKDM.js +987 -0
  48. package/dist/{chunk-NV34JSQM.js → chunk-TGE7LFAR.js} +708 -996
  49. package/dist/{chunk-L552U3QS.js → chunk-Y57WFKAP.js} +227 -9
  50. package/dist/cli.js +103 -10
  51. package/dist/codemode/sandbox.d.ts.map +1 -1
  52. package/dist/constants/server-instructions.d.ts +1 -1
  53. package/dist/constants/server-instructions.d.ts.map +1 -1
  54. package/dist/filtering/tool-constants.d.ts +9 -9
  55. package/dist/{http-HWTUVFIA.js → http-2WGR3E5K.js} +13 -1
  56. package/dist/index.js +4 -4
  57. package/dist/observability/metrics.d.ts +36 -0
  58. package/dist/observability/metrics.d.ts.map +1 -0
  59. package/dist/observability/system-db.d.ts +13 -0
  60. package/dist/observability/system-db.d.ts.map +1 -0
  61. package/dist/server/mcp-server.d.ts +3 -0
  62. package/dist/server/mcp-server.d.ts.map +1 -1
  63. package/dist/server/registration/admin-tools.d.ts +6 -0
  64. package/dist/server/registration/admin-tools.d.ts.map +1 -0
  65. package/dist/server/registration/audit-tools.d.ts +4 -0
  66. package/dist/server/registration/audit-tools.d.ts.map +1 -1
  67. package/dist/server/registration/help-resources.d.ts.map +1 -1
  68. package/dist/server/registration/index.d.ts +3 -1
  69. package/dist/server/registration/index.d.ts.map +1 -1
  70. package/dist/server/registration/observability-resources.d.ts +11 -0
  71. package/dist/server/registration/observability-resources.d.ts.map +1 -0
  72. package/dist/server/subscription-manager.d.ts +35 -0
  73. package/dist/server/subscription-manager.d.ts.map +1 -0
  74. package/dist/{sqlite-TB56Z7G3.js → sqlite-D4WCNPU4.js} +8 -5
  75. package/dist/{sqlite-native-IF75BB3O.js → sqlite-native-DLVS2T52.js} +159 -34
  76. package/dist/transports/http/sessions/legacy-sse.d.ts.map +1 -1
  77. package/dist/transports/http/sessions/stateful.d.ts.map +1 -1
  78. package/dist/transports/http/transport.d.ts.map +1 -1
  79. package/dist/transports/http/types.d.ts +2 -0
  80. package/dist/transports/http/types.d.ts.map +1 -1
  81. package/dist/types/server.d.ts +2 -0
  82. package/dist/types/server.d.ts.map +1 -1
  83. package/dist/utils/index.d.ts +1 -0
  84. package/dist/utils/index.d.ts.map +1 -1
  85. package/dist/utils/logger/types.d.ts +1 -1
  86. package/dist/utils/logger/types.d.ts.map +1 -1
  87. package/dist/utils/tokens.d.ts +15 -0
  88. package/dist/utils/tokens.d.ts.map +1 -0
  89. package/package.json +10 -7
  90. package/dist/chunk-E5IESRTK.js +0 -489
  91. package/dist/utils/insights-manager.d.ts +0 -39
  92. package/dist/utils/insights-manager.d.ts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/observability/metrics.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAK/C,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;CACf;AA+ED,qBAAa,eAAe;IAC1B,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,UAAU,CAA+C;IAEjE,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAMrC,OAAO,CAAC,cAAc;IAsCtB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,SAAS;IAiCjB,KAAK,IAAI,IAAI;IAQb,cAAc,CACZ,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,EAChB,MAAM,SAAI,GACT,IAAI;IASP,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IASrC,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAkBrC,YAAY,IAAI,MAAM;CAwCvB;AAGD,eAAO,MAAM,OAAO,iBAAwB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { Database } from "better-sqlite3";
2
+ export interface SystemDbConfig {
3
+ dbPath: string;
4
+ }
5
+ export declare class SystemDb {
6
+ private db;
7
+ private readonly config;
8
+ constructor(config: SystemDbConfig);
9
+ init(): Promise<void>;
10
+ getDb(): Database;
11
+ close(): void;
12
+ }
13
+ //# sourceMappingURL=system-db.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-db.d.ts","sourceRoot":"","sources":["../../src/observability/system-db.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAK/C,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,EAAE,CAAyB;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;gBAE5B,MAAM,EAAE,cAAc;IAI5B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmF3B,KAAK,IAAI,QAAQ;IAOjB,KAAK,IAAI,IAAI;CAMd"}
@@ -6,6 +6,7 @@
6
6
  */
7
7
  import type { McpServerConfig, DatabaseConfig } from "../types/index.js";
8
8
  import type { DatabaseAdapter } from "../adapters/database-adapter.js";
9
+ import { SubscriptionManager } from "./subscription-manager.js";
9
10
  /**
10
11
  * Main db-mcp server class
11
12
  *
@@ -18,8 +19,10 @@ export declare class DbMcpServer {
18
19
  private config;
19
20
  private auditLogger;
20
21
  private backupManager;
22
+ private systemDb;
21
23
  private auditInterceptor;
22
24
  private auditInitPromise;
25
+ readonly subscriptionManager: SubscriptionManager;
23
26
  constructor(config: McpServerConfig);
24
27
  /**
25
28
  * Register a database adapter
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/server/mcp-server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EAEf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAyEvE;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,QAAQ,CAAsC;IACtD,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,gBAAgB,CAA8B;gBAE1C,MAAM,EAAE,eAAe;IAkFnC;;OAEG;IACG,eAAe,CACnB,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC;IAqDhB;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAI1D;;OAEG;IACH,WAAW,IAAI,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC;IAI3C;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB5B;;OAEG;YACW,UAAU;IAiBxB;;OAEG;YACW,SAAS;IAsDvB;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAiC/B;;;OAGG;YACW,eAAe;CAmC9B;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,WAAW,CAEjE;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,OAAO,CAAC,eAAe,CAKnD,CAAC"}
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/server/mcp-server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EAEf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAqCvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AA+ChE;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,QAAQ,CAAsC;IACtD,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,gBAAgB,CAA8B;IACtD,SAAgB,mBAAmB,EAAE,mBAAmB,CAAC;gBAE7C,MAAM,EAAE,eAAe;IAkKnC;;OAEG;IACG,eAAe,CACnB,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC;IA0DhB;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAI1D;;OAEG;IACH,WAAW,IAAI,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC;IAI3C;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB5B;;OAEG;YACW,UAAU;IAiBxB;;OAEG;YACW,SAAS;IAyDvB;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAwC/B;;;OAGG;YACW,eAAe;CA8C9B;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,WAAW,CAEjE;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,OAAO,CAAC,eAAe,CAKnD,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ /**
3
+ * Register administrative tools
4
+ */
5
+ export declare function registerAdminTools(server: McpServer): void;
6
+ //# sourceMappingURL=admin-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-tools.d.ts","sourceRoot":"","sources":["../../../src/server/registration/admin-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAWzE;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA+K1D"}
@@ -10,4 +10,8 @@ export declare function registerAuditResource(server: McpServer, auditLogger: Au
10
10
  * Register audit backup tools for snapshot management.
11
11
  */
12
12
  export declare function registerAuditBackupTools(server: McpServer, backupManager: BackupManager | null, adaptersMap: Map<string, DatabaseAdapter>): void;
13
+ /**
14
+ * Register the sqlite_audit_search tool.
15
+ */
16
+ export declare function registerAuditSearchTool(server: McpServer, auditLogger: AuditLogger | null): void;
13
17
  //# sourceMappingURL=audit-tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"audit-tools.d.ts","sourceRoot":"","sources":["../../../src/server/registration/audit-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAsDzD;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,WAAW,GAAG,IAAI,EAC/B,aAAa,EAAE,aAAa,GAAG,IAAI,GAClC,IAAI,CAsCN;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,SAAS,EACjB,aAAa,EAAE,aAAa,GAAG,IAAI,EACnC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,GACxC,IAAI,CAunBN"}
1
+ {"version":3,"file":"audit-tools.d.ts","sourceRoot":"","sources":["../../../src/server/registration/audit-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAyDzD;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,WAAW,GAAG,IAAI,EAC/B,aAAa,EAAE,aAAa,GAAG,IAAI,GAClC,IAAI,CAuCN;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,SAAS,EACjB,aAAa,EAAE,aAAa,GAAG,IAAI,EACnC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,GACxC,IAAI,CAunBN;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,WAAW,GAAG,IAAI,GAC9B,IAAI,CA8EN"}
@@ -1 +1 @@
1
- {"version":3,"file":"help-resources.d.ts","sourceRoot":"","sources":["../../../src/server/registration/help-resources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAa,MAAM,sBAAsB,CAAC;AAKxE;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,gBAAgB,GAC3B,IAAI,CAiFN"}
1
+ {"version":3,"file":"help-resources.d.ts","sourceRoot":"","sources":["../../../src/server/registration/help-resources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAa,MAAM,sBAAsB,CAAC;AAMxE;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,gBAAgB,GAC3B,IAAI,CAuFN"}
@@ -1,4 +1,6 @@
1
1
  export * from "./built-in-tools.js";
2
2
  export * from "./help-resources.js";
3
- export * from "./audit-tools.js";
3
+ export { registerAuditResource, registerAuditBackupTools, registerAuditSearchTool, } from "./audit-tools.js";
4
+ export * from "./observability-resources.js";
5
+ export * from "./admin-tools.js";
4
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/registration/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/registration/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAC1B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * db-mcp — Observability Resources
3
+ *
4
+ * Registers the sqlite://metrics resource.
5
+ */
6
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
7
+ /**
8
+ * Register the metrics resource
9
+ */
10
+ export declare function registerObservabilityResources(server: McpServer): void;
11
+ //# sourceMappingURL=observability-resources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observability-resources.d.ts","sourceRoot":"","sources":["../../../src/server/registration/observability-resources.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsBtE"}
@@ -0,0 +1,35 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ /**
3
+ * Manages MCP resource subscriptions for the server.
4
+ * Tracks which transport sessions are subscribed to which resource URIs.
5
+ */
6
+ export declare class SubscriptionManager {
7
+ private readonly server;
8
+ private subscriptions;
9
+ constructor(server: McpServer);
10
+ /**
11
+ * Subscribe a session to a resource URI.
12
+ */
13
+ subscribe(uri: string, sessionId?: string): void;
14
+ /**
15
+ * Unsubscribe a session from a resource URI.
16
+ */
17
+ unsubscribe(uri: string, sessionId?: string): void;
18
+ /**
19
+ * Unsubscribe a session from all resources (useful on transport disconnect).
20
+ */
21
+ unsubscribeSession(sessionId: string): void;
22
+ /**
23
+ * Notifies all subscribed clients that a resource has changed.
24
+ */
25
+ notifyResourceUpdated(uri: string): Promise<void>;
26
+ /**
27
+ * Notifies subscribers of schema-related resources (schema, tables, and specific tables).
28
+ */
29
+ notifySchemaSubscribers(): Promise<void>;
30
+ /**
31
+ * Check if there are any active subscribers for a specific URI.
32
+ */
33
+ hasSubscribers(uri: string): boolean;
34
+ }
35
+ //# sourceMappingURL=subscription-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscription-manager.d.ts","sourceRoot":"","sources":["../../src/server/subscription-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IAGnC,OAAO,CAAC,aAAa,CAAkC;gBAE3C,MAAM,EAAE,SAAS;IAI7B;;OAEG;IACI,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAsBvD;;OAEG;IACI,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAkBzD;;OAEG;IACI,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAmBlD;;OAEG;IACU,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB9D;;OAEG;IACU,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBrD;;OAEG;IACI,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;CAI5C"}
@@ -1,8 +1,8 @@
1
- import { getCoreTools, getJsonHelperTools, getJsonOperationTools, getTextTools, getStatsTools, getVirtualTools, getVectorTools, getGeoTools, getAdminTools, getIntrospectionTools, getMigrationTools, getCodeModeTools, executeRead, executeWrite, isDDL, executeGeneral, getResourceDefinitions, getPromptDefinitions, applyCommonPragmas, autoEnableWal, detectAndSetJsonbSupport, SchemaManager } from './chunk-NV34JSQM.js';
2
- export { getCoreTools } from './chunk-NV34JSQM.js';
3
- import { DatabaseAdapter } from './chunk-W5WQVNVX.js';
4
- import { getToolGroupIcon, VERSION } from './chunk-E5IESRTK.js';
5
- import { createModuleLogger, ConnectionError, ConfigurationError, ERROR_CODES, DbMcpError } from './chunk-L552U3QS.js';
1
+ import { getCoreTools, getJsonHelperTools, getJsonOperationTools, getTextTools, getStatsTools, getVirtualTools, getVectorTools, getGeoTools, getAdminTools, getIntrospectionTools, getMigrationTools, getCodeModeTools, executeRead, executeWrite, isDDL, executeGeneral, getResourceDefinitions, getPromptDefinitions, applyCommonPragmas, autoEnableWal, detectAndSetJsonbSupport, SchemaManager } from './chunk-TGE7LFAR.js';
2
+ export { getCoreTools } from './chunk-TGE7LFAR.js';
3
+ import { DatabaseAdapter } from './chunk-EQF3WZHX.js';
4
+ import { getToolGroupIcon, VERSION } from './chunk-R5M4WKDM.js';
5
+ import { createModuleLogger, ConnectionError, ConfigurationError, ERROR_CODES, DbMcpError } from './chunk-Y57WFKAP.js';
6
6
  import initSqlJs from 'sql.js';
7
7
 
8
8
  // src/adapters/sqlite/tools/index.ts
@@ -340,6 +340,7 @@ var SqliteAdapter = class extends DatabaseAdapter {
340
340
  } else {
341
341
  this.clearSchemaCache();
342
342
  }
343
+ this.emit("schemaChanged");
343
344
  }
344
345
  return result;
345
346
  }
@@ -357,6 +358,7 @@ var SqliteAdapter = class extends DatabaseAdapter {
357
358
  } else {
358
359
  this.clearSchemaCache();
359
360
  }
361
+ this.emit("schemaChanged");
360
362
  }
361
363
  return result;
362
364
  }
@@ -367,6 +369,7 @@ var SqliteAdapter = class extends DatabaseAdapter {
367
369
  this.ensureConnected();
368
370
  this.ensureDb().run(sql);
369
371
  this.clearSchemaCache();
372
+ this.emit("schemaChanged");
370
373
  return Promise.resolve();
371
374
  }
372
375
  /**
@@ -1,8 +1,7 @@
1
- import { RowRecordSchema, WhereConditionSchema, sanitizeIdentifier, buildWhereClause, resolveAliases, autoEnableWal, detectAndSetJsonbSupport, SchemaManager, applyCommonPragmas, isDDL, getResourceDefinitions, getPromptDefinitions, validateIdentifier, normalizeSqliteParams, translateSqliteError, getCoreTools, getJsonOperationTools, getJsonHelperTools, getTextTools, getStatsTools, getVirtualTools, getVectorTools, getGeoTools, getAdminTools, getIntrospectionTools, getMigrationTools, getCodeModeTools, validateTableExists, FtsHeadlineSchema } from './chunk-NV34JSQM.js';
2
- import { DatabaseAdapter } from './chunk-W5WQVNVX.js';
3
- import { ErrorResponseFields, write, readOnly, VERSION, admin, writeFs, getToolGroupIcon, idempotent } from './chunk-E5IESRTK.js';
4
- import { logger, formatHandlerError, ValidationError, ConfigurationError, ERROR_CODES, ConnectionError, DbMcpError, ResourceNotFoundError, ExtensionNotAvailableError } from './chunk-L552U3QS.js';
5
- import Database from 'better-sqlite3';
1
+ import { RowRecordSchema, WhereConditionSchema, resolveAliases, autoEnableWal, detectAndSetJsonbSupport, SchemaManager, applyCommonPragmas, isDDL, getResourceDefinitions, getPromptDefinitions, normalizeSqliteParams, translateSqliteError, getCoreTools, getJsonOperationTools, getJsonHelperTools, getTextTools, getStatsTools, getVirtualTools, getVectorTools, getGeoTools, getAdminTools, getIntrospectionTools, getMigrationTools, getCodeModeTools, validateTableExists, sanitizeFtsQuery, FtsHeadlineSchema } from './chunk-TGE7LFAR.js';
2
+ import { DatabaseAdapter } from './chunk-EQF3WZHX.js';
3
+ import { ErrorResponseFields, write, readOnly, sanitizeIdentifier, buildWhereClause, VERSION, validateIdentifier, admin, writeFs, getToolGroupIcon, idempotent } from './chunk-R5M4WKDM.js';
4
+ import { logger, formatHandlerError, ValidationError, ConfigurationError, ERROR_CODES, ConnectionError, DbMcpError, ResourceNotFoundError, ExtensionNotAvailableError } from './chunk-Y57WFKAP.js';
6
5
  import { z } from 'zod';
7
6
  import { createRequire } from 'module';
8
7
  import { fileURLToPath } from 'url';
@@ -22,7 +21,9 @@ var FtsResultSchema = z.object({
22
21
  var FtsSearchOutputSchema = z.object({
23
22
  success: z.boolean(),
24
23
  rowCount: z.number().optional(),
25
- results: z.array(FtsResultSchema).optional()
24
+ results: z.array(FtsResultSchema).optional(),
25
+ nextCursor: z.string().optional(),
26
+ facets: z.record(z.string(), z.number()).optional()
26
27
  }).extend(ErrorResponseFields.shape);
27
28
  var FtsRebuildOutputSchema = z.object({
28
29
  success: z.boolean(),
@@ -65,7 +66,11 @@ var FtsSearchSchema = z.object({
65
66
  return val;
66
67
  }, z.number().optional().default(100)),
67
68
  highlight: z.boolean().optional().default(false).describe("Include highlighted snippets"),
68
- includeRowData: z.boolean().optional().default(true).describe("Include full row data in results")
69
+ includeRowData: z.boolean().optional().default(true).describe("Include full row data in results"),
70
+ cursor: z.string().optional().describe("Opaque cursor for pagination"),
71
+ includeFacets: z.boolean().optional().default(false).describe(
72
+ "Return match counts per column (distribution by matched column)"
73
+ )
69
74
  });
70
75
  var FtsRebuildSchema = z.object({
71
76
  table: z.string().describe("FTS table name to rebuild")
@@ -224,20 +229,46 @@ function createFtsSearchTool(adapter) {
224
229
  }
225
230
  sanitizeIdentifier(input.table);
226
231
  await validateTableExists(adapter, input.table);
232
+ let offset = 0;
233
+ if (input.cursor) {
234
+ try {
235
+ const cursorData = JSON.parse(
236
+ Buffer.from(input.cursor, "base64").toString("utf8")
237
+ );
238
+ if (typeof cursorData["offset"] === "number")
239
+ offset = cursorData["offset"];
240
+ } catch {
241
+ }
242
+ }
227
243
  let selectClause = input.includeRowData ? "*" : "rowid";
228
244
  if (input.highlight) {
229
245
  selectClause += `, highlight("${input.table}", 0, '<b>', '</b>') as snippet`;
230
246
  }
231
247
  if (input.query === "*" || input.query.trim() === "") {
232
- const sql2 = `SELECT ${selectClause}, NULL as rank FROM "${input.table}" ORDER BY rowid LIMIT ${input.limit}`;
248
+ const sql2 = `SELECT ${selectClause}, NULL as rank FROM "${input.table}" ORDER BY rowid LIMIT ${input.limit} OFFSET ${offset}`;
233
249
  const result2 = await adapter.executeReadQuery(sql2, queryParams);
250
+ let nextCursor2;
251
+ if (result2.rows?.length === input.limit) {
252
+ nextCursor2 = Buffer.from(
253
+ JSON.stringify({ offset: offset + input.limit })
254
+ ).toString("base64");
255
+ }
234
256
  return {
235
257
  success: true,
236
258
  rowCount: result2.rows?.length ?? 0,
237
- results: result2.rows
259
+ results: result2.rows,
260
+ nextCursor: nextCursor2
238
261
  };
239
262
  }
240
- const queryEscaped = input.query.replace(/'/g, "''");
263
+ const sanitizedQuery = sanitizeFtsQuery(input.query);
264
+ if (!sanitizedQuery) {
265
+ return {
266
+ success: true,
267
+ rowCount: 0,
268
+ results: []
269
+ };
270
+ }
271
+ const queryEscaped = sanitizedQuery.replace(/'/g, "''");
241
272
  let matchExpr = `"${input.table}" MATCH '${queryEscaped}'`;
242
273
  if (input.columns && input.columns.length > 0) {
243
274
  for (const col of input.columns) {
@@ -246,12 +277,58 @@ function createFtsSearchTool(adapter) {
246
277
  const colFilter = input.columns.map((c) => `${c}:${queryEscaped}`).join(" OR ");
247
278
  matchExpr = `"${input.table}" MATCH '${colFilter}'`;
248
279
  }
249
- const sql = `SELECT ${selectClause}, rank FROM "${input.table}" WHERE ${matchExpr} ORDER BY rank LIMIT ${input.limit}`;
280
+ let columnsToFacet = [];
281
+ if (input.includeFacets) {
282
+ const colResult = await adapter.executeReadQuery(
283
+ `PRAGMA table_info("${input.table}")`,
284
+ []
285
+ );
286
+ const allCols = (colResult.rows ?? []).map((r, i) => ({
287
+ name: String(r["name"]),
288
+ index: i
289
+ }));
290
+ if (input.columns && input.columns.length > 0) {
291
+ columnsToFacet = allCols.filter(
292
+ (c) => input.columns?.includes(c.name)
293
+ );
294
+ } else {
295
+ columnsToFacet = allCols.filter(
296
+ (c) => c.name !== input.table && c.name !== "rank"
297
+ );
298
+ }
299
+ for (const col of columnsToFacet) {
300
+ selectClause += `, highlight("${input.table}", ${col.index}, '', '') as _facet_${col.index}`;
301
+ }
302
+ }
303
+ const sql = `SELECT ${selectClause}, rank FROM "${input.table}" WHERE ${matchExpr} ORDER BY rank LIMIT ${input.limit} OFFSET ${offset}`;
250
304
  const result = await adapter.executeReadQuery(sql, queryParams);
305
+ let nextCursor;
306
+ if (result.rows?.length === input.limit) {
307
+ nextCursor = Buffer.from(
308
+ JSON.stringify({ offset: offset + input.limit })
309
+ ).toString("base64");
310
+ }
311
+ const facets = {};
312
+ if (input.includeFacets && result.rows) {
313
+ for (const col of columnsToFacet) {
314
+ facets[col.name] = 0;
315
+ }
316
+ for (const row of result.rows) {
317
+ for (const col of columnsToFacet) {
318
+ const val = row[`_facet_${col.index}`];
319
+ if (typeof val === "string" && val.includes("")) {
320
+ facets[col.name] = (facets[col.name] ?? 0) + 1;
321
+ }
322
+ Reflect.deleteProperty(row, `_facet_${col.index}`);
323
+ }
324
+ }
325
+ }
251
326
  return {
252
327
  success: true,
253
328
  rowCount: result.rows?.length ?? 0,
254
- results: result.rows
329
+ results: result.rows,
330
+ nextCursor,
331
+ ...input.includeFacets ? { facets } : {}
255
332
  };
256
333
  } catch (error) {
257
334
  if (isFts5UnavailableError(error)) {
@@ -315,7 +392,15 @@ function createFtsMatchInfoTool(adapter) {
315
392
  }
316
393
  sanitizeIdentifier(input.table);
317
394
  await validateTableExists(adapter, input.table);
318
- const queryEscaped = input.query.replace(/'/g, "''");
395
+ const sanitizedQuery = sanitizeFtsQuery(input.query);
396
+ if (!sanitizedQuery) {
397
+ return {
398
+ success: true,
399
+ rowCount: 0,
400
+ results: []
401
+ };
402
+ }
403
+ const queryEscaped = sanitizedQuery.replace(/'/g, "''");
319
404
  let rankExpr;
320
405
  if (input.format === "bm25") {
321
406
  rankExpr = `bm25("${input.table}")`;
@@ -357,7 +442,15 @@ function createFtsHeadlineTool(adapter) {
357
442
  }
358
443
  sanitizeIdentifier(input.table);
359
444
  await validateTableExists(adapter, input.table);
360
- const queryEscaped = input.query.replace(/'/g, "''");
445
+ const sanitizedQuery = sanitizeFtsQuery(input.query);
446
+ if (!sanitizedQuery && input.query !== "*" && input.query.trim() !== "") {
447
+ return {
448
+ success: true,
449
+ rowCount: 0,
450
+ results: []
451
+ };
452
+ }
453
+ const queryEscaped = sanitizedQuery.replace(/'/g, "''");
361
454
  let columnIndex = 0;
362
455
  if (input.column) {
363
456
  const colResult = await adapter.executeReadQuery(
@@ -515,7 +608,8 @@ var SpatialiteLoadOutputSchema = z.object({
515
608
  message: z.string().optional(),
516
609
  alreadyLoaded: z.boolean().optional(),
517
610
  extensionPath: z.string().optional(),
518
- searchedPaths: z.array(z.string()).optional()
611
+ searchedPaths: z.array(z.string()).optional(),
612
+ version: z.string().optional()
519
613
  }).extend(ErrorResponseFields.shape);
520
614
  var SpatialiteCreateTableOutputSchema = z.object({
521
615
  success: z.boolean(),
@@ -1755,34 +1849,44 @@ function createLoadSpatialiteTool(adapter) {
1755
1849
  outputSchema: SpatialiteLoadOutputSchema,
1756
1850
  requiredScopes: ["admin"],
1757
1851
  annotations: admin("SpatiaLite Load"),
1758
- handler: (_params, _context) => {
1852
+ handler: async (_params, _context) => {
1759
1853
  try {
1760
1854
  const input = LoadSpatialiteSchema.parse(_params);
1761
1855
  if (!input.forceReload && isSpatialiteLoaded(adapter)) {
1762
- return Promise.resolve({
1856
+ const versionResult = await adapter.executeReadQuery(
1857
+ "SELECT spatialite_version() as v"
1858
+ );
1859
+ const version = versionResult.rows?.[0]?.["v"];
1860
+ return {
1763
1861
  success: true,
1764
1862
  message: "SpatiaLite already loaded",
1765
- alreadyLoaded: true
1766
- });
1863
+ alreadyLoaded: true,
1864
+ version
1865
+ };
1767
1866
  }
1768
1867
  const result = tryLoadSpatialite(adapter);
1769
1868
  if (result.success) {
1770
- return Promise.resolve({
1869
+ const versionResult = await adapter.executeReadQuery(
1870
+ "SELECT spatialite_version() as v"
1871
+ );
1872
+ const version = versionResult.rows?.[0]?.["v"];
1873
+ return {
1771
1874
  success: true,
1772
1875
  message: "SpatiaLite loaded successfully",
1773
- extensionPath: result.path
1774
- });
1876
+ extensionPath: result.path,
1877
+ version
1878
+ };
1775
1879
  }
1776
- return Promise.resolve({
1880
+ return {
1777
1881
  success: false,
1778
1882
  error: result.error,
1779
1883
  code: "SPATIALITE_LOAD_FAILED",
1780
1884
  category: "internal",
1781
1885
  recoverable: false,
1782
1886
  searchedPaths: SPATIALITE_PATHS
1783
- });
1887
+ };
1784
1888
  } catch (error) {
1785
- return Promise.resolve(formatHandlerError(error));
1889
+ return formatHandlerError(error);
1786
1890
  }
1787
1891
  }
1788
1892
  };
@@ -2724,7 +2828,7 @@ var NativeSqliteAdapter = class extends DatabaseAdapter {
2724
2828
  /**
2725
2829
  * Connect to a SQLite database using better-sqlite3
2726
2830
  */
2727
- connect(config) {
2831
+ async connect(config) {
2728
2832
  if (config.type !== "sqlite") {
2729
2833
  throw new ConfigurationError(
2730
2834
  `Invalid database type: expected 'sqlite', got '${config.type}'`,
@@ -2735,13 +2839,33 @@ var NativeSqliteAdapter = class extends DatabaseAdapter {
2735
2839
  this.config = sqliteConfig;
2736
2840
  try {
2737
2841
  const filePath = sqliteConfig.filePath ?? sqliteConfig.connectionString ?? ":memory:";
2738
- this.db = new Database(filePath, {
2739
- readonly: false,
2740
- fileMustExist: false
2741
- });
2742
- log.info(`Connected to SQLite database (native): ${filePath}`, {
2743
- code: "SQLITE_CONNECT"
2744
- });
2842
+ if (sqliteConfig.options?.encryptionKey) {
2843
+ const DatabaseDriver = (await import('better-sqlite3-multiple-ciphers')).default;
2844
+ this.db = new DatabaseDriver(filePath, {
2845
+ readonly: false,
2846
+ fileMustExist: false
2847
+ });
2848
+ const escapedKey = sqliteConfig.options.encryptionKey.replace(
2849
+ /"/g,
2850
+ '""'
2851
+ );
2852
+ this.db.pragma(`key = "${escapedKey}"`);
2853
+ log.info(
2854
+ `Connected to SQLite database (native encrypted): ${filePath}`,
2855
+ {
2856
+ code: "SQLITE_CONNECT_ENCRYPTED"
2857
+ }
2858
+ );
2859
+ } else {
2860
+ const DatabaseDriver = (await import('better-sqlite3')).default;
2861
+ this.db = new DatabaseDriver(filePath, {
2862
+ readonly: false,
2863
+ fileMustExist: false
2864
+ });
2865
+ log.info(`Connected to SQLite database (native): ${filePath}`, {
2866
+ code: "SQLITE_CONNECT"
2867
+ });
2868
+ }
2745
2869
  this.applyOptions(sqliteConfig.options);
2746
2870
  const db = this.db;
2747
2871
  autoEnableWal(
@@ -2780,7 +2904,6 @@ var NativeSqliteAdapter = class extends DatabaseAdapter {
2780
2904
  }
2781
2905
  );
2782
2906
  }
2783
- return Promise.resolve();
2784
2907
  }
2785
2908
  /**
2786
2909
  * Apply SQLite PRAGMA options and load extensions
@@ -2870,6 +2993,7 @@ var NativeSqliteAdapter = class extends DatabaseAdapter {
2870
2993
  const result = nativeExecuteWrite(this.ensureDb(), sql, params, log);
2871
2994
  if (isDDL(sql)) {
2872
2995
  this.clearSchemaCache();
2996
+ this.emit("schemaChanged");
2873
2997
  }
2874
2998
  return result;
2875
2999
  }
@@ -2896,6 +3020,7 @@ var NativeSqliteAdapter = class extends DatabaseAdapter {
2896
3020
  this.ensureConnected();
2897
3021
  this.ensureDb().exec(sql);
2898
3022
  this.clearSchemaCache();
3023
+ this.emit("schemaChanged");
2899
3024
  return Promise.resolve();
2900
3025
  }
2901
3026
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"legacy-sse.d.ts","sourceRoot":"","sources":["../../../../src/transports/http/sessions/legacy-sse.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAStD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAsKvE"}
1
+ {"version":3,"file":"legacy-sse.d.ts","sourceRoot":"","sources":["../../../../src/transports/http/sessions/legacy-sse.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAStD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAiLvE"}
@@ -1 +1 @@
1
- {"version":3,"file":"stateful.d.ts","sourceRoot":"","sources":["../../../../src/transports/http/sessions/stateful.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAUtD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,kBAAkB,EACzB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GAAG,SAAS,GAC7B,OAAO,CAOT;AAYD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CA4QtE"}
1
+ {"version":3,"file":"stateful.d.ts","sourceRoot":"","sources":["../../../../src/transports/http/sessions/stateful.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAUtD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,kBAAkB,EACzB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GAAG,SAAS,GAC7B,OAAO,CAOT;AAYD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAuRtE"}
@@ -1 +1 @@
1
- {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/transports/http/transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,OAAgC,MAAM,SAAS,CAAC;AAEvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMzE,OAAO,EAKL,KAAK,mBAAmB,EAEzB,MAAM,YAAY,CAAC;AAgBpB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAU/E;;;;;;;;;GASG;AACH,qBAAa,aAAa;IACxB,kEAAkE;IAClE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;gBAE/B,MAAM,EAAE,mBAAmB;IAsBvC;;;;;;;OAOG;IACG,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAoLlD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgD5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAuE3B;;OAEG;IACH,MAAM,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI;IAIhC;;OAEG;IACH,qBAAqB,IAAI,MAAM;IAI/B;;OAEG;IACH,iBAAiB,IAAI,mBAAmB,GAAG,IAAI;CAGhD;AAMD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,mBAAmB,GAC1B,aAAa,CAEf"}
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/transports/http/transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,OAAgC,MAAM,SAAS,CAAC;AAEvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMzE,OAAO,EAKL,KAAK,mBAAmB,EAEzB,MAAM,YAAY,CAAC;AAgBpB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAW/E;;;;;;;;;GASG;AACH,qBAAa,aAAa;IACxB,kEAAkE;IAClE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;gBAE/B,MAAM,EAAE,mBAAmB;IAsBvC;;;;;;;OAOG;IACG,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IA2LlD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgD5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAuE3B;;OAEG;IACH,MAAM,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI;IAIhC;;OAEG;IACH,qBAAqB,IAAI,MAAM;IAI/B;;OAEG;IACH,iBAAiB,IAAI,mBAAmB,GAAG,IAAI;CAGhD;AAMD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,mBAAmB,GAC1B,aAAa,CAEf"}
@@ -40,6 +40,8 @@ export interface HttpTransportConfig {
40
40
  stateless?: boolean;
41
41
  /** Explicitly bypass auth requirement */
42
42
  noAuthEnforcement?: boolean;
43
+ /** Enable Prometheus metrics export at /metrics */
44
+ metricsExport?: "prometheus";
43
45
  /** OAuth 2.1 configuration */
44
46
  oauth: {
45
47
  /** Enable OAuth authentication */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/transports/http/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/transports/http/types.ts"],"names":[],"mappings":"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"}
@@ -44,5 +44,7 @@ export interface McpServerConfig {
44
44
  audit?: AuditConfig;
45
45
  /** Explicitly bypass auth requirement for HTTP transport */
46
46
  noAuthEnforcement?: boolean;
47
+ /** Enable Prometheus metrics export at /metrics */
48
+ metricsExport?: "prometheus";
47
49
  }
48
50
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/types/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAMrD;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IAEb,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAEhB,8BAA8B;IAC9B,SAAS,EAAE,aAAa,CAAC;IAEzB,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,qEAAqE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,8BAA8B;IAC9B,SAAS,EAAE,cAAc,EAAE,CAAC;IAE5B,8BAA8B;IAC9B,KAAK,CAAC,EAAE,WAAW,CAAC;IAEpB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,mCAAmC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,kCAAkC;IAClC,KAAK,CAAC,EAAE,WAAW,CAAC;IAEpB,4DAA4D;IAC5D,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/types/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAMrD;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IAEb,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAEhB,8BAA8B;IAC9B,SAAS,EAAE,aAAa,CAAC;IAEzB,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,qEAAqE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,8BAA8B;IAC9B,SAAS,EAAE,cAAc,EAAE,CAAC;IAE5B,8BAA8B;IAC9B,KAAK,CAAC,EAAE,WAAW,CAAC;IAEpB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,mCAAmC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,kCAAkC;IAClC,KAAK,CAAC,EAAE,WAAW,CAAC;IAEpB,4DAA4D;IAC5D,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B,mDAAmD;IACnD,aAAa,CAAC,EAAE,YAAY,CAAC;CAC9B"}
@@ -6,4 +6,5 @@ export { UnsafeWhereClauseError, sanitizeWhereClause } from "./where-clause.js";
6
6
  export { InvalidIdentifierError, validateIdentifier, sanitizeIdentifier, sanitizeTableName, sanitizeColumnRef, sanitizeIdentifiers, createColumnList, sanitizeIndexName, quoteIdentifier, needsQuoting, } from "./identifiers.js";
7
7
  export { validateSameDirPath } from "./validate-path.js";
8
8
  export { validateJsonPath, validateAggregateFunction, } from "./validate-json-path.js";
9
+ export { estimateTokens, type ContentType } from "./tokens.js";
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,MAAM,EACN,YAAY,EACZ,MAAM,EACN,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,SAAS,GACf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAEhF,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,YAAY,GACb,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EACL,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,MAAM,EACN,YAAY,EACZ,MAAM,EACN,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,SAAS,GACf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAEhF,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,YAAY,GACb,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EACL,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC"}
@@ -11,7 +11,7 @@ export type LogLevel = "debug" | "info" | "notice" | "warning" | "error" | "crit
11
11
  /**
12
12
  * Module identifiers for log categorization
13
13
  */
14
- export type LogModule = "SERVER" | "ADAPTER" | "AUTH" | "TOOLS" | "RESOURCES" | "PROMPTS" | "TRANSPORT" | "QUERY" | "POOL" | "FILTER" | "SQLITE" | "NATIVE_SQLITE" | "HTTP" | "DB" | "CLI" | "CODEMODE" | "AUDIT";
14
+ export type LogModule = "SERVER" | "ADAPTER" | "AUTH" | "TOOLS" | "RESOURCES" | "PROMPTS" | "TRANSPORT" | "QUERY" | "POOL" | "FILTER" | "SQLITE" | "NATIVE_SQLITE" | "HTTP" | "DB" | "CLI" | "CODEMODE" | "AUDIT" | "METRICS" | "SYSTEM_DB";
15
15
  /**
16
16
  * Structured log context following MCP logging standards
17
17
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/logger/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAChB,OAAO,GACP,MAAM,GACN,QAAQ,GACR,SAAS,GACT,OAAO,GACP,UAAU,GACV,OAAO,GACP,WAAW,CAAC;AAEhB;;GAEG;AACH,MAAM,MAAM,SAAS,GACjB,QAAQ,GACR,SAAS,GACT,MAAM,GACN,OAAO,GACP,WAAW,GACX,SAAS,GACT,WAAW,GACX,OAAO,GACP,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,eAAe,GACf,MAAM,GACN,IAAI,GACJ,KAAK,GACL,UAAU,GACV,OAAO,CAAC;AAEZ;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,wBAAwB;IACxB,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC/B,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,wBAAwB;IACxB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,mDAAmD;IACnD,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;IAC1B,gCAAgC;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/logger/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAChB,OAAO,GACP,MAAM,GACN,QAAQ,GACR,SAAS,GACT,OAAO,GACP,UAAU,GACV,OAAO,GACP,WAAW,CAAC;AAEhB;;GAEG;AACH,MAAM,MAAM,SAAS,GACjB,QAAQ,GACR,SAAS,GACT,MAAM,GACN,OAAO,GACP,WAAW,GACX,SAAS,GACT,WAAW,GACX,OAAO,GACP,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,eAAe,GACf,MAAM,GACN,IAAI,GACJ,KAAK,GACL,UAAU,GACV,OAAO,GACP,SAAS,GACT,WAAW,CAAC;AAEhB;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,wBAAwB;IACxB,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC/B,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,wBAAwB;IACxB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,mDAAmD;IACnD,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;IAC1B,gCAAgC;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * db-mcp - Token Estimation Utility
3
+ */
4
+ export type ContentType = "json" | "sql" | "text";
5
+ /**
6
+ * Estimates the number of tokens in a given string based on its content type.
7
+ * Replaces the naive Math.ceil(length / 4) heuristic which significantly
8
+ * underestimates JSON and SQL payloads.
9
+ *
10
+ * @param text The string content to estimate tokens for
11
+ * @param contentType The type of content (json, sql, or text)
12
+ * @returns An estimated token count
13
+ */
14
+ export declare function estimateTokens(text: string, contentType?: ContentType): number;
15
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/utils/tokens.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AAElD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,WAAW,GAAE,WAAoB,GAChC,MAAM,CAcR"}