vite-plugin-swagger-mcp 0.0.8 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.js +23 -9
- package/dist/esm/index.js +46 -26
- package/package.json +1 -1
package/dist/cjs/index.js
CHANGED
|
@@ -215,20 +215,34 @@ function vitePluginSwaggerMcp({
|
|
|
215
215
|
"MCP server connected:",
|
|
216
216
|
`http://localhost:${(_b = (_a = server.config) == null ? void 0 : _a.server) == null ? void 0 : _b.port}/_mcp/sse/swagger`
|
|
217
217
|
);
|
|
218
|
+
const SSE_PATH = "/_mcp/sse/swagger";
|
|
219
|
+
const MESSAGES_PATH = "/_mcp/sse/swagger/messages";
|
|
218
220
|
server.middlewares.use(
|
|
219
221
|
async (req, res, next) => {
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
222
|
+
var _a2;
|
|
223
|
+
const url = (_a2 = req.url) == null ? void 0 : _a2.split("?")[0];
|
|
224
|
+
if (url === SSE_PATH || url === MESSAGES_PATH) {
|
|
225
|
+
if (req.method === "GET") {
|
|
226
|
+
if (req.headers["accept"] !== "text/event-stream") {
|
|
227
|
+
res.statusCode = 405;
|
|
228
|
+
res.end("Method Not Allowed - Expected Accept: text/event-stream");
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
res.setHeader("Content-Type", "text/event-stream");
|
|
232
|
+
res.setHeader("Cache-Control", "no-cache");
|
|
233
|
+
res.setHeader("Connection", "keep-alive");
|
|
234
|
+
res.setHeader("X-Accel-Buffering", "no");
|
|
235
|
+
}
|
|
236
|
+
try {
|
|
237
|
+
await transport.handleRequest(req, res);
|
|
238
|
+
} catch (err) {
|
|
239
|
+
console.error("MCP Transport Error:", err);
|
|
240
|
+
if (!res.headersSent) {
|
|
227
241
|
res.statusCode = 500;
|
|
228
|
-
res.end("Internal
|
|
242
|
+
res.end("Internal MCP Error");
|
|
229
243
|
}
|
|
230
|
-
return;
|
|
231
244
|
}
|
|
245
|
+
return;
|
|
232
246
|
}
|
|
233
247
|
next();
|
|
234
248
|
}
|
package/dist/esm/index.js
CHANGED
|
@@ -236,7 +236,7 @@ export default function vitePluginSwaggerMcp(_ref) {
|
|
|
236
236
|
enforce: "pre",
|
|
237
237
|
configureServer: function configureServer(server) {
|
|
238
238
|
return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {
|
|
239
|
-
var _server$config, transport, swaggerServer, mcpServer;
|
|
239
|
+
var _server$config, transport, swaggerServer, mcpServer, SSE_PATH, MESSAGES_PATH;
|
|
240
240
|
return _regeneratorRuntime().wrap(function _callee9$(_context9) {
|
|
241
241
|
while (1) switch (_context9.prev = _context9.next) {
|
|
242
242
|
case 0:
|
|
@@ -372,60 +372,80 @@ export default function vitePluginSwaggerMcp(_ref) {
|
|
|
372
372
|
return mcpServer.connect(transport);
|
|
373
373
|
case 10:
|
|
374
374
|
console.log("MCP server connected:", "http://localhost:".concat((_server$config = server.config) === null || _server$config === void 0 || (_server$config = _server$config.server) === null || _server$config === void 0 ? void 0 : _server$config.port, "/_mcp/sse/swagger"));
|
|
375
|
+
|
|
376
|
+
// 2. 定义 SSE 和消息路径
|
|
377
|
+
SSE_PATH = "/_mcp/sse/swagger";
|
|
378
|
+
MESSAGES_PATH = "/_mcp/sse/swagger/messages"; // 规范建议分开或明确指定
|
|
375
379
|
server.middlewares.use( /*#__PURE__*/function () {
|
|
376
380
|
var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8(req, res, next) {
|
|
381
|
+
var _req$url;
|
|
377
382
|
var url;
|
|
378
383
|
return _regeneratorRuntime().wrap(function _callee8$(_context8) {
|
|
379
384
|
while (1) switch (_context8.prev = _context8.next) {
|
|
380
385
|
case 0:
|
|
381
|
-
|
|
382
|
-
url
|
|
383
|
-
|
|
384
|
-
|
|
386
|
+
url = (_req$url = req.url) === null || _req$url === void 0 ? void 0 : _req$url.split("?")[0]; // 处理 SSE 建立连接 (GET) 和 消息接收 (POST)
|
|
387
|
+
if (!(url === SSE_PATH || url === MESSAGES_PATH)) {
|
|
388
|
+
_context8.next = 21;
|
|
389
|
+
break;
|
|
390
|
+
}
|
|
391
|
+
if (!(req.method === "GET")) {
|
|
392
|
+
_context8.next = 11;
|
|
385
393
|
break;
|
|
386
394
|
}
|
|
387
|
-
if (!(req.
|
|
388
|
-
_context8.next =
|
|
395
|
+
if (!(req.headers["accept"] !== "text/event-stream")) {
|
|
396
|
+
_context8.next = 7;
|
|
389
397
|
break;
|
|
390
398
|
}
|
|
391
|
-
|
|
392
|
-
|
|
399
|
+
res.statusCode = 405;
|
|
400
|
+
res.end("Method Not Allowed - Expected Accept: text/event-stream");
|
|
401
|
+
return _context8.abrupt("return");
|
|
402
|
+
case 7:
|
|
403
|
+
// 对应文档 2.2.3: 设置正确的 Content-Type
|
|
404
|
+
res.setHeader("Content-Type", "text/event-stream");
|
|
405
|
+
res.setHeader("Cache-Control", "no-cache");
|
|
406
|
+
res.setHeader("Connection", "keep-alive");
|
|
407
|
+
// 禁用某些代理的缓冲
|
|
408
|
+
res.setHeader("X-Accel-Buffering", "no");
|
|
409
|
+
case 11:
|
|
410
|
+
_context8.prev = 11;
|
|
411
|
+
_context8.next = 14;
|
|
393
412
|
return transport.handleRequest(req, res);
|
|
394
|
-
case
|
|
395
|
-
_context8.next =
|
|
413
|
+
case 14:
|
|
414
|
+
_context8.next = 20;
|
|
396
415
|
break;
|
|
397
|
-
case
|
|
398
|
-
_context8.prev =
|
|
399
|
-
_context8.t0 = _context8["catch"](
|
|
416
|
+
case 16:
|
|
417
|
+
_context8.prev = 16;
|
|
418
|
+
_context8.t0 = _context8["catch"](11);
|
|
400
419
|
console.error("MCP Transport Error:", _context8.t0);
|
|
401
|
-
res.
|
|
402
|
-
|
|
403
|
-
|
|
420
|
+
if (!res.headersSent) {
|
|
421
|
+
res.statusCode = 500;
|
|
422
|
+
res.end("Internal MCP Error");
|
|
423
|
+
}
|
|
424
|
+
case 20:
|
|
404
425
|
return _context8.abrupt("return");
|
|
405
|
-
case
|
|
406
|
-
// 如果不是 MCP 的请求,交给 Vite 处理
|
|
426
|
+
case 21:
|
|
407
427
|
next();
|
|
408
|
-
case
|
|
428
|
+
case 22:
|
|
409
429
|
case "end":
|
|
410
430
|
return _context8.stop();
|
|
411
431
|
}
|
|
412
|
-
}, _callee8, null, [[
|
|
432
|
+
}, _callee8, null, [[11, 16]]);
|
|
413
433
|
}));
|
|
414
434
|
return function (_x6, _x7, _x8) {
|
|
415
435
|
return _ref6.apply(this, arguments);
|
|
416
436
|
};
|
|
417
437
|
}());
|
|
418
|
-
_context9.next =
|
|
438
|
+
_context9.next = 19;
|
|
419
439
|
break;
|
|
420
|
-
case
|
|
421
|
-
_context9.prev =
|
|
440
|
+
case 16:
|
|
441
|
+
_context9.prev = 16;
|
|
422
442
|
_context9.t0 = _context9["catch"](0);
|
|
423
443
|
console.log("MCP server error", _context9.t0);
|
|
424
|
-
case
|
|
444
|
+
case 19:
|
|
425
445
|
case "end":
|
|
426
446
|
return _context9.stop();
|
|
427
447
|
}
|
|
428
|
-
}, _callee9, null, [[0,
|
|
448
|
+
}, _callee9, null, [[0, 16]]);
|
|
429
449
|
}))();
|
|
430
450
|
}
|
|
431
451
|
};
|