db-mcp 1.0.1

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 (208) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +860 -0
  3. package/dist/adapters/DatabaseAdapter.d.ts +141 -0
  4. package/dist/adapters/DatabaseAdapter.d.ts.map +1 -0
  5. package/dist/adapters/DatabaseAdapter.js +131 -0
  6. package/dist/adapters/DatabaseAdapter.js.map +1 -0
  7. package/dist/adapters/sqlite/SchemaManager.d.ts +58 -0
  8. package/dist/adapters/sqlite/SchemaManager.d.ts.map +1 -0
  9. package/dist/adapters/sqlite/SchemaManager.js +187 -0
  10. package/dist/adapters/sqlite/SchemaManager.js.map +1 -0
  11. package/dist/adapters/sqlite/SqliteAdapter.d.ts +161 -0
  12. package/dist/adapters/sqlite/SqliteAdapter.d.ts.map +1 -0
  13. package/dist/adapters/sqlite/SqliteAdapter.js +741 -0
  14. package/dist/adapters/sqlite/SqliteAdapter.js.map +1 -0
  15. package/dist/adapters/sqlite/index.d.ts +9 -0
  16. package/dist/adapters/sqlite/index.d.ts.map +1 -0
  17. package/dist/adapters/sqlite/index.js +8 -0
  18. package/dist/adapters/sqlite/index.js.map +1 -0
  19. package/dist/adapters/sqlite/json-utils.d.ts +100 -0
  20. package/dist/adapters/sqlite/json-utils.d.ts.map +1 -0
  21. package/dist/adapters/sqlite/json-utils.js +274 -0
  22. package/dist/adapters/sqlite/json-utils.js.map +1 -0
  23. package/dist/adapters/sqlite/output-schemas.d.ts +1187 -0
  24. package/dist/adapters/sqlite/output-schemas.d.ts.map +1 -0
  25. package/dist/adapters/sqlite/output-schemas.js +1337 -0
  26. package/dist/adapters/sqlite/output-schemas.js.map +1 -0
  27. package/dist/adapters/sqlite/prompts.d.ts +13 -0
  28. package/dist/adapters/sqlite/prompts.d.ts.map +1 -0
  29. package/dist/adapters/sqlite/prompts.js +605 -0
  30. package/dist/adapters/sqlite/prompts.js.map +1 -0
  31. package/dist/adapters/sqlite/resources.d.ts +13 -0
  32. package/dist/adapters/sqlite/resources.d.ts.map +1 -0
  33. package/dist/adapters/sqlite/resources.js +251 -0
  34. package/dist/adapters/sqlite/resources.js.map +1 -0
  35. package/dist/adapters/sqlite/tools/admin.d.ts +14 -0
  36. package/dist/adapters/sqlite/tools/admin.d.ts.map +1 -0
  37. package/dist/adapters/sqlite/tools/admin.js +788 -0
  38. package/dist/adapters/sqlite/tools/admin.js.map +1 -0
  39. package/dist/adapters/sqlite/tools/core.d.ts +25 -0
  40. package/dist/adapters/sqlite/tools/core.d.ts.map +1 -0
  41. package/dist/adapters/sqlite/tools/core.js +359 -0
  42. package/dist/adapters/sqlite/tools/core.js.map +1 -0
  43. package/dist/adapters/sqlite/tools/fts.d.ts +13 -0
  44. package/dist/adapters/sqlite/tools/fts.d.ts.map +1 -0
  45. package/dist/adapters/sqlite/tools/fts.js +347 -0
  46. package/dist/adapters/sqlite/tools/fts.js.map +1 -0
  47. package/dist/adapters/sqlite/tools/geo.d.ts +14 -0
  48. package/dist/adapters/sqlite/tools/geo.d.ts.map +1 -0
  49. package/dist/adapters/sqlite/tools/geo.js +252 -0
  50. package/dist/adapters/sqlite/tools/geo.js.map +1 -0
  51. package/dist/adapters/sqlite/tools/index.d.ts +30 -0
  52. package/dist/adapters/sqlite/tools/index.d.ts.map +1 -0
  53. package/dist/adapters/sqlite/tools/index.js +61 -0
  54. package/dist/adapters/sqlite/tools/index.js.map +1 -0
  55. package/dist/adapters/sqlite/tools/json-helpers.d.ts +14 -0
  56. package/dist/adapters/sqlite/tools/json-helpers.d.ts.map +1 -0
  57. package/dist/adapters/sqlite/tools/json-helpers.js +477 -0
  58. package/dist/adapters/sqlite/tools/json-helpers.js.map +1 -0
  59. package/dist/adapters/sqlite/tools/json-operations.d.ts +14 -0
  60. package/dist/adapters/sqlite/tools/json-operations.d.ts.map +1 -0
  61. package/dist/adapters/sqlite/tools/json-operations.js +839 -0
  62. package/dist/adapters/sqlite/tools/json-operations.js.map +1 -0
  63. package/dist/adapters/sqlite/tools/stats.d.ts +15 -0
  64. package/dist/adapters/sqlite/tools/stats.d.ts.map +1 -0
  65. package/dist/adapters/sqlite/tools/stats.js +1219 -0
  66. package/dist/adapters/sqlite/tools/stats.js.map +1 -0
  67. package/dist/adapters/sqlite/tools/text.d.ts +14 -0
  68. package/dist/adapters/sqlite/tools/text.d.ts.map +1 -0
  69. package/dist/adapters/sqlite/tools/text.js +1141 -0
  70. package/dist/adapters/sqlite/tools/text.js.map +1 -0
  71. package/dist/adapters/sqlite/tools/vector.d.ts +14 -0
  72. package/dist/adapters/sqlite/tools/vector.d.ts.map +1 -0
  73. package/dist/adapters/sqlite/tools/vector.js +613 -0
  74. package/dist/adapters/sqlite/tools/vector.js.map +1 -0
  75. package/dist/adapters/sqlite/tools/virtual.d.ts +13 -0
  76. package/dist/adapters/sqlite/tools/virtual.d.ts.map +1 -0
  77. package/dist/adapters/sqlite/tools/virtual.js +930 -0
  78. package/dist/adapters/sqlite/tools/virtual.js.map +1 -0
  79. package/dist/adapters/sqlite/types.d.ts +207 -0
  80. package/dist/adapters/sqlite/types.d.ts.map +1 -0
  81. package/dist/adapters/sqlite/types.js +186 -0
  82. package/dist/adapters/sqlite/types.js.map +1 -0
  83. package/dist/adapters/sqlite-native/NativeSqliteAdapter.d.ts +163 -0
  84. package/dist/adapters/sqlite-native/NativeSqliteAdapter.d.ts.map +1 -0
  85. package/dist/adapters/sqlite-native/NativeSqliteAdapter.js +748 -0
  86. package/dist/adapters/sqlite-native/NativeSqliteAdapter.js.map +1 -0
  87. package/dist/adapters/sqlite-native/index.d.ts +11 -0
  88. package/dist/adapters/sqlite-native/index.d.ts.map +1 -0
  89. package/dist/adapters/sqlite-native/index.js +11 -0
  90. package/dist/adapters/sqlite-native/index.js.map +1 -0
  91. package/dist/adapters/sqlite-native/tools/spatialite.d.ts +19 -0
  92. package/dist/adapters/sqlite-native/tools/spatialite.d.ts.map +1 -0
  93. package/dist/adapters/sqlite-native/tools/spatialite.js +628 -0
  94. package/dist/adapters/sqlite-native/tools/spatialite.js.map +1 -0
  95. package/dist/adapters/sqlite-native/tools/transactions.d.ts +12 -0
  96. package/dist/adapters/sqlite-native/tools/transactions.d.ts.map +1 -0
  97. package/dist/adapters/sqlite-native/tools/transactions.js +255 -0
  98. package/dist/adapters/sqlite-native/tools/transactions.js.map +1 -0
  99. package/dist/adapters/sqlite-native/tools/window.d.ts +12 -0
  100. package/dist/adapters/sqlite-native/tools/window.d.ts.map +1 -0
  101. package/dist/adapters/sqlite-native/tools/window.js +370 -0
  102. package/dist/adapters/sqlite-native/tools/window.js.map +1 -0
  103. package/dist/auth/AuthorizationServerDiscovery.d.ts +90 -0
  104. package/dist/auth/AuthorizationServerDiscovery.d.ts.map +1 -0
  105. package/dist/auth/AuthorizationServerDiscovery.js +204 -0
  106. package/dist/auth/AuthorizationServerDiscovery.js.map +1 -0
  107. package/dist/auth/OAuthResourceServer.d.ts +65 -0
  108. package/dist/auth/OAuthResourceServer.d.ts.map +1 -0
  109. package/dist/auth/OAuthResourceServer.js +121 -0
  110. package/dist/auth/OAuthResourceServer.js.map +1 -0
  111. package/dist/auth/TokenValidator.d.ts +60 -0
  112. package/dist/auth/TokenValidator.d.ts.map +1 -0
  113. package/dist/auth/TokenValidator.js +235 -0
  114. package/dist/auth/TokenValidator.js.map +1 -0
  115. package/dist/auth/errors.d.ts +74 -0
  116. package/dist/auth/errors.d.ts.map +1 -0
  117. package/dist/auth/errors.js +133 -0
  118. package/dist/auth/errors.js.map +1 -0
  119. package/dist/auth/index.d.ts +13 -0
  120. package/dist/auth/index.d.ts.map +1 -0
  121. package/dist/auth/index.js +15 -0
  122. package/dist/auth/index.js.map +1 -0
  123. package/dist/auth/middleware.d.ts +81 -0
  124. package/dist/auth/middleware.d.ts.map +1 -0
  125. package/dist/auth/middleware.js +291 -0
  126. package/dist/auth/middleware.js.map +1 -0
  127. package/dist/auth/scopes.d.ts +136 -0
  128. package/dist/auth/scopes.d.ts.map +1 -0
  129. package/dist/auth/scopes.js +349 -0
  130. package/dist/auth/scopes.js.map +1 -0
  131. package/dist/auth/types.d.ts +257 -0
  132. package/dist/auth/types.d.ts.map +1 -0
  133. package/dist/auth/types.js +8 -0
  134. package/dist/auth/types.js.map +1 -0
  135. package/dist/cli.d.ts +8 -0
  136. package/dist/cli.d.ts.map +1 -0
  137. package/dist/cli.js +236 -0
  138. package/dist/cli.js.map +1 -0
  139. package/dist/constants/ServerInstructions.d.ts +45 -0
  140. package/dist/constants/ServerInstructions.d.ts.map +1 -0
  141. package/dist/constants/ServerInstructions.js +356 -0
  142. package/dist/constants/ServerInstructions.js.map +1 -0
  143. package/dist/filtering/ToolConstants.d.ts +34 -0
  144. package/dist/filtering/ToolConstants.d.ts.map +1 -0
  145. package/dist/filtering/ToolConstants.js +174 -0
  146. package/dist/filtering/ToolConstants.js.map +1 -0
  147. package/dist/filtering/ToolFilter.d.ts +82 -0
  148. package/dist/filtering/ToolFilter.d.ts.map +1 -0
  149. package/dist/filtering/ToolFilter.js +296 -0
  150. package/dist/filtering/ToolFilter.js.map +1 -0
  151. package/dist/index.d.ts +13 -0
  152. package/dist/index.d.ts.map +1 -0
  153. package/dist/index.js +17 -0
  154. package/dist/index.js.map +1 -0
  155. package/dist/server/McpServer.d.ts +61 -0
  156. package/dist/server/McpServer.d.ts.map +1 -0
  157. package/dist/server/McpServer.js +270 -0
  158. package/dist/server/McpServer.js.map +1 -0
  159. package/dist/transports/http.d.ts +134 -0
  160. package/dist/transports/http.d.ts.map +1 -0
  161. package/dist/transports/http.js +516 -0
  162. package/dist/transports/http.js.map +1 -0
  163. package/dist/transports/index.d.ts +5 -0
  164. package/dist/transports/index.d.ts.map +1 -0
  165. package/dist/transports/index.js +5 -0
  166. package/dist/transports/index.js.map +1 -0
  167. package/dist/types/index.d.ts +380 -0
  168. package/dist/types/index.d.ts.map +1 -0
  169. package/dist/types/index.js +68 -0
  170. package/dist/types/index.js.map +1 -0
  171. package/dist/utils/annotations.d.ts +44 -0
  172. package/dist/utils/annotations.d.ts.map +1 -0
  173. package/dist/utils/annotations.js +77 -0
  174. package/dist/utils/annotations.js.map +1 -0
  175. package/dist/utils/errors.d.ts +155 -0
  176. package/dist/utils/errors.d.ts.map +1 -0
  177. package/dist/utils/errors.js +329 -0
  178. package/dist/utils/errors.js.map +1 -0
  179. package/dist/utils/identifiers.d.ts +121 -0
  180. package/dist/utils/identifiers.d.ts.map +1 -0
  181. package/dist/utils/identifiers.js +319 -0
  182. package/dist/utils/identifiers.js.map +1 -0
  183. package/dist/utils/index.d.ts +7 -0
  184. package/dist/utils/index.d.ts.map +1 -0
  185. package/dist/utils/index.js +7 -0
  186. package/dist/utils/index.js.map +1 -0
  187. package/dist/utils/insightsManager.d.ts +39 -0
  188. package/dist/utils/insightsManager.d.ts.map +1 -0
  189. package/dist/utils/insightsManager.js +63 -0
  190. package/dist/utils/insightsManager.js.map +1 -0
  191. package/dist/utils/logger.d.ts +189 -0
  192. package/dist/utils/logger.d.ts.map +1 -0
  193. package/dist/utils/logger.js +394 -0
  194. package/dist/utils/logger.js.map +1 -0
  195. package/dist/utils/progress-utils.d.ts +54 -0
  196. package/dist/utils/progress-utils.d.ts.map +1 -0
  197. package/dist/utils/progress-utils.js +74 -0
  198. package/dist/utils/progress-utils.js.map +1 -0
  199. package/dist/utils/resourceAnnotations.d.ts +36 -0
  200. package/dist/utils/resourceAnnotations.d.ts.map +1 -0
  201. package/dist/utils/resourceAnnotations.js +57 -0
  202. package/dist/utils/resourceAnnotations.js.map +1 -0
  203. package/dist/utils/where-clause.d.ts +41 -0
  204. package/dist/utils/where-clause.d.ts.map +1 -0
  205. package/dist/utils/where-clause.js +116 -0
  206. package/dist/utils/where-clause.js.map +1 -0
  207. package/package.json +83 -0
  208. package/server.json +53 -0
@@ -0,0 +1,516 @@
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 express from "express";
13
+ import cors from "cors";
14
+ import { randomUUID } from "node:crypto";
15
+ import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
16
+ import { isInitializeRequest } from "@modelcontextprotocol/sdk/types.js";
17
+ import { OAuthResourceServer } from "../auth/OAuthResourceServer.js";
18
+ import { AuthorizationServerDiscovery } from "../auth/AuthorizationServerDiscovery.js";
19
+ import { TokenValidator } from "../auth/TokenValidator.js";
20
+ import { createAuthMiddleware, oauthErrorHandler } from "../auth/middleware.js";
21
+ import { SUPPORTED_SCOPES } from "../auth/scopes.js";
22
+ import { createModuleLogger, ERROR_CODES } from "../utils/logger.js";
23
+ const logger = createModuleLogger("HTTP");
24
+ // =============================================================================
25
+ // HTTP Transport
26
+ // =============================================================================
27
+ /**
28
+ * HTTP Transport for MCP with OAuth 2.0 integration and SSE support.
29
+ *
30
+ * Supports two modes:
31
+ * - Stateful (default): Multi-session management with SSE streaming for notifications
32
+ * - Stateless: Single transport, no session management - ideal for serverless
33
+ */
34
+ export class HttpTransport {
35
+ config;
36
+ app = null;
37
+ httpServer = null;
38
+ // Session storage for stateful mode
39
+ transports = new Map();
40
+ // Single transport for stateless mode
41
+ statelessTransport = null;
42
+ // OAuth components
43
+ resourceServer = null;
44
+ authServerDiscovery = null;
45
+ tokenValidator = null;
46
+ // Reference to the MCP server for stateful connections
47
+ mcpServer = null;
48
+ constructor(config) {
49
+ this.config = {
50
+ ...config,
51
+ host: config.host ?? "0.0.0.0",
52
+ stateless: config.stateless ?? false,
53
+ };
54
+ }
55
+ /**
56
+ * Initialize the transport with the MCP server.
57
+ *
58
+ * For stateful mode, the server reference is stored to connect new sessions.
59
+ * For stateless mode, a single transport is created and connected.
60
+ *
61
+ * @param server - The MCP server instance
62
+ */
63
+ async initialize(server) {
64
+ logger.info("Initializing HTTP transport...", {
65
+ code: "HTTP_INIT",
66
+ stateless: this.config.stateless,
67
+ });
68
+ this.mcpServer = server;
69
+ // Create Express app
70
+ this.app = express();
71
+ // Configure CORS with SSE-compatible headers
72
+ this.setupCors();
73
+ // Parse JSON bodies
74
+ this.app.use(express.json());
75
+ // Determine resource URI
76
+ const resourceUri = this.config.resourceUri ?? `http://localhost:${String(this.config.port)}`;
77
+ // Set up OAuth if enabled
78
+ if (this.config.oauth.enabled) {
79
+ await this.setupOAuth(resourceUri);
80
+ }
81
+ // Health check endpoint (always public)
82
+ this.app.get("/health", (_req, res) => {
83
+ res.json({
84
+ status: "healthy",
85
+ timestamp: new Date().toISOString(),
86
+ oauth: this.config.oauth.enabled,
87
+ mode: this.config.stateless ? "stateless" : "stateful",
88
+ activeSessions: this.transports.size,
89
+ });
90
+ });
91
+ // Root endpoint - helpful information for browser visitors
92
+ this.app.get("/", (_req, res) => {
93
+ res.json({
94
+ name: "db-mcp",
95
+ description: "SQLite MCP Server with HTTP/SSE transport",
96
+ mode: this.config.stateless ? "stateless" : "stateful",
97
+ endpoints: {
98
+ "POST /mcp": "JSON-RPC requests (MCP protocol)",
99
+ "GET /mcp": this.config.stateless === true
100
+ ? "Not available in stateless mode"
101
+ : "SSE stream for server-to-client notifications",
102
+ "DELETE /mcp": "Session termination",
103
+ "GET /health": "Health check",
104
+ },
105
+ documentation: "https://github.com/neverinfamous/db-mcp",
106
+ });
107
+ });
108
+ // Set up MCP endpoints based on mode
109
+ if (this.config.stateless) {
110
+ await this.setupStatelessEndpoints();
111
+ }
112
+ else {
113
+ this.setupStatefulEndpoints();
114
+ }
115
+ // Error handler
116
+ this.app.use(oauthErrorHandler);
117
+ logger.info("HTTP transport initialized", {
118
+ code: "HTTP_INIT_COMPLETE",
119
+ port: this.config.port,
120
+ oauth: this.config.oauth.enabled,
121
+ mode: this.config.stateless ? "stateless" : "stateful",
122
+ resourceUri,
123
+ });
124
+ }
125
+ /**
126
+ * Configure CORS with SSE-compatible headers
127
+ */
128
+ setupCors() {
129
+ if (!this.app)
130
+ return;
131
+ // Manual CORS middleware for browser-based clients (e.g., MCP Inspector)
132
+ this.app.use((req, res, next) => {
133
+ // Set CORS headers on all responses
134
+ res.setHeader("Access-Control-Allow-Origin", "*");
135
+ res.setHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, OPTIONS");
136
+ res.setHeader("Access-Control-Allow-Headers", "Content-Type, Accept, Authorization, mcp-session-id, Last-Event-ID, mcp-protocol-version");
137
+ res.setHeader("Access-Control-Expose-Headers", "mcp-session-id");
138
+ // Handle OPTIONS preflight requests
139
+ if (req.method === "OPTIONS") {
140
+ res.status(204).end();
141
+ return;
142
+ }
143
+ next();
144
+ });
145
+ // Additional CORS config if provided
146
+ if (this.config.cors) {
147
+ this.app.use(cors(this.config.cors));
148
+ }
149
+ // Explicit OPTIONS handler for /mcp - MUST be before other /mcp routes
150
+ this.app.all("/mcp", (req, res, next) => {
151
+ // Set CORS headers on ALL responses
152
+ res.setHeader("Access-Control-Allow-Origin", "*");
153
+ res.setHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, OPTIONS");
154
+ res.setHeader("Access-Control-Allow-Headers", "Content-Type, Accept, Authorization, mcp-session-id, Last-Event-ID, mcp-protocol-version");
155
+ res.setHeader("Access-Control-Expose-Headers", "mcp-session-id");
156
+ // For OPTIONS, respond immediately with CORS headers
157
+ if (req.method === "OPTIONS") {
158
+ res.status(204).end();
159
+ return;
160
+ }
161
+ // For other methods, continue to next handler
162
+ next();
163
+ });
164
+ }
165
+ /**
166
+ * Set up stateless mode endpoints (serverless-compatible)
167
+ */
168
+ async setupStatelessEndpoints() {
169
+ if (!this.app || !this.mcpServer) {
170
+ throw new Error("Transport or server not initialized");
171
+ }
172
+ // Apply auth middleware if OAuth is enabled
173
+ this.applyAuthMiddleware();
174
+ // Create single stateless transport
175
+ // Note: omitting sessionIdGenerator signals stateless mode (no sessions)
176
+ this.statelessTransport = new StreamableHTTPServerTransport({
177
+ enableJsonResponse: true,
178
+ });
179
+ // Ensure transport has onclose handler (required by SDK 1.25.2+)
180
+ this.statelessTransport.onclose ??= () => {
181
+ logger.debug("Stateless transport closed", {
182
+ code: "HTTP_STATELESS_CLOSE",
183
+ });
184
+ };
185
+ // Connect transport to server (type assertion for SDK 1.25.2+ exact types)
186
+ await this.mcpServer.connect(this.statelessTransport);
187
+ logger.info("Stateless transport connected", { code: "HTTP_STATELESS" });
188
+ // POST /mcp - All requests go to the same transport (no session validation)
189
+ this.app.post("/mcp", (req, res) => {
190
+ if (!this.statelessTransport) {
191
+ res.status(500).json({ error: "Transport not initialized" });
192
+ return;
193
+ }
194
+ void this.statelessTransport.handleRequest(req, res, req.body);
195
+ });
196
+ // GET /mcp - SSE not available in stateless mode
197
+ this.app.get("/mcp", (_req, res) => {
198
+ res.status(405).json({
199
+ jsonrpc: "2.0",
200
+ error: {
201
+ code: -32000,
202
+ message: "SSE streaming not available in stateless mode",
203
+ },
204
+ id: null,
205
+ });
206
+ });
207
+ // DELETE /mcp - No-op in stateless mode (no sessions to terminate)
208
+ this.app.delete("/mcp", (_req, res) => {
209
+ res.status(204).end();
210
+ });
211
+ }
212
+ /**
213
+ * Set up stateful mode endpoints with session management and SSE
214
+ */
215
+ setupStatefulEndpoints() {
216
+ if (!this.app || !this.mcpServer) {
217
+ throw new Error("Transport or server not initialized");
218
+ }
219
+ // Apply auth middleware if OAuth is enabled
220
+ this.applyAuthMiddleware();
221
+ const server = this.mcpServer;
222
+ // POST /mcp - Handle JSON-RPC requests with session management
223
+ this.app.post("/mcp", (req, res) => {
224
+ const sessionId = req.headers["mcp-session-id"];
225
+ // Helper: Check if this is an initialize request (single or in batch)
226
+ const isNewSessionRequest = (body) => {
227
+ // Single request
228
+ if (isInitializeRequest(body)) {
229
+ return true;
230
+ }
231
+ // Batch request - check if first item is initialize
232
+ if (Array.isArray(body) && body.length > 0) {
233
+ return isInitializeRequest(body[0]);
234
+ }
235
+ return false;
236
+ };
237
+ void (async () => {
238
+ try {
239
+ let httpTransport;
240
+ if (sessionId && this.transports.has(sessionId)) {
241
+ // Reuse existing transport
242
+ httpTransport = this.transports.get(sessionId);
243
+ }
244
+ else if (sessionId === undefined && isNewSessionRequest(req.body)) {
245
+ // New initialization request - create transport
246
+ const newTransport = new StreamableHTTPServerTransport({
247
+ sessionIdGenerator: () => randomUUID(),
248
+ onsessioninitialized: (sid) => {
249
+ logger.info("HTTP session initialized", {
250
+ code: "HTTP_SESSION_INIT",
251
+ sessionId: sid,
252
+ });
253
+ this.transports.set(sid, newTransport);
254
+ },
255
+ });
256
+ // Clean up on transport close
257
+ newTransport.onclose = () => {
258
+ const sid = newTransport.sessionId;
259
+ if (sid !== undefined && this.transports.has(sid)) {
260
+ logger.info("HTTP transport closed", {
261
+ code: "HTTP_SESSION_CLOSE",
262
+ sessionId: sid,
263
+ });
264
+ this.transports.delete(sid);
265
+ }
266
+ };
267
+ // Connect transport to server before handling request
268
+ // Type assertion for SDK 1.25.2+ exact optional types
269
+ await server.connect(newTransport);
270
+ await newTransport.handleRequest(req, res, req.body);
271
+ return;
272
+ }
273
+ else {
274
+ // Invalid request - no session ID or not initialization
275
+ res.status(400).json({
276
+ jsonrpc: "2.0",
277
+ error: {
278
+ code: -32000,
279
+ message: "Bad Request: No valid session ID provided",
280
+ },
281
+ id: null,
282
+ });
283
+ return;
284
+ }
285
+ // Handle request with existing transport
286
+ if (httpTransport !== undefined) {
287
+ await httpTransport.handleRequest(req, res, req.body);
288
+ }
289
+ }
290
+ catch (error) {
291
+ logger.error("Error handling MCP request", {
292
+ code: ERROR_CODES.SERVER.TRANSPORT_ERROR.full,
293
+ error: error instanceof Error ? error : undefined,
294
+ });
295
+ if (!res.headersSent) {
296
+ res.status(500).json({
297
+ jsonrpc: "2.0",
298
+ error: { code: -32603, message: "Internal server error" },
299
+ id: null,
300
+ });
301
+ }
302
+ }
303
+ })();
304
+ });
305
+ // GET /mcp - SSE stream for server-to-client notifications
306
+ this.app.get("/mcp", (req, res) => {
307
+ const sessionId = req.headers["mcp-session-id"];
308
+ if (sessionId === undefined || !this.transports.has(sessionId)) {
309
+ res.status(400).send("Invalid or missing session ID");
310
+ return;
311
+ }
312
+ const lastEventId = req.headers["last-event-id"];
313
+ if (lastEventId !== undefined) {
314
+ logger.debug("Client reconnecting with Last-Event-ID", {
315
+ code: "HTTP_SSE_RECONNECT",
316
+ sessionId,
317
+ lastEventId,
318
+ });
319
+ }
320
+ const httpTransport = this.transports.get(sessionId);
321
+ if (httpTransport !== undefined) {
322
+ void httpTransport.handleRequest(req, res);
323
+ }
324
+ });
325
+ // DELETE /mcp - Session termination
326
+ this.app.delete("/mcp", (req, res) => {
327
+ const sessionId = req.headers["mcp-session-id"];
328
+ if (sessionId === undefined || !this.transports.has(sessionId)) {
329
+ res.status(400).send("Invalid or missing session ID");
330
+ return;
331
+ }
332
+ logger.info("Session termination requested", {
333
+ code: "HTTP_SESSION_DELETE",
334
+ sessionId,
335
+ });
336
+ const httpTransport = this.transports.get(sessionId);
337
+ if (httpTransport !== undefined) {
338
+ void httpTransport.handleRequest(req, res);
339
+ }
340
+ });
341
+ }
342
+ /**
343
+ * Apply OAuth authentication middleware if enabled
344
+ */
345
+ applyAuthMiddleware() {
346
+ if (this.config.oauth.enabled &&
347
+ this.tokenValidator &&
348
+ this.resourceServer &&
349
+ this.app) {
350
+ const authMiddleware = createAuthMiddleware({
351
+ tokenValidator: this.tokenValidator,
352
+ resourceServer: this.resourceServer,
353
+ publicPaths: ["/health", ...(this.config.oauth.publicPaths ?? [])],
354
+ });
355
+ this.app.use(authMiddleware);
356
+ }
357
+ }
358
+ /**
359
+ * Set up OAuth 2.0 components
360
+ */
361
+ async setupOAuth(resourceUri) {
362
+ logger.info("Setting up OAuth 2.0...", { code: "HTTP_OAUTH_SETUP" });
363
+ // Create Resource Server
364
+ this.resourceServer = new OAuthResourceServer({
365
+ resource: resourceUri,
366
+ authorizationServers: [this.config.oauth.authorizationServerUrl],
367
+ scopesSupported: [...SUPPORTED_SCOPES],
368
+ });
369
+ // Serve Protected Resource Metadata endpoint
370
+ this.app?.get("/.well-known/oauth-protected-resource", this.resourceServer.getMetadataHandler());
371
+ // Discover authorization server metadata
372
+ this.authServerDiscovery = new AuthorizationServerDiscovery({
373
+ authServerUrl: this.config.oauth.authorizationServerUrl,
374
+ });
375
+ try {
376
+ const metadata = await this.authServerDiscovery.discover();
377
+ // Create Token Validator
378
+ this.tokenValidator = new TokenValidator({
379
+ jwksUri: this.config.oauth.jwksUri ?? metadata.jwks_uri ?? "",
380
+ issuer: this.config.oauth.issuer ?? metadata.issuer,
381
+ audience: this.config.oauth.audience,
382
+ clockTolerance: this.config.oauth.clockTolerance,
383
+ });
384
+ logger.info("OAuth 2.0 setup complete", { code: "HTTP_OAUTH_READY" });
385
+ }
386
+ catch (error) {
387
+ // If discovery fails, we can still start without OAuth validation
388
+ logger.warning("Authorization server discovery failed. OAuth validation disabled.", {
389
+ code: ERROR_CODES.AUTH.DISCOVERY_FAILED.full,
390
+ error: error instanceof Error ? error : undefined,
391
+ });
392
+ if (!this.config.oauth.jwksUri) {
393
+ logger.error("No JWKS URI available. Please provide oauth.jwksUri in config.", { code: ERROR_CODES.AUTH.DISCOVERY_FAILED.full });
394
+ throw error;
395
+ }
396
+ this.tokenValidator = new TokenValidator({
397
+ jwksUri: this.config.oauth.jwksUri,
398
+ issuer: this.config.oauth.issuer ?? this.config.oauth.authorizationServerUrl,
399
+ audience: this.config.oauth.audience,
400
+ clockTolerance: this.config.oauth.clockTolerance,
401
+ });
402
+ }
403
+ }
404
+ /**
405
+ * Start listening on the configured port
406
+ */
407
+ async start() {
408
+ if (!this.app) {
409
+ throw new Error("Transport not initialized. Call initialize() first.");
410
+ }
411
+ return new Promise((resolve, reject) => {
412
+ try {
413
+ this.httpServer =
414
+ this.app?.listen(this.config.port, this.config.host ?? "0.0.0.0", () => {
415
+ logger.info(`HTTP server listening on ${this.config.host ?? "0.0.0.0"}:${String(this.config.port)}`, {
416
+ code: "HTTP_SERVER_STARTED",
417
+ mode: this.config.stateless ? "stateless" : "stateful",
418
+ });
419
+ resolve();
420
+ }) ?? null;
421
+ this.httpServer?.on("error", (error) => {
422
+ logger.error("Failed to start HTTP server", {
423
+ code: ERROR_CODES.SERVER.START_FAILED.full,
424
+ error,
425
+ });
426
+ reject(error);
427
+ });
428
+ }
429
+ catch (error) {
430
+ reject(error instanceof Error ? error : new Error(String(error)));
431
+ }
432
+ });
433
+ }
434
+ /**
435
+ * Stop the server and close all active sessions
436
+ */
437
+ async stop() {
438
+ // Close all active transports in stateful mode
439
+ for (const [sessionId, transport] of this.transports) {
440
+ try {
441
+ logger.debug("Closing transport", {
442
+ code: "HTTP_SESSION_CLEANUP",
443
+ sessionId,
444
+ });
445
+ await transport.close();
446
+ }
447
+ catch (error) {
448
+ logger.error("Error closing transport", {
449
+ code: ERROR_CODES.SERVER.SHUTDOWN_FAILED.full,
450
+ sessionId,
451
+ error: error instanceof Error ? error : undefined,
452
+ });
453
+ }
454
+ }
455
+ this.transports.clear();
456
+ // Close stateless transport if in use
457
+ if (this.statelessTransport) {
458
+ try {
459
+ await this.statelessTransport.close();
460
+ }
461
+ catch (error) {
462
+ logger.error("Error closing stateless transport", {
463
+ code: ERROR_CODES.SERVER.SHUTDOWN_FAILED.full,
464
+ error: error instanceof Error ? error : undefined,
465
+ });
466
+ }
467
+ }
468
+ return new Promise((resolve, reject) => {
469
+ if (!this.httpServer) {
470
+ resolve();
471
+ return;
472
+ }
473
+ this.httpServer.close((error) => {
474
+ if (error) {
475
+ logger.error("Error stopping HTTP server", {
476
+ code: ERROR_CODES.SERVER.SHUTDOWN_FAILED.full,
477
+ error,
478
+ });
479
+ reject(error);
480
+ }
481
+ else {
482
+ logger.info("HTTP server stopped", { code: "HTTP_SERVER_STOPPED" });
483
+ resolve();
484
+ }
485
+ });
486
+ });
487
+ }
488
+ /**
489
+ * Get the underlying Express app
490
+ */
491
+ getApp() {
492
+ return this.app;
493
+ }
494
+ /**
495
+ * Get the number of active sessions (stateful mode only)
496
+ */
497
+ getActiveSessionCount() {
498
+ return this.transports.size;
499
+ }
500
+ /**
501
+ * Get the OAuth Resource Server
502
+ */
503
+ getResourceServer() {
504
+ return this.resourceServer;
505
+ }
506
+ }
507
+ // =============================================================================
508
+ // Factory Function
509
+ // =============================================================================
510
+ /**
511
+ * Create an HTTP transport instance
512
+ */
513
+ export function createHttpTransport(config) {
514
+ return new HttpTransport(config);
515
+ }
516
+ //# sourceMappingURL=http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/transports/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,OAA8C,MAAM,SAAS,CAAC;AAErE,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAGzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,4BAA4B,EAAE,MAAM,yCAAyC,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGrE,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAqE1C,gFAAgF;AAChF,iBAAiB;AACjB,gFAAgF;AAEhF;;;;;;GAMG;AACH,MAAM,OAAO,aAAa;IACP,MAAM,CAAsB;IACrC,GAAG,GAAmB,IAAI,CAAC;IAC3B,UAAU,GAAuB,IAAI,CAAC;IAE9C,oCAAoC;IAC5B,UAAU,GAAG,IAAI,GAAG,EAAyC,CAAC;IAEtE,sCAAsC;IAC9B,kBAAkB,GAAyC,IAAI,CAAC;IAExE,mBAAmB;IACX,cAAc,GAA+B,IAAI,CAAC;IAClD,mBAAmB,GAAwC,IAAI,CAAC;IAChE,cAAc,GAA0B,IAAI,CAAC;IAErD,uDAAuD;IAC/C,SAAS,GAAqB,IAAI,CAAC;IAE3C,YAAY,MAA2B;QACrC,IAAI,CAAC,MAAM,GAAG;YACZ,GAAG,MAAM;YACT,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,SAAS;YAC9B,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,KAAK;SACrC,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,UAAU,CAAC,MAAiB;QAChC,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE;YAC5C,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;SACjC,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;QAExB,qBAAqB;QACrB,IAAI,CAAC,GAAG,GAAG,OAAO,EAAE,CAAC;QAErB,6CAA6C;QAC7C,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,oBAAoB;QACpB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAE7B,yBAAyB;QACzB,MAAM,WAAW,GACf,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,oBAAoB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAE5E,0BAA0B;QAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YAC9B,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACrC,CAAC;QAED,wCAAwC;QACxC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YACpC,GAAG,CAAC,IAAI,CAAC;gBACP,MAAM,EAAE,SAAS;gBACjB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO;gBAChC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU;gBACtD,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI;aACrC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,2DAA2D;QAC3D,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YAC9B,GAAG,CAAC,IAAI,CAAC;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,2CAA2C;gBACxD,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU;gBACtD,SAAS,EAAE;oBACT,WAAW,EAAE,kCAAkC;oBAC/C,UAAU,EACR,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,IAAI;wBAC5B,CAAC,CAAC,iCAAiC;wBACnC,CAAC,CAAC,+CAA+C;oBACrD,aAAa,EAAE,qBAAqB;oBACpC,aAAa,EAAE,cAAc;iBAC9B;gBACD,aAAa,EAAE,yCAAyC;aACzD,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,qCAAqC;QACrC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAChC,CAAC;QAED,gBAAgB;QAChB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAEhC,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE;YACxC,IAAI,EAAE,oBAAoB;YAC1B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;YACtB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO;YAChC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU;YACtD,WAAW;SACZ,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,SAAS;QACf,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,OAAO;QAEtB,yEAAyE;QACzE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAY,EAAE,GAAa,EAAE,IAAgB,EAAE,EAAE;YAC7D,oCAAoC;YACpC,GAAG,CAAC,SAAS,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;YAClD,GAAG,CAAC,SAAS,CACX,8BAA8B,EAC9B,4BAA4B,CAC7B,CAAC;YACF,GAAG,CAAC,SAAS,CACX,8BAA8B,EAC9B,0FAA0F,CAC3F,CAAC;YACF,GAAG,CAAC,SAAS,CAAC,+BAA+B,EAAE,gBAAgB,CAAC,CAAC;YAEjE,oCAAoC;YACpC,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC7B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBACtB,OAAO;YACT,CAAC;YAED,IAAI,EAAE,CAAC;QACT,CAAC,CAAC,CAAC;QAEH,qCAAqC;QACrC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAmB,CAAC,CAAC;QACzD,CAAC;QAED,uEAAuE;QACvE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,IAAgB,EAAE,EAAE;YACrE,oCAAoC;YACpC,GAAG,CAAC,SAAS,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;YAClD,GAAG,CAAC,SAAS,CACX,8BAA8B,EAC9B,4BAA4B,CAC7B,CAAC;YACF,GAAG,CAAC,SAAS,CACX,8BAA8B,EAC9B,0FAA0F,CAC3F,CAAC;YACF,GAAG,CAAC,SAAS,CAAC,+BAA+B,EAAE,gBAAgB,CAAC,CAAC;YAEjE,qDAAqD;YACrD,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC7B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBACtB,OAAO;YACT,CAAC;YAED,8CAA8C;YAC9C,IAAI,EAAE,CAAC;QACT,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,uBAAuB;QACnC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QAED,4CAA4C;QAC5C,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,oCAAoC;QACpC,yEAAyE;QACzE,IAAI,CAAC,kBAAkB,GAAG,IAAI,6BAA6B,CAAC;YAC1D,kBAAkB,EAAE,IAAI;SACzB,CAAC,CAAC;QAEH,iEAAiE;QACjE,IAAI,CAAC,kBAAkB,CAAC,OAAO,KAAK,GAAG,EAAE;YACvC,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE;gBACzC,IAAI,EAAE,sBAAsB;aAC7B,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,2EAA2E;QAC3E,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAC1B,IAAI,CAAC,kBAAkE,CACxE,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAEzE,4EAA4E;QAC5E,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAY,EAAE,GAAa,EAAQ,EAAE;YAC1D,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC7B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC,CAAC;gBAC7D,OAAO;YACT,CAAC;YAED,KAAK,IAAI,CAAC,kBAAkB,CAAC,aAAa,CACxC,GAAiC,EACjC,GAAgC,EAChC,GAAG,CAAC,IAAe,CACpB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,iDAAiD;QACjD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAa,EAAE,GAAa,EAAQ,EAAE;YAC1D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACnB,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,CAAC,KAAK;oBACZ,OAAO,EAAE,+CAA+C;iBACzD;gBACD,EAAE,EAAE,IAAI;aACT,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,mEAAmE;QACnE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,IAAa,EAAE,GAAa,EAAQ,EAAE;YAC7D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,sBAAsB;QAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QAED,4CAA4C;QAC5C,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;QAE9B,+DAA+D;QAC/D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAY,EAAE,GAAa,EAAQ,EAAE;YAC1D,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAuB,CAAC;YAEtE,sEAAsE;YACtE,MAAM,mBAAmB,GAAG,CAAC,IAAa,EAAW,EAAE;gBACrD,iBAAiB;gBACjB,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC9B,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,oDAAoD;gBACpD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC3C,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtC,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC,CAAC;YAEF,KAAK,CAAC,KAAK,IAAI,EAAE;gBACf,IAAI,CAAC;oBACH,IAAI,aAAwD,CAAC;oBAE7D,IAAI,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;wBAChD,2BAA2B;wBAC3B,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBACjD,CAAC;yBAAM,IAAI,SAAS,KAAK,SAAS,IAAI,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;wBACpE,gDAAgD;wBAChD,MAAM,YAAY,GAAG,IAAI,6BAA6B,CAAC;4BACrD,kBAAkB,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE;4BACtC,oBAAoB,EAAE,CAAC,GAAW,EAAE,EAAE;gCACpC,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE;oCACtC,IAAI,EAAE,mBAAmB;oCACzB,SAAS,EAAE,GAAG;iCACf,CAAC,CAAC;gCACH,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;4BACzC,CAAC;yBACF,CAAC,CAAC;wBAEH,8BAA8B;wBAC9B,YAAY,CAAC,OAAO,GAAG,GAAG,EAAE;4BAC1B,MAAM,GAAG,GAAG,YAAY,CAAC,SAAS,CAAC;4BACnC,IAAI,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gCAClD,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE;oCACnC,IAAI,EAAE,oBAAoB;oCAC1B,SAAS,EAAE,GAAG;iCACf,CAAC,CAAC;gCACH,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;4BAC9B,CAAC;wBACH,CAAC,CAAC;wBAEF,sDAAsD;wBACtD,sDAAsD;wBACtD,MAAM,MAAM,CAAC,OAAO,CAClB,YAAoD,CACrD,CAAC;wBACF,MAAM,YAAY,CAAC,aAAa,CAC9B,GAAiC,EACjC,GAAgC,EAChC,GAAG,CAAC,IAAe,CACpB,CAAC;wBACF,OAAO;oBACT,CAAC;yBAAM,CAAC;wBACN,wDAAwD;wBACxD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;4BACnB,OAAO,EAAE,KAAK;4BACd,KAAK,EAAE;gCACL,IAAI,EAAE,CAAC,KAAK;gCACZ,OAAO,EAAE,2CAA2C;6BACrD;4BACD,EAAE,EAAE,IAAI;yBACT,CAAC,CAAC;wBACH,OAAO;oBACT,CAAC;oBAED,yCAAyC;oBACzC,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;wBAChC,MAAM,aAAa,CAAC,aAAa,CAC/B,GAAiC,EACjC,GAAgC,EAChC,GAAG,CAAC,IAAe,CACpB,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE;wBACzC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI;wBAC7C,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;qBAClD,CAAC,CAAC;oBACH,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;wBACrB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;4BACnB,OAAO,EAAE,KAAK;4BACd,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,uBAAuB,EAAE;4BACzD,EAAE,EAAE,IAAI;yBACT,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,2DAA2D;QAC3D,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAY,EAAE,GAAa,EAAQ,EAAE;YACzD,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAuB,CAAC;YAEtE,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC/D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;gBACtD,OAAO;YACT,CAAC;YAED,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;YACjD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC9B,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE;oBACrD,IAAI,EAAE,oBAAoB;oBAC1B,SAAS;oBACT,WAAW;iBACZ,CAAC,CAAC;YACL,CAAC;YAED,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACrD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAChC,KAAK,aAAa,CAAC,aAAa,CAC9B,GAAiC,EACjC,GAAgC,CACjC,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,oCAAoC;QACpC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAY,EAAE,GAAa,EAAQ,EAAE;YAC5D,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAuB,CAAC;YAEtE,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC/D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;gBACtD,OAAO;YACT,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE;gBAC3C,IAAI,EAAE,qBAAqB;gBAC3B,SAAS;aACV,CAAC,CAAC;YAEH,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACrD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAChC,KAAK,aAAa,CAAC,aAAa,CAC9B,GAAiC,EACjC,GAAgC,CACjC,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,mBAAmB;QACzB,IACE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO;YACzB,IAAI,CAAC,cAAc;YACnB,IAAI,CAAC,cAAc;YACnB,IAAI,CAAC,GAAG,EACR,CAAC;YACD,MAAM,cAAc,GAAG,oBAAoB,CAAC;gBAC1C,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,WAAW,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;aACnE,CAAC,CAAC;YAEH,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,UAAU,CAAC,WAAmB;QAC1C,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAErE,yBAAyB;QACzB,IAAI,CAAC,cAAc,GAAG,IAAI,mBAAmB,CAAC;YAC5C,QAAQ,EAAE,WAAW;YACrB,oBAAoB,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC;YAChE,eAAe,EAAE,CAAC,GAAG,gBAAgB,CAAC;SACvC,CAAC,CAAC;QAEH,6CAA6C;QAC7C,IAAI,CAAC,GAAG,EAAE,GAAG,CACX,uCAAuC,EACvC,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,CACzC,CAAC;QAEF,yCAAyC;QACzC,IAAI,CAAC,mBAAmB,GAAG,IAAI,4BAA4B,CAAC;YAC1D,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB;SACxD,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC;YAE3D,yBAAyB;YACzB,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC;gBACvC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,QAAQ,CAAC,QAAQ,IAAI,EAAE;gBAC7D,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM;gBACnD,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ;gBACpC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc;aACjD,CAAC,CAAC;YAEH,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACxE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,kEAAkE;YAClE,MAAM,CAAC,OAAO,CACZ,mEAAmE,EACnE;gBACE,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI;gBAC5C,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;aAClD,CACF,CAAC;YAEF,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBAC/B,MAAM,CAAC,KAAK,CACV,gEAAgE,EAChE,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CACjD,CAAC;gBACF,MAAM,KAAK,CAAC;YACd,CAAC;YAED,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC;gBACvC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO;gBAClC,MAAM,EACJ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB;gBACtE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ;gBACpC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc;aACjD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC;gBACH,IAAI,CAAC,UAAU;oBACb,IAAI,CAAC,GAAG,EAAE,MAAM,CACd,IAAI,CAAC,MAAM,CAAC,IAAI,EAChB,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,SAAS,EAC7B,GAAG,EAAE;wBACH,MAAM,CAAC,IAAI,CACT,4BAA4B,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EACvF;4BACE,IAAI,EAAE,qBAAqB;4BAC3B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU;yBACvD,CACF,CAAC;wBACF,OAAO,EAAE,CAAC;oBACZ,CAAC,CACF,IAAI,IAAI,CAAC;gBAEZ,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;oBACrC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE;wBAC1C,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI;wBAC1C,KAAK;qBACN,CAAC,CAAC;oBACH,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACpE,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,+CAA+C;QAC/C,KAAK,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACrD,IAAI,CAAC;gBACH,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE;oBAChC,IAAI,EAAE,sBAAsB;oBAC5B,SAAS;iBACV,CAAC,CAAC;gBACH,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;YAC1B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE;oBACtC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI;oBAC7C,SAAS;oBACT,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;iBAClD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAExB,sCAAsC;QACtC,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;YACxC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE;oBAChD,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI;oBAC7C,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;iBAClD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACrB,OAAO,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YAED,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC9B,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE;wBACzC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI;wBAC7C,KAAK;qBACN,CAAC,CAAC;oBACH,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAC;oBACpE,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,qBAAqB;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;CACF;AAED,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAA2B;IAE3B,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * db-mcp - Transports Module Public Exports
3
+ */
4
+ export { HttpTransport, createHttpTransport, type HttpTransportConfig, } from "./http.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transports/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,KAAK,mBAAmB,GACzB,MAAM,WAAW,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * db-mcp - Transports Module Public Exports
3
+ */
4
+ export { HttpTransport, createHttpTransport, } from "./http.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transports/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,aAAa,EACb,mBAAmB,GAEpB,MAAM,WAAW,CAAC"}