vite-plugin-swagger-mcp 0.0.10 → 0.0.12
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 +40 -29
- package/dist/esm/index.js +101 -47
- package/package.json +1 -1
package/dist/cjs/index.js
CHANGED
|
@@ -215,38 +215,49 @@ 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
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
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) {
|
|
241
|
-
res.statusCode = 500;
|
|
242
|
-
res.end("Internal MCP Error");
|
|
243
|
-
}
|
|
244
|
-
}
|
|
218
|
+
server.middlewares.use("/_mcp/sse/swagger", async (req, res) => {
|
|
219
|
+
var _a2;
|
|
220
|
+
if (req.method === "POST") {
|
|
221
|
+
let body = "";
|
|
222
|
+
for await (const chunk of req)
|
|
223
|
+
body += chunk;
|
|
224
|
+
const json = JSON.parse(body);
|
|
225
|
+
try {
|
|
226
|
+
const result = await transport.handleRequest(req, res, json);
|
|
227
|
+
res.writeHead(200, {
|
|
228
|
+
"Content-Type": "application/json"
|
|
229
|
+
});
|
|
230
|
+
res.end(JSON.stringify(result));
|
|
245
231
|
return;
|
|
232
|
+
} catch (err) {
|
|
233
|
+
res.writeHead(500);
|
|
234
|
+
res.end(
|
|
235
|
+
JSON.stringify({
|
|
236
|
+
jsonrpc: "2.0",
|
|
237
|
+
id: (json == null ? void 0 : json.id) ?? null,
|
|
238
|
+
error: { message: err == null ? void 0 : err.message }
|
|
239
|
+
})
|
|
240
|
+
);
|
|
246
241
|
}
|
|
247
|
-
next();
|
|
248
242
|
}
|
|
249
|
-
|
|
243
|
+
if (req.method === "GET") {
|
|
244
|
+
if (!((_a2 = req.headers.accept) == null ? void 0 : _a2.includes("text/event-stream"))) {
|
|
245
|
+
res.writeHead(405);
|
|
246
|
+
return res.end();
|
|
247
|
+
}
|
|
248
|
+
res.writeHead(200, {
|
|
249
|
+
"Content-Type": "text/event-stream",
|
|
250
|
+
"Cache-Control": "no-cache",
|
|
251
|
+
Connection: "keep-alive"
|
|
252
|
+
});
|
|
253
|
+
transport.onmessage = (message) => {
|
|
254
|
+
res.write(message);
|
|
255
|
+
};
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
res.statusCode = 405;
|
|
259
|
+
res.end();
|
|
260
|
+
});
|
|
250
261
|
} catch (error) {
|
|
251
262
|
console.log("MCP server error", error);
|
|
252
263
|
}
|
package/dist/esm/index.js
CHANGED
|
@@ -10,6 +10,8 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
|
|
|
10
10
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
11
11
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
12
12
|
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
13
|
+
function _asyncIterator(r) { var n, t, o, e = 2; for ("undefined" != typeof Symbol && (t = Symbol.asyncIterator, o = Symbol.iterator); e--;) { if (t && null != (n = r[t])) return n.call(r); if (o && null != (n = r[o])) return new AsyncFromSyncIterator(n.call(r)); t = "@@asyncIterator", o = "@@iterator"; } throw new TypeError("Object is not async iterable"); }
|
|
14
|
+
function AsyncFromSyncIterator(r) { function AsyncFromSyncIteratorContinuation(r) { if (Object(r) !== r) return Promise.reject(new TypeError(r + " is not an object.")); var n = r.done; return Promise.resolve(r.value).then(function (r) { return { value: r, done: n }; }); } return AsyncFromSyncIterator = function AsyncFromSyncIterator(r) { this.s = r, this.n = r.next; }, AsyncFromSyncIterator.prototype = { s: null, n: null, next: function next() { return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments)); }, return: function _return(r) { var n = this.s.return; return void 0 === n ? Promise.resolve({ value: r, done: !0 }) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments)); }, throw: function _throw(r) { var n = this.s.return; return void 0 === n ? Promise.reject(r) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments)); } }, new AsyncFromSyncIterator(r); }
|
|
13
15
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
14
16
|
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
|
|
15
17
|
import { randomUUID } from "node:crypto";
|
|
@@ -236,7 +238,7 @@ export default function vitePluginSwaggerMcp(_ref) {
|
|
|
236
238
|
enforce: "pre",
|
|
237
239
|
configureServer: function configureServer(server) {
|
|
238
240
|
return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {
|
|
239
|
-
var _server$config, transport, swaggerServer, mcpServer
|
|
241
|
+
var _server$config, transport, swaggerServer, mcpServer;
|
|
240
242
|
return _regeneratorRuntime().wrap(function _callee9$(_context9) {
|
|
241
243
|
while (1) switch (_context9.prev = _context9.next) {
|
|
242
244
|
case 0:
|
|
@@ -372,80 +374,132 @@ export default function vitePluginSwaggerMcp(_ref) {
|
|
|
372
374
|
return mcpServer.connect(transport);
|
|
373
375
|
case 10:
|
|
374
376
|
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
|
-
|
|
377
|
-
|
|
378
|
-
MESSAGES_PATH = "/_mcp/sse/swagger/messages"; // 规范建议分开或明确指定
|
|
379
|
-
server.middlewares.use( /*#__PURE__*/function () {
|
|
380
|
-
var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8(req, res, next) {
|
|
381
|
-
var _req$url;
|
|
382
|
-
var url;
|
|
377
|
+
server.middlewares.use('/_mcp/sse/swagger', /*#__PURE__*/function () {
|
|
378
|
+
var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8(req, res) {
|
|
379
|
+
var body, _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _iterator, _step, chunk, json, result, _json$id, _req$headers$accept;
|
|
383
380
|
return _regeneratorRuntime().wrap(function _callee8$(_context8) {
|
|
384
381
|
while (1) switch (_context8.prev = _context8.next) {
|
|
385
382
|
case 0:
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
_context8.next = 21;
|
|
389
|
-
break;
|
|
390
|
-
}
|
|
391
|
-
if (!(req.method === "GET")) {
|
|
392
|
-
_context8.next = 11;
|
|
383
|
+
if (!(req.method === 'POST')) {
|
|
384
|
+
_context8.next = 44;
|
|
393
385
|
break;
|
|
394
386
|
}
|
|
395
|
-
|
|
396
|
-
|
|
387
|
+
body = '';
|
|
388
|
+
_iteratorAbruptCompletion = false;
|
|
389
|
+
_didIteratorError = false;
|
|
390
|
+
_context8.prev = 4;
|
|
391
|
+
_iterator = _asyncIterator(req);
|
|
392
|
+
case 6:
|
|
393
|
+
_context8.next = 8;
|
|
394
|
+
return _iterator.next();
|
|
395
|
+
case 8:
|
|
396
|
+
if (!(_iteratorAbruptCompletion = !(_step = _context8.sent).done)) {
|
|
397
|
+
_context8.next = 14;
|
|
397
398
|
break;
|
|
398
399
|
}
|
|
399
|
-
|
|
400
|
-
|
|
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");
|
|
400
|
+
chunk = _step.value;
|
|
401
|
+
body += chunk;
|
|
409
402
|
case 11:
|
|
410
|
-
|
|
411
|
-
_context8.next =
|
|
412
|
-
|
|
403
|
+
_iteratorAbruptCompletion = false;
|
|
404
|
+
_context8.next = 6;
|
|
405
|
+
break;
|
|
413
406
|
case 14:
|
|
414
407
|
_context8.next = 20;
|
|
415
408
|
break;
|
|
416
409
|
case 16:
|
|
417
410
|
_context8.prev = 16;
|
|
418
|
-
_context8.t0 = _context8["catch"](
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
res.statusCode = 500;
|
|
422
|
-
res.end("Internal MCP Error");
|
|
423
|
-
}
|
|
411
|
+
_context8.t0 = _context8["catch"](4);
|
|
412
|
+
_didIteratorError = true;
|
|
413
|
+
_iteratorError = _context8.t0;
|
|
424
414
|
case 20:
|
|
415
|
+
_context8.prev = 20;
|
|
416
|
+
_context8.prev = 21;
|
|
417
|
+
if (!(_iteratorAbruptCompletion && _iterator.return != null)) {
|
|
418
|
+
_context8.next = 25;
|
|
419
|
+
break;
|
|
420
|
+
}
|
|
421
|
+
_context8.next = 25;
|
|
422
|
+
return _iterator.return();
|
|
423
|
+
case 25:
|
|
424
|
+
_context8.prev = 25;
|
|
425
|
+
if (!_didIteratorError) {
|
|
426
|
+
_context8.next = 28;
|
|
427
|
+
break;
|
|
428
|
+
}
|
|
429
|
+
throw _iteratorError;
|
|
430
|
+
case 28:
|
|
431
|
+
return _context8.finish(25);
|
|
432
|
+
case 29:
|
|
433
|
+
return _context8.finish(20);
|
|
434
|
+
case 30:
|
|
435
|
+
json = JSON.parse(body);
|
|
436
|
+
_context8.prev = 31;
|
|
437
|
+
_context8.next = 34;
|
|
438
|
+
return transport.handleRequest(req, res, json);
|
|
439
|
+
case 34:
|
|
440
|
+
result = _context8.sent;
|
|
441
|
+
// 规范:POST 一定返回 response
|
|
442
|
+
res.writeHead(200, {
|
|
443
|
+
'Content-Type': 'application/json'
|
|
444
|
+
});
|
|
445
|
+
res.end(JSON.stringify(result));
|
|
425
446
|
return _context8.abrupt("return");
|
|
426
|
-
case
|
|
427
|
-
|
|
428
|
-
|
|
447
|
+
case 40:
|
|
448
|
+
_context8.prev = 40;
|
|
449
|
+
_context8.t1 = _context8["catch"](31);
|
|
450
|
+
res.writeHead(500);
|
|
451
|
+
res.end(JSON.stringify({
|
|
452
|
+
jsonrpc: '2.0',
|
|
453
|
+
id: (_json$id = json === null || json === void 0 ? void 0 : json.id) !== null && _json$id !== void 0 ? _json$id : null,
|
|
454
|
+
error: {
|
|
455
|
+
message: _context8.t1 === null || _context8.t1 === void 0 ? void 0 : _context8.t1.message
|
|
456
|
+
}
|
|
457
|
+
}));
|
|
458
|
+
case 44:
|
|
459
|
+
if (!(req.method === 'GET')) {
|
|
460
|
+
_context8.next = 51;
|
|
461
|
+
break;
|
|
462
|
+
}
|
|
463
|
+
if ((_req$headers$accept = req.headers.accept) !== null && _req$headers$accept !== void 0 && _req$headers$accept.includes('text/event-stream')) {
|
|
464
|
+
_context8.next = 48;
|
|
465
|
+
break;
|
|
466
|
+
}
|
|
467
|
+
res.writeHead(405);
|
|
468
|
+
return _context8.abrupt("return", res.end());
|
|
469
|
+
case 48:
|
|
470
|
+
res.writeHead(200, {
|
|
471
|
+
'Content-Type': 'text/event-stream',
|
|
472
|
+
'Cache-Control': 'no-cache',
|
|
473
|
+
Connection: 'keep-alive'
|
|
474
|
+
});
|
|
475
|
+
transport.onmessage = function (message) {
|
|
476
|
+
res.write(message);
|
|
477
|
+
};
|
|
478
|
+
return _context8.abrupt("return");
|
|
479
|
+
case 51:
|
|
480
|
+
res.statusCode = 405;
|
|
481
|
+
res.end();
|
|
482
|
+
case 53:
|
|
429
483
|
case "end":
|
|
430
484
|
return _context8.stop();
|
|
431
485
|
}
|
|
432
|
-
}, _callee8, null, [[
|
|
486
|
+
}, _callee8, null, [[4, 16, 20, 30], [21,, 25, 29], [31, 40]]);
|
|
433
487
|
}));
|
|
434
|
-
return function (_x6, _x7
|
|
488
|
+
return function (_x6, _x7) {
|
|
435
489
|
return _ref6.apply(this, arguments);
|
|
436
490
|
};
|
|
437
491
|
}());
|
|
438
|
-
_context9.next =
|
|
492
|
+
_context9.next = 17;
|
|
439
493
|
break;
|
|
440
|
-
case
|
|
441
|
-
_context9.prev =
|
|
494
|
+
case 14:
|
|
495
|
+
_context9.prev = 14;
|
|
442
496
|
_context9.t0 = _context9["catch"](0);
|
|
443
497
|
console.log("MCP server error", _context9.t0);
|
|
444
|
-
case
|
|
498
|
+
case 17:
|
|
445
499
|
case "end":
|
|
446
500
|
return _context9.stop();
|
|
447
501
|
}
|
|
448
|
-
}, _callee9, null, [[0,
|
|
502
|
+
}, _callee9, null, [[0, 14]]);
|
|
449
503
|
}))();
|
|
450
504
|
}
|
|
451
505
|
};
|