vite-plugin-swagger-mcp 0.0.8 → 0.0.10

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 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
- const url = new URL(req.url || "", `http://${req.headers.host}`);
221
- if (url.pathname === "/_mcp/sse/swagger") {
222
- if (req.method === "GET" || req.method === "POST") {
223
- try {
224
- await transport.handleRequest(req, res);
225
- } catch (err) {
226
- console.error("MCP Transport Error:", err);
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 Server Error");
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
- // 1. 检查路径
382
- url = new URL(req.url || "", "http://".concat(req.headers.host));
383
- if (!(url.pathname === "/_mcp/sse/swagger")) {
384
- _context8.next = 14;
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.method === "GET" || req.method === "POST")) {
388
- _context8.next = 14;
395
+ if (!(req.headers["accept"] !== "text/event-stream")) {
396
+ _context8.next = 7;
389
397
  break;
390
398
  }
391
- _context8.prev = 3;
392
- _context8.next = 6;
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 6:
395
- _context8.next = 13;
413
+ case 14:
414
+ _context8.next = 20;
396
415
  break;
397
- case 8:
398
- _context8.prev = 8;
399
- _context8.t0 = _context8["catch"](3);
416
+ case 16:
417
+ _context8.prev = 16;
418
+ _context8.t0 = _context8["catch"](11);
400
419
  console.error("MCP Transport Error:", _context8.t0);
401
- res.statusCode = 500;
402
- res.end("Internal Server Error");
403
- case 13:
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 14:
406
- // 如果不是 MCP 的请求,交给 Vite 处理
426
+ case 21:
407
427
  next();
408
- case 15:
428
+ case 22:
409
429
  case "end":
410
430
  return _context8.stop();
411
431
  }
412
- }, _callee8, null, [[3, 8]]);
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 = 17;
438
+ _context9.next = 19;
419
439
  break;
420
- case 14:
421
- _context9.prev = 14;
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 17:
444
+ case 19:
425
445
  case "end":
426
446
  return _context9.stop();
427
447
  }
428
- }, _callee9, null, [[0, 14]]);
448
+ }, _callee9, null, [[0, 16]]);
429
449
  }))();
430
450
  }
431
451
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vite-plugin-swagger-mcp",
3
- "version": "0.0.8",
3
+ "version": "0.0.10",
4
4
  "description": "vite plugin for swagger mcp",
5
5
  "homepage": "https://github.com/mmdctjj/vite-plugin-swagger-mcp",
6
6
  "repository": {
@@ -48,7 +48,7 @@
48
48
  "vite": "^5.3.5"
49
49
  },
50
50
  "dependencies": {
51
- "@modelcontextprotocol/sdk": "^1.17.3",
51
+ "@modelcontextprotocol/sdk": "^1.25.0",
52
52
  "@types/node": "^24.3.0",
53
53
  "zod": "^3.25.76"
54
54
  }