@muggleai/mcp-qa-gateway 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 (146) hide show
  1. package/README.md +185 -0
  2. package/dist/scripts/phase0-smoke.d.ts +7 -0
  3. package/dist/scripts/phase0-smoke.d.ts.map +1 -0
  4. package/dist/scripts/phase0-smoke.js +1712 -0
  5. package/dist/scripts/phase0-smoke.js.map +1 -0
  6. package/dist/scripts/types/phase0-smoke-types.d.ts +89 -0
  7. package/dist/scripts/types/phase0-smoke-types.d.ts.map +1 -0
  8. package/dist/scripts/types/phase0-smoke-types.js +3 -0
  9. package/dist/scripts/types/phase0-smoke-types.js.map +1 -0
  10. package/dist/src/__tests__/helpers/mock-setup.d.ts +28 -0
  11. package/dist/src/__tests__/helpers/mock-setup.d.ts.map +1 -0
  12. package/dist/src/__tests__/helpers/mock-setup.js +44 -0
  13. package/dist/src/__tests__/helpers/mock-setup.js.map +1 -0
  14. package/dist/src/__tests__/helpers/test-fixtures.d.ts +38 -0
  15. package/dist/src/__tests__/helpers/test-fixtures.d.ts.map +1 -0
  16. package/dist/src/__tests__/helpers/test-fixtures.js +62 -0
  17. package/dist/src/__tests__/helpers/test-fixtures.js.map +1 -0
  18. package/dist/src/__tests__/tools/artifact-tools.test.d.ts +9 -0
  19. package/dist/src/__tests__/tools/artifact-tools.test.d.ts.map +1 -0
  20. package/dist/src/__tests__/tools/artifact-tools.test.js +307 -0
  21. package/dist/src/__tests__/tools/artifact-tools.test.js.map +1 -0
  22. package/dist/src/__tests__/tools/prd-file-tools.test.d.ts +7 -0
  23. package/dist/src/__tests__/tools/prd-file-tools.test.d.ts.map +1 -0
  24. package/dist/src/__tests__/tools/prd-file-tools.test.js +278 -0
  25. package/dist/src/__tests__/tools/prd-file-tools.test.js.map +1 -0
  26. package/dist/src/__tests__/tools/project-tools.test.d.ts +7 -0
  27. package/dist/src/__tests__/tools/project-tools.test.d.ts.map +1 -0
  28. package/dist/src/__tests__/tools/project-tools.test.js +281 -0
  29. package/dist/src/__tests__/tools/project-tools.test.js.map +1 -0
  30. package/dist/src/__tests__/tools/recommendation-tools.test.d.ts +6 -0
  31. package/dist/src/__tests__/tools/recommendation-tools.test.d.ts.map +1 -0
  32. package/dist/src/__tests__/tools/recommendation-tools.test.js +193 -0
  33. package/dist/src/__tests__/tools/recommendation-tools.test.js.map +1 -0
  34. package/dist/src/__tests__/tools/report-tools.test.d.ts +7 -0
  35. package/dist/src/__tests__/tools/report-tools.test.d.ts.map +1 -0
  36. package/dist/src/__tests__/tools/report-tools.test.js +226 -0
  37. package/dist/src/__tests__/tools/report-tools.test.js.map +1 -0
  38. package/dist/src/__tests__/tools/secret-tools.test.d.ts +6 -0
  39. package/dist/src/__tests__/tools/secret-tools.test.d.ts.map +1 -0
  40. package/dist/src/__tests__/tools/secret-tools.test.js +243 -0
  41. package/dist/src/__tests__/tools/secret-tools.test.js.map +1 -0
  42. package/dist/src/__tests__/tools/test-case-prompt-tools.test.d.ts +6 -0
  43. package/dist/src/__tests__/tools/test-case-prompt-tools.test.d.ts.map +1 -0
  44. package/dist/src/__tests__/tools/test-case-prompt-tools.test.js +291 -0
  45. package/dist/src/__tests__/tools/test-case-prompt-tools.test.js.map +1 -0
  46. package/dist/src/__tests__/tools/tool-registry.test.d.ts +7 -0
  47. package/dist/src/__tests__/tools/tool-registry.test.d.ts.map +1 -0
  48. package/dist/src/__tests__/tools/tool-registry.test.js +205 -0
  49. package/dist/src/__tests__/tools/tool-registry.test.js.map +1 -0
  50. package/dist/src/__tests__/tools/use-case-tools.test.d.ts +7 -0
  51. package/dist/src/__tests__/tools/use-case-tools.test.d.ts.map +1 -0
  52. package/dist/src/__tests__/tools/use-case-tools.test.js +177 -0
  53. package/dist/src/__tests__/tools/use-case-tools.test.js.map +1 -0
  54. package/dist/src/__tests__/tools/workflow-tools.test.d.ts +15 -0
  55. package/dist/src/__tests__/tools/workflow-tools.test.d.ts.map +1 -0
  56. package/dist/src/__tests__/tools/workflow-tools.test.js +627 -0
  57. package/dist/src/__tests__/tools/workflow-tools.test.js.map +1 -0
  58. package/dist/src/config/index.d.ts +18 -0
  59. package/dist/src/config/index.d.ts.map +1 -0
  60. package/dist/src/config/index.js +76 -0
  61. package/dist/src/config/index.js.map +1 -0
  62. package/dist/src/index.d.ts +21 -0
  63. package/dist/src/index.d.ts.map +1 -0
  64. package/dist/src/index.js +88 -0
  65. package/dist/src/index.js.map +1 -0
  66. package/dist/src/interfaces/caller-credentials.d.ts +10 -0
  67. package/dist/src/interfaces/caller-credentials.d.ts.map +1 -0
  68. package/dist/src/interfaces/caller-credentials.js +3 -0
  69. package/dist/src/interfaces/caller-credentials.js.map +1 -0
  70. package/dist/src/interfaces/gateway-config.d.ts +28 -0
  71. package/dist/src/interfaces/gateway-config.d.ts.map +1 -0
  72. package/dist/src/interfaces/gateway-config.js +3 -0
  73. package/dist/src/interfaces/gateway-config.js.map +1 -0
  74. package/dist/src/interfaces/index.d.ts +13 -0
  75. package/dist/src/interfaces/index.d.ts.map +1 -0
  76. package/dist/src/interfaces/index.js +7 -0
  77. package/dist/src/interfaces/index.js.map +1 -0
  78. package/dist/src/interfaces/mcp-tool-call-protocol.d.ts +61 -0
  79. package/dist/src/interfaces/mcp-tool-call-protocol.d.ts.map +1 -0
  80. package/dist/src/interfaces/mcp-tool-call-protocol.js +7 -0
  81. package/dist/src/interfaces/mcp-tool-call-protocol.js.map +1 -0
  82. package/dist/src/interfaces/pagination.d.ts +24 -0
  83. package/dist/src/interfaces/pagination.d.ts.map +1 -0
  84. package/dist/src/interfaces/pagination.js +6 -0
  85. package/dist/src/interfaces/pagination.js.map +1 -0
  86. package/dist/src/interfaces/tool-definition.d.ts +22 -0
  87. package/dist/src/interfaces/tool-definition.d.ts.map +1 -0
  88. package/dist/src/interfaces/tool-definition.js +6 -0
  89. package/dist/src/interfaces/tool-definition.js.map +1 -0
  90. package/dist/src/interfaces/tool-mapping.d.ts +20 -0
  91. package/dist/src/interfaces/tool-mapping.d.ts.map +1 -0
  92. package/dist/src/interfaces/tool-mapping.js +6 -0
  93. package/dist/src/interfaces/tool-mapping.js.map +1 -0
  94. package/dist/src/interfaces/upstream-call.d.ts +27 -0
  95. package/dist/src/interfaces/upstream-call.d.ts.map +1 -0
  96. package/dist/src/interfaces/upstream-call.js +3 -0
  97. package/dist/src/interfaces/upstream-call.js.map +1 -0
  98. package/dist/src/interfaces/upstream-response.d.ts +12 -0
  99. package/dist/src/interfaces/upstream-response.d.ts.map +1 -0
  100. package/dist/src/interfaces/upstream-response.js +3 -0
  101. package/dist/src/interfaces/upstream-response.js.map +1 -0
  102. package/dist/src/server/http-server.d.ts +13 -0
  103. package/dist/src/server/http-server.d.ts.map +1 -0
  104. package/dist/src/server/http-server.js +219 -0
  105. package/dist/src/server/http-server.js.map +1 -0
  106. package/dist/src/server/mcp-server.d.ts +11 -0
  107. package/dist/src/server/mcp-server.d.ts.map +1 -0
  108. package/dist/src/server/mcp-server.js +363 -0
  109. package/dist/src/server/mcp-server.js.map +1 -0
  110. package/dist/src/server/session-credentials.d.ts +8 -0
  111. package/dist/src/server/session-credentials.d.ts.map +1 -0
  112. package/dist/src/server/session-credentials.js +24 -0
  113. package/dist/src/server/session-credentials.js.map +1 -0
  114. package/dist/src/tools/constants.d.ts +6 -0
  115. package/dist/src/tools/constants.d.ts.map +1 -0
  116. package/dist/src/tools/constants.js +9 -0
  117. package/dist/src/tools/constants.js.map +1 -0
  118. package/dist/src/tools/index.d.ts +7 -0
  119. package/dist/src/tools/index.d.ts.map +1 -0
  120. package/dist/src/tools/index.js +23 -0
  121. package/dist/src/tools/index.js.map +1 -0
  122. package/dist/src/tools/schemas.d.ts +906 -0
  123. package/dist/src/tools/schemas.d.ts.map +1 -0
  124. package/dist/src/tools/schemas.js +386 -0
  125. package/dist/src/tools/schemas.js.map +1 -0
  126. package/dist/src/tools/tool-registry.d.ts +26 -0
  127. package/dist/src/tools/tool-registry.d.ts.map +1 -0
  128. package/dist/src/tools/tool-registry.js +1142 -0
  129. package/dist/src/tools/tool-registry.js.map +1 -0
  130. package/dist/src/types/index.d.ts +35 -0
  131. package/dist/src/types/index.d.ts.map +1 -0
  132. package/dist/src/types/index.js +55 -0
  133. package/dist/src/types/index.js.map +1 -0
  134. package/dist/src/upstream/prompt-service-client.d.ts +62 -0
  135. package/dist/src/upstream/prompt-service-client.d.ts.map +1 -0
  136. package/dist/src/upstream/prompt-service-client.js +329 -0
  137. package/dist/src/upstream/prompt-service-client.js.map +1 -0
  138. package/dist/src/utils/logger.d.ts +17 -0
  139. package/dist/src/utils/logger.d.ts.map +1 -0
  140. package/dist/src/utils/logger.js +64 -0
  141. package/dist/src/utils/logger.js.map +1 -0
  142. package/dist/vitest.config.d.ts +3 -0
  143. package/dist/vitest.config.d.ts.map +1 -0
  144. package/dist/vitest.config.js +21 -0
  145. package/dist/vitest.config.js.map +1 -0
  146. package/package.json +66 -0
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=upstream-response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upstream-response.js","sourceRoot":"","sources":["../../../src/interfaces/upstream-response.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * HTTP server setup for MCP QA Gateway.
3
+ * Uses Express with the MCP Streamable HTTP transport.
4
+ */
5
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
6
+ import { Express } from "express";
7
+ /**
8
+ * Create and configure the Express HTTP server.
9
+ * @param mcpServer - Configured MCP server instance.
10
+ * @returns Express app.
11
+ */
12
+ export declare function createHttpServer(mcpServer: Server): Express;
13
+ //# sourceMappingURL=http-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../../../src/server/http-server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAGnE,OAAgB,EAAE,OAAO,EAAmC,MAAM,SAAS,CAAC;AAwB5E;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAoM3D"}
@@ -0,0 +1,219 @@
1
+ "use strict";
2
+ /**
3
+ * HTTP server setup for MCP QA Gateway.
4
+ * Uses Express with the MCP Streamable HTTP transport.
5
+ */
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.createHttpServer = createHttpServer;
11
+ const streamableHttp_js_1 = require("@modelcontextprotocol/sdk/server/streamableHttp.js");
12
+ const cors_1 = __importDefault(require("cors"));
13
+ const express_1 = __importDefault(require("express"));
14
+ const express_rate_limit_1 = __importDefault(require("express-rate-limit"));
15
+ const helmet_1 = __importDefault(require("helmet"));
16
+ const uuid_1 = require("uuid");
17
+ const index_js_1 = require("../config/index.js");
18
+ const index_js_2 = require("../types/index.js");
19
+ const logger_js_1 = require("../utils/logger.js");
20
+ const session_credentials_js_1 = require("./session-credentials.js");
21
+ const transportSessions = new Map();
22
+ function getOrCreateTransport(sessionId, mcpServer) {
23
+ let transport = transportSessions.get(sessionId);
24
+ if (!transport) {
25
+ transport = new streamableHttp_js_1.StreamableHTTPServerTransport({
26
+ sessionIdGenerator: () => sessionId,
27
+ });
28
+ void mcpServer.connect(transport);
29
+ transportSessions.set(sessionId, transport);
30
+ }
31
+ return transport;
32
+ }
33
+ /**
34
+ * Create and configure the Express HTTP server.
35
+ * @param mcpServer - Configured MCP server instance.
36
+ * @returns Express app.
37
+ */
38
+ function createHttpServer(mcpServer) {
39
+ const config = (0, index_js_1.getConfig)();
40
+ const logger = (0, logger_js_1.getLogger)();
41
+ const app = (0, express_1.default)();
42
+ // Security middleware
43
+ app.use((0, helmet_1.default)({
44
+ contentSecurityPolicy: false, // MCP uses SSE which requires flexible CSP
45
+ }));
46
+ // CORS - allow all origins for MCP clients
47
+ app.use((0, cors_1.default)({
48
+ origin: true,
49
+ credentials: true,
50
+ methods: ["GET", "POST", "DELETE", "OPTIONS"],
51
+ allowedHeaders: [
52
+ "Content-Type",
53
+ "Authorization",
54
+ "x-api-key",
55
+ "Mcp-Session-Id",
56
+ "Last-Event-ID",
57
+ ],
58
+ exposedHeaders: ["Mcp-Session-Id"],
59
+ }));
60
+ // Rate limiting
61
+ if (config.rateLimitEnabled) {
62
+ const limiter = (0, express_rate_limit_1.default)({
63
+ windowMs: config.rateLimitWindowSeconds * 1000,
64
+ max: config.rateLimitMaxRequests,
65
+ keyGenerator: (req) => {
66
+ const apiKey = req.headers["x-api-key"];
67
+ const authHeader = req.headers["authorization"];
68
+ if (apiKey && typeof apiKey === "string") {
69
+ const parts = apiKey.split("_");
70
+ if (parts.length >= 3) {
71
+ return `apikey:${parts[2]}`;
72
+ }
73
+ return `apikey:${apiKey.substring(0, 20)}`;
74
+ }
75
+ if (authHeader && typeof authHeader === "string") {
76
+ return `jwt:${simpleHash(authHeader)}`;
77
+ }
78
+ return `ip:${req.ip}`;
79
+ },
80
+ message: {
81
+ error: "RATE_LIMITED",
82
+ message: "Too many requests, please try again later",
83
+ },
84
+ standardHeaders: true,
85
+ legacyHeaders: false,
86
+ });
87
+ app.use(limiter);
88
+ }
89
+ // Request logging middleware
90
+ app.use((req, res, next) => {
91
+ const correlationId = req.headers["x-correlation-id"] || (0, uuid_1.v4)();
92
+ req.headers["x-correlation-id"] = correlationId;
93
+ const startTime = Date.now();
94
+ const childLogger = (0, logger_js_1.createChildLogger)(correlationId);
95
+ childLogger.info("HTTP request received", {
96
+ method: req.method,
97
+ path: req.path,
98
+ hasAuth: !!req.headers["authorization"] || !!req.headers["x-api-key"],
99
+ });
100
+ res.on("finish", () => {
101
+ const latency = Date.now() - startTime;
102
+ childLogger.info("HTTP response sent", {
103
+ method: req.method,
104
+ path: req.path,
105
+ statusCode: res.statusCode,
106
+ latencyMs: latency,
107
+ });
108
+ });
109
+ next();
110
+ });
111
+ // Health check endpoint
112
+ app.get("/health", (_req, res) => {
113
+ res.status(200).json({
114
+ status: "healthy",
115
+ service: "mcp-qa-gateway",
116
+ version: "1.0.0",
117
+ timestamp: new Date().toISOString(),
118
+ });
119
+ });
120
+ // JSON body parsing for MCP endpoint
121
+ app.use("/mcp", express_1.default.json({ limit: "10mb" }));
122
+ // MCP endpoint - handles all MCP protocol traffic
123
+ app.all("/mcp", (req, res) => {
124
+ const correlationId = req.headers["x-correlation-id"] || (0, uuid_1.v4)();
125
+ const childLogger = (0, logger_js_1.createChildLogger)(correlationId);
126
+ void (async () => {
127
+ try {
128
+ // Validate that at least one credential is present
129
+ const bearerToken = req.headers["authorization"];
130
+ const apiKey = req.headers["x-api-key"];
131
+ if (!bearerToken && !apiKey) {
132
+ childLogger.warn("MCP request without credentials");
133
+ res.status(401).json({
134
+ error: index_js_2.McpErrorCode.UNAUTHORIZED,
135
+ message: "Missing authentication. Provide either Authorization header or x-api-key.",
136
+ });
137
+ return;
138
+ }
139
+ const sessionIdHeader = req.headers["mcp-session-id"] ||
140
+ req.headers["Mcp-Session-Id"] ||
141
+ (0, uuid_1.v4)();
142
+ req.headers["mcp-session-id"] = sessionIdHeader;
143
+ res.setHeader("Mcp-Session-Id", sessionIdHeader);
144
+ (0, session_credentials_js_1.setSessionCredentials)(sessionIdHeader, {
145
+ bearerToken: bearerToken,
146
+ apiKey: apiKey,
147
+ });
148
+ const transport = getOrCreateTransport(sessionIdHeader, mcpServer);
149
+ // Create transport for this request
150
+ // Handle the request based on method
151
+ if (req.method === "GET") {
152
+ await transport.handleRequest(req, res, req.body);
153
+ }
154
+ else if (req.method === "POST") {
155
+ await transport.handleRequest(req, res, req.body);
156
+ }
157
+ else if (req.method === "DELETE") {
158
+ await transport.handleRequest(req, res, req.body);
159
+ }
160
+ else {
161
+ res.status(405).json({
162
+ error: "METHOD_NOT_ALLOWED",
163
+ message: `Method ${req.method} not allowed`,
164
+ });
165
+ }
166
+ }
167
+ catch (error) {
168
+ childLogger.error("MCP request failed", {
169
+ error: String(error),
170
+ });
171
+ if (!res.headersSent) {
172
+ res.status(500).json({
173
+ error: index_js_2.McpErrorCode.INTERNAL_ERROR,
174
+ message: "Internal server error",
175
+ });
176
+ }
177
+ }
178
+ })();
179
+ });
180
+ // Fallback 404 handler
181
+ app.use((_req, res) => {
182
+ res.status(404).json({
183
+ error: "NOT_FOUND",
184
+ message: `Endpoint ${_req.method} ${_req.path} not found`,
185
+ });
186
+ });
187
+ // Error handler
188
+ app.use((err, req, res, _next) => {
189
+ const correlationId = req.headers["x-correlation-id"] || "unknown";
190
+ const childLogger = (0, logger_js_1.createChildLogger)(correlationId);
191
+ childLogger.error("Unhandled error", {
192
+ error: err.message,
193
+ stack: err.stack,
194
+ });
195
+ if (!res.headersSent) {
196
+ res.status(500).json({
197
+ error: index_js_2.McpErrorCode.INTERNAL_ERROR,
198
+ message: "Internal server error",
199
+ });
200
+ }
201
+ });
202
+ logger.info("HTTP server configured", {
203
+ rateLimitEnabled: config.rateLimitEnabled,
204
+ });
205
+ return app;
206
+ }
207
+ /**
208
+ * Simple hash function for rate limiting key generation.
209
+ */
210
+ function simpleHash(str) {
211
+ let hash = 0;
212
+ for (let i = 0; i < str.length; i++) {
213
+ const char = str.charCodeAt(i);
214
+ hash = (hash << 5) - hash + char;
215
+ hash = hash & hash;
216
+ }
217
+ return Math.abs(hash).toString(36);
218
+ }
219
+ //# sourceMappingURL=http-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-server.js","sourceRoot":"","sources":["../../../src/server/http-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * MCP Server implementation for QA Gateway.
3
+ * Uses the MCP SDK with Streamable HTTP transport.
4
+ */
5
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
6
+ /**
7
+ * Create and configure the MCP server.
8
+ * @returns Configured MCP Server instance.
9
+ */
10
+ export declare function createMcpServer(): Server;
11
+ //# sourceMappingURL=mcp-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../../src/server/mcp-server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAenE;;;GAGG;AACH,wBAAgB,eAAe,IAAI,MAAM,CA8IxC"}
@@ -0,0 +1,363 @@
1
+ "use strict";
2
+ /**
3
+ * MCP Server implementation for QA Gateway.
4
+ * Uses the MCP SDK with Streamable HTTP transport.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.createMcpServer = createMcpServer;
8
+ const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
9
+ const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
10
+ const uuid_1 = require("uuid");
11
+ const zod_1 = require("zod");
12
+ const tool_registry_js_1 = require("../tools/tool-registry.js");
13
+ const index_js_2 = require("../types/index.js");
14
+ const logger_js_1 = require("../utils/logger.js");
15
+ const session_credentials_js_1 = require("./session-credentials.js");
16
+ /**
17
+ * Create and configure the MCP server.
18
+ * @returns Configured MCP Server instance.
19
+ */
20
+ function createMcpServer() {
21
+ const logger = (0, logger_js_1.getLogger)();
22
+ const server = new index_js_1.Server({
23
+ name: "muggle-ai-mcp-qa-gateway",
24
+ version: "1.0.0",
25
+ }, {
26
+ capabilities: {
27
+ tools: {},
28
+ },
29
+ });
30
+ // Handle list tools request
31
+ server.setRequestHandler(types_js_1.ListToolsRequestSchema, () => {
32
+ logger.debug("Listing tools", { count: tool_registry_js_1.allTools.length });
33
+ const tools = tool_registry_js_1.allTools.map((tool) => {
34
+ // Convert Zod schema to JSON Schema for MCP
35
+ const jsonSchema = zodToJsonSchema(tool.inputSchema);
36
+ return {
37
+ name: tool.name,
38
+ description: tool.description,
39
+ inputSchema: jsonSchema,
40
+ };
41
+ });
42
+ return { tools: tools };
43
+ });
44
+ // Handle call tool request
45
+ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request, extra) => {
46
+ const correlationId = (0, uuid_1.v4)();
47
+ const childLogger = (0, logger_js_1.createChildLogger)(correlationId);
48
+ const toolName = request.params.name;
49
+ const toolInput = request.params.arguments || {};
50
+ childLogger.info("Tool call received", {
51
+ tool: toolName,
52
+ hasArguments: Object.keys(toolInput).length > 0,
53
+ });
54
+ // Extract credentials from transport metadata
55
+ const credentials = extractCredentialsFromExtra(extra);
56
+ try {
57
+ const startTime = Date.now();
58
+ const result = await (0, tool_registry_js_1.executeTool)(toolName, toolInput, credentials, correlationId);
59
+ const latency = Date.now() - startTime;
60
+ childLogger.info("Tool call completed", {
61
+ tool: toolName,
62
+ latencyMs: latency,
63
+ success: true,
64
+ });
65
+ return {
66
+ content: [
67
+ {
68
+ type: "text",
69
+ text: JSON.stringify(result, null, 2),
70
+ },
71
+ ],
72
+ };
73
+ }
74
+ catch (error) {
75
+ if (error instanceof index_js_2.GatewayError) {
76
+ childLogger.warn("Tool call failed with gateway error", {
77
+ tool: toolName,
78
+ code: error.code,
79
+ message: error.message,
80
+ });
81
+ // Return user-friendly error message
82
+ const friendlyMessage = formatGatewayErrorMessage(error);
83
+ return {
84
+ content: [
85
+ {
86
+ type: "text",
87
+ text: JSON.stringify({
88
+ error: error.code,
89
+ message: friendlyMessage,
90
+ }),
91
+ },
92
+ ],
93
+ isError: true,
94
+ };
95
+ }
96
+ if (error instanceof zod_1.ZodError) {
97
+ childLogger.warn("Tool call failed with validation error", {
98
+ tool: toolName,
99
+ errors: error.errors,
100
+ });
101
+ // Format validation errors in a user-friendly way
102
+ const validationMessage = formatValidationErrors(error);
103
+ return {
104
+ content: [
105
+ {
106
+ type: "text",
107
+ text: JSON.stringify({
108
+ error: index_js_2.McpErrorCode.INVALID_ARGUMENT,
109
+ message: validationMessage,
110
+ }),
111
+ },
112
+ ],
113
+ isError: true,
114
+ };
115
+ }
116
+ // Unknown error
117
+ childLogger.error("Tool call failed with unknown error", {
118
+ tool: toolName,
119
+ error: String(error),
120
+ });
121
+ return {
122
+ content: [
123
+ {
124
+ type: "text",
125
+ text: JSON.stringify({
126
+ error: index_js_2.McpErrorCode.INTERNAL_ERROR,
127
+ message: "An unexpected error occurred. Please try again.",
128
+ }),
129
+ },
130
+ ],
131
+ isError: true,
132
+ };
133
+ }
134
+ });
135
+ logger.info("MCP server configured", {
136
+ tools: tool_registry_js_1.allTools.length,
137
+ });
138
+ return server;
139
+ }
140
+ /**
141
+ * Extract caller credentials from MCP transport extra data.
142
+ * In the HTTP transport, these come from request headers.
143
+ */
144
+ function extractCredentialsFromExtra(extra) {
145
+ const credentials = {};
146
+ if (extra && typeof extra === "object") {
147
+ const extraObj = extra;
148
+ // Check for authorization header
149
+ if (extraObj.authorization && typeof extraObj.authorization === "string") {
150
+ credentials.bearerToken = extraObj.authorization;
151
+ }
152
+ // Check for x-api-key header
153
+ if (extraObj["x-api-key"] && typeof extraObj["x-api-key"] === "string") {
154
+ credentials.apiKey = extraObj["x-api-key"];
155
+ }
156
+ // Also check headers object if present
157
+ if (extraObj.headers && typeof extraObj.headers === "object") {
158
+ const headers = extraObj.headers;
159
+ if (headers.authorization && typeof headers.authorization === "string") {
160
+ credentials.bearerToken = headers.authorization;
161
+ }
162
+ if (headers["x-api-key"] && typeof headers["x-api-key"] === "string") {
163
+ credentials.apiKey = headers["x-api-key"];
164
+ }
165
+ }
166
+ }
167
+ if (!credentials.bearerToken && !credentials.apiKey) {
168
+ const sessionId = extra["sessionId"] ||
169
+ extra.headers?.["mcp-session-id"];
170
+ const sessionCreds = (0, session_credentials_js_1.getSessionCredentials)(sessionId) || (0, session_credentials_js_1.getCurrentSessionCredentials)();
171
+ if (sessionCreds) {
172
+ credentials.bearerToken = sessionCreds.bearerToken;
173
+ credentials.apiKey = sessionCreds.apiKey;
174
+ }
175
+ else {
176
+ console.warn("No credentials extracted from transport extra", {
177
+ extra: JSON.stringify(extra),
178
+ });
179
+ }
180
+ }
181
+ return credentials;
182
+ }
183
+ /**
184
+ * Format a GatewayError into a user-friendly message.
185
+ */
186
+ function formatGatewayErrorMessage(error) {
187
+ // Map error codes to user-friendly messages
188
+ switch (error.code) {
189
+ case index_js_2.McpErrorCode.UNAUTHORIZED:
190
+ return "Authentication required. Please check your API key or login credentials.";
191
+ case index_js_2.McpErrorCode.FORBIDDEN:
192
+ return error.message.includes("not allowed")
193
+ ? error.message
194
+ : "You don't have permission to perform this action.";
195
+ case index_js_2.McpErrorCode.NOT_FOUND:
196
+ return error.message || "The requested resource was not found.";
197
+ case index_js_2.McpErrorCode.INVALID_ARGUMENT:
198
+ return error.message || "Invalid request parameters.";
199
+ case index_js_2.McpErrorCode.UPSTREAM_ERROR:
200
+ // Extract meaningful message from upstream errors
201
+ if (error.message.includes("timeout")) {
202
+ return "The request timed out. Please try again.";
203
+ }
204
+ if (error.message.includes("connection")) {
205
+ return "Unable to connect to the service. Please try again later.";
206
+ }
207
+ // Return the original message if it's already user-friendly
208
+ return error.message;
209
+ case index_js_2.McpErrorCode.INTERNAL_ERROR:
210
+ return "An internal error occurred. Please try again later.";
211
+ default:
212
+ return error.message || "An error occurred.";
213
+ }
214
+ }
215
+ /**
216
+ * Format Zod validation errors into a user-friendly message.
217
+ */
218
+ function formatValidationErrors(error) {
219
+ const issues = error.errors;
220
+ if (issues.length === 0) {
221
+ return "Invalid input parameters.";
222
+ }
223
+ if (issues.length === 1) {
224
+ const issue = issues[0];
225
+ const path = issue.path.join(".");
226
+ return path ? `Invalid value for '${path}': ${issue.message}` : issue.message;
227
+ }
228
+ // Multiple issues - list them concisely
229
+ const issueMessages = issues.slice(0, 3).map((issue) => {
230
+ const path = issue.path.join(".");
231
+ return path ? `'${path}': ${issue.message}` : issue.message;
232
+ });
233
+ const remaining = issues.length - 3;
234
+ const message = `Invalid input: ${issueMessages.join("; ")}`;
235
+ return remaining > 0
236
+ ? `${message} (and ${remaining} more issue${remaining > 1 ? "s" : ""})`
237
+ : message;
238
+ }
239
+ /**
240
+ * Convert a Zod schema to JSON Schema format for MCP.
241
+ */
242
+ function zodToJsonSchema(schema) {
243
+ try {
244
+ const zodSchema = schema;
245
+ if (zodSchema._def) {
246
+ return convertZodDef(zodSchema);
247
+ }
248
+ }
249
+ catch {
250
+ // Fallback to generic schema
251
+ }
252
+ return {
253
+ type: "object",
254
+ properties: {},
255
+ additionalProperties: true,
256
+ };
257
+ }
258
+ /**
259
+ * Convert Zod definition to JSON Schema.
260
+ */
261
+ function convertZodDef(schema) {
262
+ const zodSchema = schema;
263
+ if (!zodSchema._def) {
264
+ return { type: "object" };
265
+ }
266
+ const def = zodSchema._def;
267
+ const typeName = def.typeName;
268
+ switch (typeName) {
269
+ case "ZodObject": {
270
+ const shape = def.shape ? def.shape() : zodSchema.shape || {};
271
+ const properties = {};
272
+ const required = [];
273
+ for (const [key, value] of Object.entries(shape)) {
274
+ properties[key] = convertZodDef(value);
275
+ const valueDef = value._def;
276
+ if (valueDef?.typeName !== "ZodOptional") {
277
+ required.push(key);
278
+ }
279
+ }
280
+ const result = {
281
+ type: "object",
282
+ properties: properties,
283
+ };
284
+ if (required.length > 0) {
285
+ result.required = required;
286
+ }
287
+ return result;
288
+ }
289
+ case "ZodString": {
290
+ const result = { type: "string" };
291
+ if (def.description)
292
+ result.description = def.description;
293
+ if (def.checks) {
294
+ for (const check of def.checks) {
295
+ if (check.kind === "min")
296
+ result.minLength = check.value;
297
+ if (check.kind === "max")
298
+ result.maxLength = check.value;
299
+ if (check.kind === "url")
300
+ result.format = "uri";
301
+ if (check.kind === "email")
302
+ result.format = "email";
303
+ }
304
+ }
305
+ return result;
306
+ }
307
+ case "ZodNumber": {
308
+ const result = { type: "number" };
309
+ if (def.description)
310
+ result.description = def.description;
311
+ if (def.checks) {
312
+ for (const check of def.checks) {
313
+ if (check.kind === "int")
314
+ result.type = "integer";
315
+ if (check.kind === "min")
316
+ result.minimum = check.value;
317
+ if (check.kind === "max")
318
+ result.maximum = check.value;
319
+ }
320
+ }
321
+ return result;
322
+ }
323
+ case "ZodBoolean": {
324
+ const result = { type: "boolean" };
325
+ if (def.description)
326
+ result.description = def.description;
327
+ return result;
328
+ }
329
+ case "ZodArray": {
330
+ const result = {
331
+ type: "array",
332
+ items: def.innerType ? convertZodDef(def.innerType) : {},
333
+ };
334
+ if (def.description)
335
+ result.description = def.description;
336
+ return result;
337
+ }
338
+ case "ZodEnum": {
339
+ const result = {
340
+ type: "string",
341
+ enum: def.values || [],
342
+ };
343
+ if (def.description)
344
+ result.description = def.description;
345
+ return result;
346
+ }
347
+ case "ZodOptional": {
348
+ const inner = def.innerType ? convertZodDef(def.innerType) : {};
349
+ if (def.description)
350
+ inner.description = def.description;
351
+ return inner;
352
+ }
353
+ case "ZodUnion": {
354
+ const options = def.options || [];
355
+ return {
356
+ oneOf: options.map((opt) => convertZodDef(opt)),
357
+ };
358
+ }
359
+ default:
360
+ return { type: "object" };
361
+ }
362
+ }
363
+ //# sourceMappingURL=mcp-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../../src/server/mcp-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export interface SessionCredentials {
2
+ bearerToken?: string;
3
+ apiKey?: string;
4
+ }
5
+ export declare function setSessionCredentials(sessionId: string, credentials: SessionCredentials): void;
6
+ export declare function getSessionCredentials(sessionId: string | undefined): SessionCredentials | undefined;
7
+ export declare function getCurrentSessionCredentials(): SessionCredentials | undefined;
8
+ //# sourceMappingURL=session-credentials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-credentials.d.ts","sourceRoot":"","sources":["../../../src/server/session-credentials.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAKD,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,kBAAkB,GAAG,IAAI,CAG9F;AAED,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,kBAAkB,GAAG,SAAS,CAKnG;AAED,wBAAgB,4BAA4B,IAAI,kBAAkB,GAAG,SAAS,CAK7E"}