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
@@ -1,270 +0,0 @@
1
- /**
2
- * db-mcp - Main MCP Server
3
- *
4
- * SQLite MCP server with OAuth 2.1 authentication,
5
- * HTTP/SSE transport, and dynamic tool filtering.
6
- */
7
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
8
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
9
- import { parseToolFilter, getFilterSummary, getToolFilterFromEnv, } from "../filtering/ToolFilter.js";
10
- import { generateInstructions } from "../constants/ServerInstructions.js";
11
- import { logger } from "../utils/logger.js";
12
- /**
13
- * Main db-mcp server class
14
- *
15
- * Manages database adapters, tool registration, and MCP protocol handling.
16
- */
17
- export class DbMcpServer {
18
- server;
19
- adapters = new Map();
20
- toolFilter;
21
- config;
22
- constructor(config) {
23
- this.config = config;
24
- // Initialize tool filter from config or environment (needed for instructions)
25
- this.toolFilter = config.toolFilter
26
- ? parseToolFilter(config.toolFilter)
27
- : getToolFilterFromEnv();
28
- // Generate server instructions based on enabled tools
29
- const enabledTools = new Set();
30
- for (const group of this.toolFilter.enabledGroups) {
31
- // Add all tools from enabled groups to the set
32
- enabledTools.add(group);
33
- }
34
- const instructions = generateInstructions(enabledTools, [], []);
35
- // Initialize MCP server with logging capability and instructions
36
- this.server = new McpServer({
37
- name: config.name,
38
- version: config.version,
39
- }, {
40
- capabilities: {
41
- logging: {},
42
- },
43
- instructions,
44
- });
45
- // Log filter summary
46
- logger.info(getFilterSummary(this.toolFilter), { module: "FILTER" });
47
- // Log server initialization with capabilities
48
- logger.info("MCP Server initialized", {
49
- module: "SERVER",
50
- name: config.name,
51
- version: config.version,
52
- toolFilter: config.toolFilter ?? "none",
53
- capabilities: ["logging"],
54
- });
55
- // Register built-in tools
56
- this.registerBuiltInTools();
57
- }
58
- /**
59
- * Register a database adapter
60
- */
61
- async registerAdapter(adapter, config) {
62
- const adapterId = `${adapter.type}:${config.database ?? "default"}`;
63
- // Connect to database
64
- await adapter.connect(config);
65
- // Store adapter
66
- this.adapters.set(adapterId, adapter);
67
- // Register adapter's tools with filtering
68
- adapter.registerTools(this.server, this.toolFilter);
69
- adapter.registerResources(this.server);
70
- adapter.registerPrompts(this.server);
71
- logger.info(`Registered adapter: ${adapter.name} (${adapterId})`, {
72
- module: "SERVER",
73
- });
74
- }
75
- /**
76
- * Get an adapter by ID
77
- */
78
- getAdapter(adapterId) {
79
- return this.adapters.get(adapterId);
80
- }
81
- /**
82
- * Get all registered adapters
83
- */
84
- getAdapters() {
85
- return this.adapters;
86
- }
87
- /**
88
- * Register built-in server tools (health, info, etc.)
89
- */
90
- registerBuiltInTools() {
91
- // Server info tool
92
- this.server.registerTool("server_info", {
93
- description: "Get information about the db-mcp server and registered adapters",
94
- }, () => {
95
- const adapterInfo = [];
96
- for (const [id, adapter] of this.adapters) {
97
- adapterInfo.push({
98
- id,
99
- ...adapter.getInfo(),
100
- });
101
- }
102
- return {
103
- content: [
104
- {
105
- type: "text",
106
- text: JSON.stringify({
107
- name: this.config.name,
108
- version: this.config.version,
109
- transport: this.config.transport,
110
- adapters: adapterInfo,
111
- toolFilter: {
112
- raw: this.toolFilter.raw,
113
- enabledGroups: [...this.toolFilter.enabledGroups],
114
- },
115
- }, null, 2),
116
- },
117
- ],
118
- };
119
- });
120
- // Health check tool
121
- this.server.registerTool("server_health", { description: "Check health status of all database connections" }, async () => {
122
- const health = {
123
- server: "healthy",
124
- timestamp: new Date().toISOString(),
125
- adapters: {},
126
- };
127
- for (const [id, adapter] of this.adapters) {
128
- try {
129
- const adapterHealth = await adapter.getHealth();
130
- health["adapters"][id] = adapterHealth;
131
- }
132
- catch (error) {
133
- health["adapters"][id] = {
134
- connected: false,
135
- error: error instanceof Error ? error.message : "Unknown error",
136
- };
137
- }
138
- }
139
- return {
140
- content: [
141
- {
142
- type: "text",
143
- text: JSON.stringify(health, null, 2),
144
- },
145
- ],
146
- };
147
- });
148
- // List adapters tool
149
- this.server.registerTool("list_adapters", { description: "List all registered database adapters" }, () => {
150
- const adapters = [];
151
- for (const [id, adapter] of this.adapters) {
152
- adapters.push({
153
- id,
154
- type: adapter.type,
155
- name: adapter.name,
156
- version: adapter.version,
157
- connected: adapter.isConnected(),
158
- });
159
- }
160
- return {
161
- content: [
162
- {
163
- type: "text",
164
- text: JSON.stringify(adapters, null, 2),
165
- },
166
- ],
167
- };
168
- });
169
- }
170
- /**
171
- * Start the server with the configured transport
172
- */
173
- async start() {
174
- switch (this.config.transport) {
175
- case "stdio":
176
- await this.startStdio();
177
- break;
178
- case "http":
179
- await this.startHttp();
180
- break;
181
- default:
182
- throw new Error(`Unsupported transport: ${this.config.transport}`);
183
- }
184
- }
185
- /**
186
- * Start server with stdio transport
187
- */
188
- async startStdio() {
189
- const transport = new StdioServerTransport();
190
- await this.server.connect(transport);
191
- logger.info(`db-mcp server started (stdio transport)`, {
192
- module: "SERVER",
193
- });
194
- }
195
- /**
196
- * Start server with HTTP transport (Streamable HTTP with SSE support)
197
- */
198
- async startHttp() {
199
- const { HttpTransport } = await import("../transports/http.js");
200
- // Build OAuth config, only including defined optional properties
201
- const oauthConfig = {
202
- enabled: this.config.oauth?.enabled ?? false,
203
- authorizationServerUrl: this.config.oauth?.authorizationServerUrl ?? "",
204
- audience: this.config.oauth?.audience ?? this.config.name,
205
- };
206
- // Only add optional properties if they are defined
207
- if (this.config.oauth?.issuer !== undefined) {
208
- oauthConfig.issuer = this.config.oauth.issuer;
209
- }
210
- if (this.config.oauth?.jwksUri !== undefined) {
211
- oauthConfig.jwksUri = this.config.oauth.jwksUri;
212
- }
213
- if (this.config.oauth?.clockTolerance !== undefined) {
214
- oauthConfig.clockTolerance = this.config.oauth.clockTolerance;
215
- }
216
- if (this.config.oauth?.publicPaths !== undefined) {
217
- oauthConfig.publicPaths = this.config.oauth.publicPaths;
218
- }
219
- const transport = new HttpTransport({
220
- port: this.config.port ?? 3000,
221
- oauth: oauthConfig,
222
- stateless: this.config.statelessHttp ?? false,
223
- });
224
- // Initialize transport with the MCP server reference
225
- // In stateful mode, transport manages sessions internally
226
- // In stateless mode, transport creates a single shared connection
227
- await transport.initialize(this.server);
228
- await transport.start();
229
- const mode = this.config.statelessHttp ? "stateless" : "stateful";
230
- logger.info(`db-mcp server started (HTTP transport on port ${String(this.config.port ?? 3000)}, ${mode} mode)`, { module: "TRANSPORT", mode });
231
- }
232
- /**
233
- * Gracefully shut down the server
234
- */
235
- async shutdown() {
236
- logger.info("Shutting down db-mcp server...", { module: "SERVER" });
237
- // Disconnect all adapters
238
- for (const [id, adapter] of this.adapters) {
239
- try {
240
- await adapter.disconnect();
241
- logger.info(`Disconnected adapter: ${id}`, { module: "SERVER" });
242
- }
243
- catch (error) {
244
- logger.error(`Error disconnecting adapter ${id}`, {
245
- module: "SERVER",
246
- error: error instanceof Error ? error : undefined,
247
- });
248
- }
249
- }
250
- // Close MCP server
251
- await this.server.close();
252
- logger.info("Server shutdown complete", { module: "SERVER" });
253
- }
254
- }
255
- /**
256
- * Create and configure a db-mcp server instance
257
- */
258
- export function createServer(config) {
259
- return new DbMcpServer(config);
260
- }
261
- /**
262
- * Default server configuration
263
- */
264
- export const DEFAULT_CONFIG = {
265
- name: "db-mcp",
266
- version: "0.1.0",
267
- transport: "stdio",
268
- databases: [],
269
- };
270
- //# sourceMappingURL=McpServer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"McpServer.js","sourceRoot":"","sources":["../../src/server/McpServer.ts"],"names":[],"mappings":"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"}
@@ -1,134 +0,0 @@
1
- /**
2
- * db-mcp - HTTP Transport
3
- *
4
- * Streamable HTTP transport with OAuth 2.0 integration and SSE support.
5
- * Provides secure HTTP endpoints for MCP communication with optional
6
- * session management and server-sent events for notifications.
7
- *
8
- * Modes:
9
- * - Stateful (default): Multi-session management with SSE streaming
10
- * - Stateless (opt-in): Lightweight serverless-compatible mode
11
- */
12
- import { type Express } from "express";
13
- import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
14
- import { OAuthResourceServer } from "../auth/OAuthResourceServer.js";
15
- /**
16
- * HTTP transport configuration
17
- */
18
- export interface HttpTransportConfig {
19
- /** Port to listen on */
20
- port: number;
21
- /** Host to bind to (default: '0.0.0.0') */
22
- host?: string;
23
- /**
24
- * Enable stateless HTTP mode (no session management, no SSE streaming).
25
- * Ideal for serverless deployments (Lambda, Workers, Vercel).
26
- * Default: false (stateful mode with session management and SSE support)
27
- */
28
- stateless?: boolean;
29
- /** OAuth configuration */
30
- oauth: {
31
- /** Enable OAuth authentication */
32
- enabled: boolean;
33
- /** Authorization server URL */
34
- authorizationServerUrl: string;
35
- /** Expected audience in tokens */
36
- audience: string;
37
- /** Expected issuer (defaults to authorizationServerUrl) */
38
- issuer?: string;
39
- /** JWKS URI (auto-discovered if not provided) */
40
- jwksUri?: string;
41
- /** Clock tolerance in seconds (default: 60) */
42
- clockTolerance?: number;
43
- /** Paths that bypass authentication */
44
- publicPaths?: string[];
45
- };
46
- /** CORS configuration */
47
- cors?: {
48
- /** Allowed origins */
49
- origin?: string | string[] | boolean;
50
- /** Allowed methods */
51
- methods?: string[];
52
- /** Allowed headers */
53
- allowedHeaders?: string[];
54
- /** Exposed headers */
55
- exposedHeaders?: string[];
56
- /** Allow credentials */
57
- credentials?: boolean;
58
- };
59
- /** Resource URI (defaults to http://localhost:{port}) */
60
- resourceUri?: string;
61
- }
62
- /**
63
- * HTTP Transport for MCP with OAuth 2.0 integration and SSE support.
64
- *
65
- * Supports two modes:
66
- * - Stateful (default): Multi-session management with SSE streaming for notifications
67
- * - Stateless: Single transport, no session management - ideal for serverless
68
- */
69
- export declare class HttpTransport {
70
- private readonly config;
71
- private app;
72
- private httpServer;
73
- private transports;
74
- private statelessTransport;
75
- private resourceServer;
76
- private authServerDiscovery;
77
- private tokenValidator;
78
- private mcpServer;
79
- constructor(config: HttpTransportConfig);
80
- /**
81
- * Initialize the transport with the MCP server.
82
- *
83
- * For stateful mode, the server reference is stored to connect new sessions.
84
- * For stateless mode, a single transport is created and connected.
85
- *
86
- * @param server - The MCP server instance
87
- */
88
- initialize(server: McpServer): Promise<void>;
89
- /**
90
- * Configure CORS with SSE-compatible headers
91
- */
92
- private setupCors;
93
- /**
94
- * Set up stateless mode endpoints (serverless-compatible)
95
- */
96
- private setupStatelessEndpoints;
97
- /**
98
- * Set up stateful mode endpoints with session management and SSE
99
- */
100
- private setupStatefulEndpoints;
101
- /**
102
- * Apply OAuth authentication middleware if enabled
103
- */
104
- private applyAuthMiddleware;
105
- /**
106
- * Set up OAuth 2.0 components
107
- */
108
- private setupOAuth;
109
- /**
110
- * Start listening on the configured port
111
- */
112
- start(): Promise<void>;
113
- /**
114
- * Stop the server and close all active sessions
115
- */
116
- stop(): Promise<void>;
117
- /**
118
- * Get the underlying Express app
119
- */
120
- getApp(): Express | null;
121
- /**
122
- * Get the number of active sessions (stateful mode only)
123
- */
124
- getActiveSessionCount(): number;
125
- /**
126
- * Get the OAuth Resource Server
127
- */
128
- getResourceServer(): OAuthResourceServer | null;
129
- }
130
- /**
131
- * Create an HTTP transport instance
132
- */
133
- export declare function createHttpTransport(config: HttpTransportConfig): HttpTransport;
134
- //# sourceMappingURL=http.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/transports/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAgB,EAAE,KAAK,OAAO,EAAuB,MAAM,SAAS,CAAC;AAMrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAcrE;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IAEb,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,0BAA0B;IAC1B,KAAK,EAAE;QACL,kCAAkC;QAClC,OAAO,EAAE,OAAO,CAAC;QAEjB,+BAA+B;QAC/B,sBAAsB,EAAE,MAAM,CAAC;QAE/B,kCAAkC;QAClC,QAAQ,EAAE,MAAM,CAAC;QAEjB,2DAA2D;QAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;QAEhB,iDAAiD;QACjD,OAAO,CAAC,EAAE,MAAM,CAAC;QAEjB,+CAA+C;QAC/C,cAAc,CAAC,EAAE,MAAM,CAAC;QAExB,uCAAuC;QACvC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;KACxB,CAAC;IAEF,yBAAyB;IACzB,IAAI,CAAC,EAAE;QACL,sBAAsB;QACtB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC;QAErC,sBAAsB;QACtB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QAEnB,sBAAsB;QACtB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;QAE1B,sBAAsB;QACtB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;QAE1B,wBAAwB;QACxB,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB,CAAC;IAEF,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAMD;;;;;;GAMG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAC7C,OAAO,CAAC,GAAG,CAAwB;IACnC,OAAO,CAAC,UAAU,CAA4B;IAG9C,OAAO,CAAC,UAAU,CAAoD;IAGtE,OAAO,CAAC,kBAAkB,CAA8C;IAGxE,OAAO,CAAC,cAAc,CAAoC;IAC1D,OAAO,CAAC,mBAAmB,CAA6C;IACxE,OAAO,CAAC,cAAc,CAA+B;IAGrD,OAAO,CAAC,SAAS,CAA0B;gBAE/B,MAAM,EAAE,mBAAmB;IAQvC;;;;;;;OAOG;IACG,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IA2ElD;;OAEG;IACH,OAAO,CAAC,SAAS;IAwDjB;;OAEG;YACW,uBAAuB;IA2DrC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA8J9B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;OAEG;YACW,UAAU;IA6DxB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAoC5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAoD3B;;OAEG;IACH,MAAM,IAAI,OAAO,GAAG,IAAI;IAIxB;;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"}