@modelcontextprotocol/sdk 1.1.0 → 1.2.0
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/cli.d.ts.map +1 -0
- package/dist/cjs/cli.js +134 -0
- package/dist/cjs/cli.js.map +1 -0
- package/dist/cjs/client/index.d.ts.map +1 -0
- package/dist/cjs/client/index.js +210 -0
- package/dist/cjs/client/index.js.map +1 -0
- package/dist/cjs/client/sse.d.ts.map +1 -0
- package/dist/cjs/client/sse.js +99 -0
- package/dist/cjs/client/sse.js.map +1 -0
- package/dist/cjs/client/stdio.d.ts.map +1 -0
- package/dist/cjs/client/stdio.js +156 -0
- package/dist/cjs/client/stdio.js.map +1 -0
- package/dist/cjs/client/websocket.d.ts.map +1 -0
- package/dist/cjs/client/websocket.js +65 -0
- package/dist/cjs/client/websocket.js.map +1 -0
- package/dist/cjs/inMemory.d.ts.map +1 -0
- package/dist/cjs/inMemory.js +51 -0
- package/dist/cjs/inMemory.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/{server → cjs/server}/index.d.ts +5 -0
- package/dist/cjs/server/index.d.ts.map +1 -0
- package/dist/cjs/server/index.js +188 -0
- package/dist/cjs/server/index.js.map +1 -0
- package/dist/cjs/server/sse.d.ts.map +1 -0
- package/dist/cjs/server/sse.js +123 -0
- package/dist/cjs/server/sse.js.map +1 -0
- package/dist/cjs/server/stdio.d.ts.map +1 -0
- package/dist/cjs/server/stdio.js +85 -0
- package/dist/cjs/server/stdio.js.map +1 -0
- package/dist/cjs/shared/protocol.d.ts.map +1 -0
- package/dist/cjs/shared/protocol.js +301 -0
- package/dist/cjs/shared/protocol.js.map +1 -0
- package/dist/cjs/shared/stdio.d.ts.map +1 -0
- package/dist/cjs/shared/stdio.js +37 -0
- package/dist/cjs/shared/stdio.js.map +1 -0
- package/dist/cjs/shared/transport.d.ts.map +1 -0
- package/dist/cjs/shared/transport.js +3 -0
- package/dist/{shared → cjs/shared}/transport.js.map +1 -1
- package/dist/{types.d.ts → cjs/types.d.ts} +84 -78
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +1002 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/esm/cli.d.ts +2 -0
- package/dist/esm/cli.d.ts.map +1 -0
- package/dist/esm/cli.js.map +1 -0
- package/dist/esm/client/index.d.ts +773 -0
- package/dist/esm/client/index.d.ts.map +1 -0
- package/dist/esm/client/index.js.map +1 -0
- package/dist/esm/client/sse.d.ts +27 -0
- package/dist/esm/client/sse.d.ts.map +1 -0
- package/dist/esm/client/sse.js.map +1 -0
- package/dist/esm/client/stdio.d.ts +63 -0
- package/dist/esm/client/stdio.d.ts.map +1 -0
- package/dist/esm/client/stdio.js.map +1 -0
- package/dist/esm/client/websocket.d.ts +17 -0
- package/dist/esm/client/websocket.d.ts.map +1 -0
- package/dist/esm/client/websocket.js.map +1 -0
- package/dist/esm/inMemory.d.ts +20 -0
- package/dist/esm/inMemory.d.ts.map +1 -0
- package/dist/esm/inMemory.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/server/index.d.ts +117 -0
- package/dist/esm/server/index.d.ts.map +1 -0
- package/dist/{server → esm/server}/index.js +2 -0
- package/dist/esm/server/index.js.map +1 -0
- package/dist/esm/server/sse.d.ts +46 -0
- package/dist/esm/server/sse.d.ts.map +1 -0
- package/dist/esm/server/sse.js.map +1 -0
- package/dist/esm/server/stdio.d.ts +28 -0
- package/dist/esm/server/stdio.d.ts.map +1 -0
- package/dist/{server → esm/server}/stdio.js +9 -0
- package/dist/esm/server/stdio.js.map +1 -0
- package/dist/esm/shared/protocol.d.ts +157 -0
- package/dist/esm/shared/protocol.d.ts.map +1 -0
- package/dist/esm/shared/protocol.js.map +1 -0
- package/dist/esm/shared/stdio.d.ts +13 -0
- package/dist/esm/shared/stdio.d.ts.map +1 -0
- package/dist/esm/shared/stdio.js.map +1 -0
- package/dist/esm/shared/transport.d.ts +39 -0
- package/dist/esm/shared/transport.d.ts.map +1 -0
- package/dist/esm/shared/transport.js.map +1 -0
- package/dist/esm/types.d.ts +26431 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js.map +1 -0
- package/package.json +10 -5
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/client/index.d.ts.map +0 -1
- package/dist/client/index.js.map +0 -1
- package/dist/client/sse.d.ts.map +0 -1
- package/dist/client/sse.js.map +0 -1
- package/dist/client/stdio.d.ts.map +0 -1
- package/dist/client/stdio.js.map +0 -1
- package/dist/client/websocket.d.ts.map +0 -1
- package/dist/client/websocket.js.map +0 -1
- package/dist/inMemory.d.ts.map +0 -1
- package/dist/inMemory.js.map +0 -1
- package/dist/server/index.d.ts.map +0 -1
- package/dist/server/index.js.map +0 -1
- package/dist/server/sse.d.ts.map +0 -1
- package/dist/server/sse.js.map +0 -1
- package/dist/server/stdio.d.ts.map +0 -1
- package/dist/server/stdio.js.map +0 -1
- package/dist/shared/protocol.d.ts.map +0 -1
- package/dist/shared/protocol.js.map +0 -1
- package/dist/shared/stdio.d.ts.map +0 -1
- package/dist/shared/stdio.js.map +0 -1
- package/dist/shared/transport.d.ts.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- /package/dist/{cli.d.ts → cjs/cli.d.ts} +0 -0
- /package/dist/{client → cjs/client}/index.d.ts +0 -0
- /package/dist/{client → cjs/client}/sse.d.ts +0 -0
- /package/dist/{client → cjs/client}/stdio.d.ts +0 -0
- /package/dist/{client → cjs/client}/websocket.d.ts +0 -0
- /package/dist/{inMemory.d.ts → cjs/inMemory.d.ts} +0 -0
- /package/dist/{server → cjs/server}/sse.d.ts +0 -0
- /package/dist/{server → cjs/server}/stdio.d.ts +0 -0
- /package/dist/{shared → cjs/shared}/protocol.d.ts +0 -0
- /package/dist/{shared → cjs/shared}/stdio.d.ts +0 -0
- /package/dist/{shared → cjs/shared}/transport.d.ts +0 -0
- /package/dist/{cli.js → esm/cli.js} +0 -0
- /package/dist/{client → esm/client}/index.js +0 -0
- /package/dist/{client → esm/client}/sse.js +0 -0
- /package/dist/{client → esm/client}/stdio.js +0 -0
- /package/dist/{client → esm/client}/websocket.js +0 -0
- /package/dist/{inMemory.js → esm/inMemory.js} +0 -0
- /package/dist/{server → esm/server}/sse.js +0 -0
- /package/dist/{shared → esm/shared}/protocol.js +0 -0
- /package/dist/{shared → esm/shared}/stdio.js +0 -0
- /package/dist/{shared → esm/shared}/transport.js +0 -0
- /package/dist/{types.js → esm/types.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../../src/client/websocket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAwB,MAAM,aAAa,CAAC;AAInE;;GAEG;AACH,qBAAa,wBAAyB,YAAW,SAAS;IACxD,OAAO,CAAC,OAAO,CAAC,CAAY;IAC5B,OAAO,CAAC,IAAI,CAAM;IAElB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;gBAElC,GAAG,EAAE,GAAG;IAIpB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAyChB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CAW7C"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WebSocketClientTransport = void 0;
|
|
4
|
+
const types_js_1 = require("../types.js");
|
|
5
|
+
const SUBPROTOCOL = "mcp";
|
|
6
|
+
/**
|
|
7
|
+
* Client transport for WebSocket: this will connect to a server over the WebSocket protocol.
|
|
8
|
+
*/
|
|
9
|
+
class WebSocketClientTransport {
|
|
10
|
+
constructor(url) {
|
|
11
|
+
this._url = url;
|
|
12
|
+
}
|
|
13
|
+
start() {
|
|
14
|
+
if (this._socket) {
|
|
15
|
+
throw new Error("WebSocketClientTransport already started! If using Client class, note that connect() calls start() automatically.");
|
|
16
|
+
}
|
|
17
|
+
return new Promise((resolve, reject) => {
|
|
18
|
+
this._socket = new WebSocket(this._url, SUBPROTOCOL);
|
|
19
|
+
this._socket.onerror = (event) => {
|
|
20
|
+
var _a;
|
|
21
|
+
const error = "error" in event
|
|
22
|
+
? event.error
|
|
23
|
+
: new Error(`WebSocket error: ${JSON.stringify(event)}`);
|
|
24
|
+
reject(error);
|
|
25
|
+
(_a = this.onerror) === null || _a === void 0 ? void 0 : _a.call(this, error);
|
|
26
|
+
};
|
|
27
|
+
this._socket.onopen = () => {
|
|
28
|
+
resolve();
|
|
29
|
+
};
|
|
30
|
+
this._socket.onclose = () => {
|
|
31
|
+
var _a;
|
|
32
|
+
(_a = this.onclose) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
33
|
+
};
|
|
34
|
+
this._socket.onmessage = (event) => {
|
|
35
|
+
var _a, _b;
|
|
36
|
+
let message;
|
|
37
|
+
try {
|
|
38
|
+
message = types_js_1.JSONRPCMessageSchema.parse(JSON.parse(event.data));
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
(_a = this.onerror) === null || _a === void 0 ? void 0 : _a.call(this, error);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
(_b = this.onmessage) === null || _b === void 0 ? void 0 : _b.call(this, message);
|
|
45
|
+
};
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
async close() {
|
|
49
|
+
var _a;
|
|
50
|
+
(_a = this._socket) === null || _a === void 0 ? void 0 : _a.close();
|
|
51
|
+
}
|
|
52
|
+
send(message) {
|
|
53
|
+
return new Promise((resolve, reject) => {
|
|
54
|
+
var _a;
|
|
55
|
+
if (!this._socket) {
|
|
56
|
+
reject(new Error("Not connected"));
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
(_a = this._socket) === null || _a === void 0 ? void 0 : _a.send(JSON.stringify(message));
|
|
60
|
+
resolve();
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.WebSocketClientTransport = WebSocketClientTransport;
|
|
65
|
+
//# sourceMappingURL=websocket.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../../src/client/websocket.ts"],"names":[],"mappings":";;;AACA,0CAAmE;AAEnE,MAAM,WAAW,GAAG,KAAK,CAAC;AAE1B;;GAEG;AACH,MAAa,wBAAwB;IAQnC,YAAY,GAAQ;QAClB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,mHAAmH,CACpH,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,OAAO,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAErD,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;;gBAC/B,MAAM,KAAK,GACT,OAAO,IAAI,KAAK;oBACd,CAAC,CAAE,KAAK,CAAC,KAAe;oBACxB,CAAC,CAAC,IAAI,KAAK,CAAC,oBAAoB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC7D,MAAM,CAAC,KAAK,CAAC,CAAC;gBACd,MAAA,IAAI,CAAC,OAAO,qDAAG,KAAK,CAAC,CAAC;YACxB,CAAC,CAAC;YAEF,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,EAAE;gBACzB,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC;YAEF,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,GAAG,EAAE;;gBAC1B,MAAA,IAAI,CAAC,OAAO,oDAAI,CAAC;YACnB,CAAC,CAAC;YAEF,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,KAAmB,EAAE,EAAE;;gBAC/C,IAAI,OAAuB,CAAC;gBAC5B,IAAI,CAAC;oBACH,OAAO,GAAG,+BAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC/D,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAA,IAAI,CAAC,OAAO,qDAAG,KAAc,CAAC,CAAC;oBAC/B,OAAO;gBACT,CAAC;gBAED,MAAA,IAAI,CAAC,SAAS,qDAAG,OAAO,CAAC,CAAC;YAC5B,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK;;QACT,MAAA,IAAI,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAC;IACxB,CAAC;IAED,IAAI,CAAC,OAAuB;QAC1B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;;YACrC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,MAAM,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;gBACnC,OAAO;YACT,CAAC;YAED,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YAC5C,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AApED,4DAoEC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inMemory.d.ts","sourceRoot":"","sources":["../../src/inMemory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C;;GAEG;AACH,qBAAa,iBAAkB,YAAW,SAAS;IACjD,OAAO,CAAC,eAAe,CAAC,CAAoB;IAC5C,OAAO,CAAC,aAAa,CAAwB;IAE7C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAE9C;;OAEG;IACH,MAAM,CAAC,gBAAgB,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAQ3D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAUtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAOtB,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CAWnD"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InMemoryTransport = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* In-memory transport for creating clients and servers that talk to each other within the same process.
|
|
6
|
+
*/
|
|
7
|
+
class InMemoryTransport {
|
|
8
|
+
constructor() {
|
|
9
|
+
this._messageQueue = [];
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Creates a pair of linked in-memory transports that can communicate with each other. One should be passed to a Client and one to a Server.
|
|
13
|
+
*/
|
|
14
|
+
static createLinkedPair() {
|
|
15
|
+
const clientTransport = new InMemoryTransport();
|
|
16
|
+
const serverTransport = new InMemoryTransport();
|
|
17
|
+
clientTransport._otherTransport = serverTransport;
|
|
18
|
+
serverTransport._otherTransport = clientTransport;
|
|
19
|
+
return [clientTransport, serverTransport];
|
|
20
|
+
}
|
|
21
|
+
async start() {
|
|
22
|
+
var _a;
|
|
23
|
+
// Process any messages that were queued before start was called
|
|
24
|
+
while (this._messageQueue.length > 0) {
|
|
25
|
+
const message = this._messageQueue.shift();
|
|
26
|
+
if (message) {
|
|
27
|
+
(_a = this.onmessage) === null || _a === void 0 ? void 0 : _a.call(this, message);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
async close() {
|
|
32
|
+
var _a;
|
|
33
|
+
const other = this._otherTransport;
|
|
34
|
+
this._otherTransport = undefined;
|
|
35
|
+
await (other === null || other === void 0 ? void 0 : other.close());
|
|
36
|
+
(_a = this.onclose) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
37
|
+
}
|
|
38
|
+
async send(message) {
|
|
39
|
+
if (!this._otherTransport) {
|
|
40
|
+
throw new Error("Not connected");
|
|
41
|
+
}
|
|
42
|
+
if (this._otherTransport.onmessage) {
|
|
43
|
+
this._otherTransport.onmessage(message);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
this._otherTransport._messageQueue.push(message);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
exports.InMemoryTransport = InMemoryTransport;
|
|
51
|
+
//# sourceMappingURL=inMemory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inMemory.js","sourceRoot":"","sources":["../../src/inMemory.ts"],"names":[],"mappings":";;;AAGA;;GAEG;AACH,MAAa,iBAAiB;IAA9B;QAEU,kBAAa,GAAqB,EAAE,CAAC;IA6C/C,CAAC;IAvCC;;OAEG;IACH,MAAM,CAAC,gBAAgB;QACrB,MAAM,eAAe,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAChD,MAAM,eAAe,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAChD,eAAe,CAAC,eAAe,GAAG,eAAe,CAAC;QAClD,eAAe,CAAC,eAAe,GAAG,eAAe,CAAC;QAClD,OAAO,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,KAAK;;QACT,gEAAgE;QAChE,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YAC3C,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAA,IAAI,CAAC,SAAS,qDAAG,OAAO,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK;;QACT,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC;QACnC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QACjC,MAAM,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,EAAE,CAAA,CAAC;QACrB,MAAA,IAAI,CAAC,OAAO,oDAAI,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAuB;QAChC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;CACF;AA/CD,8CA+CC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type": "commonjs"}
|
|
@@ -5,6 +5,10 @@ export type ServerOptions = ProtocolOptions & {
|
|
|
5
5
|
* Capabilities to advertise as being supported by this server.
|
|
6
6
|
*/
|
|
7
7
|
capabilities: ServerCapabilities;
|
|
8
|
+
/**
|
|
9
|
+
* Optional instructions describing how to use the server and its features.
|
|
10
|
+
*/
|
|
11
|
+
instructions?: string;
|
|
8
12
|
};
|
|
9
13
|
/**
|
|
10
14
|
* An MCP server on top of a pluggable transport.
|
|
@@ -36,6 +40,7 @@ export declare class Server<RequestT extends Request = Request, NotificationT ex
|
|
|
36
40
|
private _clientCapabilities?;
|
|
37
41
|
private _clientVersion?;
|
|
38
42
|
private _capabilities;
|
|
43
|
+
private _instructions?;
|
|
39
44
|
/**
|
|
40
45
|
* Callback for when initialization has fully completed (i.e., the client has sent an `initialized` notification).
|
|
41
46
|
*/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,eAAe,EACf,cAAc,EACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EAGpB,cAAc,EAMd,gBAAgB,EAEhB,0BAA0B,EAC1B,YAAY,EACZ,OAAO,EACP,2BAA2B,EAC3B,MAAM,EACN,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,YAAY,EAEb,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG;IAC5C;;OAEG;IACH,YAAY,EAAE,kBAAkB,CAAC;IAEjC;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,MAAM,CACjB,QAAQ,SAAS,OAAO,GAAG,OAAO,EAClC,aAAa,SAAS,YAAY,GAAG,YAAY,EACjD,OAAO,SAAS,MAAM,GAAG,MAAM,CAC/B,SAAQ,QAAQ,CAChB,aAAa,GAAG,QAAQ,EACxB,kBAAkB,GAAG,aAAa,EAClC,YAAY,GAAG,OAAO,CACvB;IAeG,OAAO,CAAC,WAAW;IAdrB,OAAO,CAAC,mBAAmB,CAAC,CAAqB;IACjD,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,aAAa,CAAC,CAAS;IAE/B;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAE3B;;OAEG;gBAEO,WAAW,EAAE,cAAc,EACnC,OAAO,EAAE,aAAa;IAcxB,SAAS,CAAC,yBAAyB,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI;IAwBrE,SAAS,CAAC,4BAA4B,CACpC,MAAM,EAAE,CAAC,kBAAkB,GAAG,aAAa,CAAC,CAAC,QAAQ,CAAC,GACrD,IAAI;IA6CP,SAAS,CAAC,8BAA8B,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;YAqDhD,aAAa;IAkB3B;;OAEG;IACH,qBAAqB,IAAI,kBAAkB,GAAG,SAAS;IAIvD;;OAEG;IACH,gBAAgB,IAAI,cAAc,GAAG,SAAS;IAI9C,OAAO,CAAC,eAAe;IAIjB,IAAI;;;IAIJ,aAAa,CACjB,MAAM,EAAE,oBAAoB,CAAC,QAAQ,CAAC,EACtC,OAAO,CAAC,EAAE,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IASpB,SAAS,CACb,MAAM,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EACnC,OAAO,CAAC,EAAE,cAAc;;;;;;;;;;;;;;IASpB,kBAAkB,CAAC,MAAM,EAAE,0BAA0B,CAAC,QAAQ,CAAC;IAI/D,mBAAmB,CAAC,MAAM,EAAE,2BAA2B,CAAC,QAAQ,CAAC;IAOjE,uBAAuB;IAMvB,mBAAmB;IAInB,qBAAqB;CAG5B"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Server = void 0;
|
|
4
|
+
const protocol_js_1 = require("../shared/protocol.js");
|
|
5
|
+
const types_js_1 = require("../types.js");
|
|
6
|
+
/**
|
|
7
|
+
* An MCP server on top of a pluggable transport.
|
|
8
|
+
*
|
|
9
|
+
* This server will automatically respond to the initialization flow as initiated from the client.
|
|
10
|
+
*
|
|
11
|
+
* To use with custom types, extend the base Request/Notification/Result types and pass them as type parameters:
|
|
12
|
+
*
|
|
13
|
+
* ```typescript
|
|
14
|
+
* // Custom schemas
|
|
15
|
+
* const CustomRequestSchema = RequestSchema.extend({...})
|
|
16
|
+
* const CustomNotificationSchema = NotificationSchema.extend({...})
|
|
17
|
+
* const CustomResultSchema = ResultSchema.extend({...})
|
|
18
|
+
*
|
|
19
|
+
* // Type aliases
|
|
20
|
+
* type CustomRequest = z.infer<typeof CustomRequestSchema>
|
|
21
|
+
* type CustomNotification = z.infer<typeof CustomNotificationSchema>
|
|
22
|
+
* type CustomResult = z.infer<typeof CustomResultSchema>
|
|
23
|
+
*
|
|
24
|
+
* // Create typed server
|
|
25
|
+
* const server = new Server<CustomRequest, CustomNotification, CustomResult>({
|
|
26
|
+
* name: "CustomServer",
|
|
27
|
+
* version: "1.0.0"
|
|
28
|
+
* })
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
class Server extends protocol_js_1.Protocol {
|
|
32
|
+
/**
|
|
33
|
+
* Initializes this server with the given name and version information.
|
|
34
|
+
*/
|
|
35
|
+
constructor(_serverInfo, options) {
|
|
36
|
+
super(options);
|
|
37
|
+
this._serverInfo = _serverInfo;
|
|
38
|
+
this._capabilities = options.capabilities;
|
|
39
|
+
this._instructions = options.instructions;
|
|
40
|
+
this.setRequestHandler(types_js_1.InitializeRequestSchema, (request) => this._oninitialize(request));
|
|
41
|
+
this.setNotificationHandler(types_js_1.InitializedNotificationSchema, () => { var _a; return (_a = this.oninitialized) === null || _a === void 0 ? void 0 : _a.call(this); });
|
|
42
|
+
}
|
|
43
|
+
assertCapabilityForMethod(method) {
|
|
44
|
+
var _a, _b;
|
|
45
|
+
switch (method) {
|
|
46
|
+
case "sampling/createMessage":
|
|
47
|
+
if (!((_a = this._clientCapabilities) === null || _a === void 0 ? void 0 : _a.sampling)) {
|
|
48
|
+
throw new Error(`Client does not support sampling (required for ${method})`);
|
|
49
|
+
}
|
|
50
|
+
break;
|
|
51
|
+
case "roots/list":
|
|
52
|
+
if (!((_b = this._clientCapabilities) === null || _b === void 0 ? void 0 : _b.roots)) {
|
|
53
|
+
throw new Error(`Client does not support listing roots (required for ${method})`);
|
|
54
|
+
}
|
|
55
|
+
break;
|
|
56
|
+
case "ping":
|
|
57
|
+
// No specific capability required for ping
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
assertNotificationCapability(method) {
|
|
62
|
+
switch (method) {
|
|
63
|
+
case "notifications/message":
|
|
64
|
+
if (!this._capabilities.logging) {
|
|
65
|
+
throw new Error(`Server does not support logging (required for ${method})`);
|
|
66
|
+
}
|
|
67
|
+
break;
|
|
68
|
+
case "notifications/resources/updated":
|
|
69
|
+
case "notifications/resources/list_changed":
|
|
70
|
+
if (!this._capabilities.resources) {
|
|
71
|
+
throw new Error(`Server does not support notifying about resources (required for ${method})`);
|
|
72
|
+
}
|
|
73
|
+
break;
|
|
74
|
+
case "notifications/tools/list_changed":
|
|
75
|
+
if (!this._capabilities.tools) {
|
|
76
|
+
throw new Error(`Server does not support notifying of tool list changes (required for ${method})`);
|
|
77
|
+
}
|
|
78
|
+
break;
|
|
79
|
+
case "notifications/prompts/list_changed":
|
|
80
|
+
if (!this._capabilities.prompts) {
|
|
81
|
+
throw new Error(`Server does not support notifying of prompt list changes (required for ${method})`);
|
|
82
|
+
}
|
|
83
|
+
break;
|
|
84
|
+
case "notifications/cancelled":
|
|
85
|
+
// Cancellation notifications are always allowed
|
|
86
|
+
break;
|
|
87
|
+
case "notifications/progress":
|
|
88
|
+
// Progress notifications are always allowed
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
assertRequestHandlerCapability(method) {
|
|
93
|
+
switch (method) {
|
|
94
|
+
case "sampling/createMessage":
|
|
95
|
+
if (!this._capabilities.sampling) {
|
|
96
|
+
throw new Error(`Server does not support sampling (required for ${method})`);
|
|
97
|
+
}
|
|
98
|
+
break;
|
|
99
|
+
case "logging/setLevel":
|
|
100
|
+
if (!this._capabilities.logging) {
|
|
101
|
+
throw new Error(`Server does not support logging (required for ${method})`);
|
|
102
|
+
}
|
|
103
|
+
break;
|
|
104
|
+
case "prompts/get":
|
|
105
|
+
case "prompts/list":
|
|
106
|
+
if (!this._capabilities.prompts) {
|
|
107
|
+
throw new Error(`Server does not support prompts (required for ${method})`);
|
|
108
|
+
}
|
|
109
|
+
break;
|
|
110
|
+
case "resources/list":
|
|
111
|
+
case "resources/templates/list":
|
|
112
|
+
case "resources/read":
|
|
113
|
+
if (!this._capabilities.resources) {
|
|
114
|
+
throw new Error(`Server does not support resources (required for ${method})`);
|
|
115
|
+
}
|
|
116
|
+
break;
|
|
117
|
+
case "tools/call":
|
|
118
|
+
case "tools/list":
|
|
119
|
+
if (!this._capabilities.tools) {
|
|
120
|
+
throw new Error(`Server does not support tools (required for ${method})`);
|
|
121
|
+
}
|
|
122
|
+
break;
|
|
123
|
+
case "ping":
|
|
124
|
+
case "initialize":
|
|
125
|
+
// No specific capability required for these methods
|
|
126
|
+
break;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
async _oninitialize(request) {
|
|
130
|
+
const requestedVersion = request.params.protocolVersion;
|
|
131
|
+
this._clientCapabilities = request.params.capabilities;
|
|
132
|
+
this._clientVersion = request.params.clientInfo;
|
|
133
|
+
return {
|
|
134
|
+
protocolVersion: types_js_1.SUPPORTED_PROTOCOL_VERSIONS.includes(requestedVersion)
|
|
135
|
+
? requestedVersion
|
|
136
|
+
: types_js_1.LATEST_PROTOCOL_VERSION,
|
|
137
|
+
capabilities: this.getCapabilities(),
|
|
138
|
+
serverInfo: this._serverInfo,
|
|
139
|
+
...(this._instructions && { instructions: this._instructions }),
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* After initialization has completed, this will be populated with the client's reported capabilities.
|
|
144
|
+
*/
|
|
145
|
+
getClientCapabilities() {
|
|
146
|
+
return this._clientCapabilities;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* After initialization has completed, this will be populated with information about the client's name and version.
|
|
150
|
+
*/
|
|
151
|
+
getClientVersion() {
|
|
152
|
+
return this._clientVersion;
|
|
153
|
+
}
|
|
154
|
+
getCapabilities() {
|
|
155
|
+
return this._capabilities;
|
|
156
|
+
}
|
|
157
|
+
async ping() {
|
|
158
|
+
return this.request({ method: "ping" }, types_js_1.EmptyResultSchema);
|
|
159
|
+
}
|
|
160
|
+
async createMessage(params, options) {
|
|
161
|
+
return this.request({ method: "sampling/createMessage", params }, types_js_1.CreateMessageResultSchema, options);
|
|
162
|
+
}
|
|
163
|
+
async listRoots(params, options) {
|
|
164
|
+
return this.request({ method: "roots/list", params }, types_js_1.ListRootsResultSchema, options);
|
|
165
|
+
}
|
|
166
|
+
async sendLoggingMessage(params) {
|
|
167
|
+
return this.notification({ method: "notifications/message", params });
|
|
168
|
+
}
|
|
169
|
+
async sendResourceUpdated(params) {
|
|
170
|
+
return this.notification({
|
|
171
|
+
method: "notifications/resources/updated",
|
|
172
|
+
params,
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
async sendResourceListChanged() {
|
|
176
|
+
return this.notification({
|
|
177
|
+
method: "notifications/resources/list_changed",
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
async sendToolListChanged() {
|
|
181
|
+
return this.notification({ method: "notifications/tools/list_changed" });
|
|
182
|
+
}
|
|
183
|
+
async sendPromptListChanged() {
|
|
184
|
+
return this.notification({ method: "notifications/prompts/list_changed" });
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
exports.Server = Server;
|
|
188
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../../src/server/sse.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAwB,MAAM,aAAa,CAAC;AAMnE;;;;GAIG;AACH,qBAAa,kBAAmB,YAAW,SAAS;IAYhD,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,GAAG;IAZb,OAAO,CAAC,YAAY,CAAC,CAAiB;IACtC,OAAO,CAAC,UAAU,CAAS;IAE3B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAE9C;;OAEG;gBAEO,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,cAAc;IAK7B;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB5B;;;;OAIG;IACG,iBAAiB,CACrB,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,UAAU,CAAC,EAAE,OAAO,GACnB,OAAO,CAAC,IAAI,CAAC;IAkChB;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAY9C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAMtB,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAUlD;;;;OAIG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;CACF"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SSEServerTransport = void 0;
|
|
7
|
+
const node_crypto_1 = require("node:crypto");
|
|
8
|
+
const types_js_1 = require("../types.js");
|
|
9
|
+
const raw_body_1 = __importDefault(require("raw-body"));
|
|
10
|
+
const content_type_1 = __importDefault(require("content-type"));
|
|
11
|
+
const MAXIMUM_MESSAGE_SIZE = "4mb";
|
|
12
|
+
/**
|
|
13
|
+
* Server transport for SSE: this will send messages over an SSE connection and receive messages from HTTP POST requests.
|
|
14
|
+
*
|
|
15
|
+
* This transport is only available in Node.js environments.
|
|
16
|
+
*/
|
|
17
|
+
class SSEServerTransport {
|
|
18
|
+
/**
|
|
19
|
+
* Creates a new SSE server transport, which will direct the client to POST messages to the relative or absolute URL identified by `_endpoint`.
|
|
20
|
+
*/
|
|
21
|
+
constructor(_endpoint, res) {
|
|
22
|
+
this._endpoint = _endpoint;
|
|
23
|
+
this.res = res;
|
|
24
|
+
this._sessionId = (0, node_crypto_1.randomUUID)();
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Handles the initial SSE connection request.
|
|
28
|
+
*
|
|
29
|
+
* This should be called when a GET request is made to establish the SSE stream.
|
|
30
|
+
*/
|
|
31
|
+
async start() {
|
|
32
|
+
if (this._sseResponse) {
|
|
33
|
+
throw new Error("SSEServerTransport already started! If using Server class, note that connect() calls start() automatically.");
|
|
34
|
+
}
|
|
35
|
+
this.res.writeHead(200, {
|
|
36
|
+
"Content-Type": "text/event-stream",
|
|
37
|
+
"Cache-Control": "no-cache",
|
|
38
|
+
Connection: "keep-alive",
|
|
39
|
+
});
|
|
40
|
+
// Send the endpoint event
|
|
41
|
+
this.res.write(`event: endpoint\ndata: ${encodeURI(this._endpoint)}?sessionId=${this._sessionId}\n\n`);
|
|
42
|
+
this._sseResponse = this.res;
|
|
43
|
+
this.res.on("close", () => {
|
|
44
|
+
var _a;
|
|
45
|
+
this._sseResponse = undefined;
|
|
46
|
+
(_a = this.onclose) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Handles incoming POST messages.
|
|
51
|
+
*
|
|
52
|
+
* This should be called when a POST request is made to send a message to the server.
|
|
53
|
+
*/
|
|
54
|
+
async handlePostMessage(req, res, parsedBody) {
|
|
55
|
+
var _a, _b, _c;
|
|
56
|
+
if (!this._sseResponse) {
|
|
57
|
+
const message = "SSE connection not established";
|
|
58
|
+
res.writeHead(500).end(message);
|
|
59
|
+
throw new Error(message);
|
|
60
|
+
}
|
|
61
|
+
let body;
|
|
62
|
+
try {
|
|
63
|
+
const ct = content_type_1.default.parse((_a = req.headers["content-type"]) !== null && _a !== void 0 ? _a : "");
|
|
64
|
+
if (ct.type !== "application/json") {
|
|
65
|
+
throw new Error(`Unsupported content-type: ${ct}`);
|
|
66
|
+
}
|
|
67
|
+
body = parsedBody !== null && parsedBody !== void 0 ? parsedBody : await (0, raw_body_1.default)(req, {
|
|
68
|
+
limit: MAXIMUM_MESSAGE_SIZE,
|
|
69
|
+
encoding: (_b = ct.parameters.charset) !== null && _b !== void 0 ? _b : "utf-8",
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
res.writeHead(400).end(String(error));
|
|
74
|
+
(_c = this.onerror) === null || _c === void 0 ? void 0 : _c.call(this, error);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
try {
|
|
78
|
+
await this.handleMessage(typeof body === 'string' ? JSON.parse(body) : body);
|
|
79
|
+
}
|
|
80
|
+
catch (_d) {
|
|
81
|
+
res.writeHead(400).end(`Invalid message: ${body}`);
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
res.writeHead(202).end("Accepted");
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Handle a client message, regardless of how it arrived. This can be used to inform the server of messages that arrive via a means different than HTTP POST.
|
|
88
|
+
*/
|
|
89
|
+
async handleMessage(message) {
|
|
90
|
+
var _a, _b;
|
|
91
|
+
let parsedMessage;
|
|
92
|
+
try {
|
|
93
|
+
parsedMessage = types_js_1.JSONRPCMessageSchema.parse(message);
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
(_a = this.onerror) === null || _a === void 0 ? void 0 : _a.call(this, error);
|
|
97
|
+
throw error;
|
|
98
|
+
}
|
|
99
|
+
(_b = this.onmessage) === null || _b === void 0 ? void 0 : _b.call(this, parsedMessage);
|
|
100
|
+
}
|
|
101
|
+
async close() {
|
|
102
|
+
var _a, _b;
|
|
103
|
+
(_a = this._sseResponse) === null || _a === void 0 ? void 0 : _a.end();
|
|
104
|
+
this._sseResponse = undefined;
|
|
105
|
+
(_b = this.onclose) === null || _b === void 0 ? void 0 : _b.call(this);
|
|
106
|
+
}
|
|
107
|
+
async send(message) {
|
|
108
|
+
if (!this._sseResponse) {
|
|
109
|
+
throw new Error("Not connected");
|
|
110
|
+
}
|
|
111
|
+
this._sseResponse.write(`event: message\ndata: ${JSON.stringify(message)}\n\n`);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Returns the session ID for this transport.
|
|
115
|
+
*
|
|
116
|
+
* This can be used to route incoming POST requests.
|
|
117
|
+
*/
|
|
118
|
+
get sessionId() {
|
|
119
|
+
return this._sessionId;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
exports.SSEServerTransport = SSEServerTransport;
|
|
123
|
+
//# sourceMappingURL=sse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sse.js","sourceRoot":"","sources":["../../../src/server/sse.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdio.d.ts","sourceRoot":"","sources":["../../../src/server/stdio.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD;;;;GAIG;AACH,qBAAa,oBAAqB,YAAW,SAAS;IAKlD,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;IALjB,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,QAAQ,CAAS;gBAGf,MAAM,GAAE,QAAwB,EAChC,OAAO,GAAE,QAAyB;IAG5C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAG9C,OAAO,UAAW,MAAM,UAGtB;IACF,QAAQ,UAAW,KAAK,UAEtB;IAEF;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAY5B,OAAO,CAAC,iBAAiB;IAenB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB5B,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CAU7C"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.StdioServerTransport = void 0;
|
|
7
|
+
const node_process_1 = __importDefault(require("node:process"));
|
|
8
|
+
const stdio_js_1 = require("../shared/stdio.js");
|
|
9
|
+
/**
|
|
10
|
+
* Server transport for stdio: this communicates with a MCP client by reading from the current process' stdin and writing to stdout.
|
|
11
|
+
*
|
|
12
|
+
* This transport is only available in Node.js environments.
|
|
13
|
+
*/
|
|
14
|
+
class StdioServerTransport {
|
|
15
|
+
constructor(_stdin = node_process_1.default.stdin, _stdout = node_process_1.default.stdout) {
|
|
16
|
+
this._stdin = _stdin;
|
|
17
|
+
this._stdout = _stdout;
|
|
18
|
+
this._readBuffer = new stdio_js_1.ReadBuffer();
|
|
19
|
+
this._started = false;
|
|
20
|
+
// Arrow functions to bind `this` properly, while maintaining function identity.
|
|
21
|
+
this._ondata = (chunk) => {
|
|
22
|
+
this._readBuffer.append(chunk);
|
|
23
|
+
this.processReadBuffer();
|
|
24
|
+
};
|
|
25
|
+
this._onerror = (error) => {
|
|
26
|
+
var _a;
|
|
27
|
+
(_a = this.onerror) === null || _a === void 0 ? void 0 : _a.call(this, error);
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Starts listening for messages on stdin.
|
|
32
|
+
*/
|
|
33
|
+
async start() {
|
|
34
|
+
if (this._started) {
|
|
35
|
+
throw new Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.");
|
|
36
|
+
}
|
|
37
|
+
this._started = true;
|
|
38
|
+
this._stdin.on("data", this._ondata);
|
|
39
|
+
this._stdin.on("error", this._onerror);
|
|
40
|
+
}
|
|
41
|
+
processReadBuffer() {
|
|
42
|
+
var _a, _b;
|
|
43
|
+
while (true) {
|
|
44
|
+
try {
|
|
45
|
+
const message = this._readBuffer.readMessage();
|
|
46
|
+
if (message === null) {
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
(_a = this.onmessage) === null || _a === void 0 ? void 0 : _a.call(this, message);
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
(_b = this.onerror) === null || _b === void 0 ? void 0 : _b.call(this, error);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
async close() {
|
|
57
|
+
var _a;
|
|
58
|
+
// Remove our event listeners first
|
|
59
|
+
this._stdin.off("data", this._ondata);
|
|
60
|
+
this._stdin.off("error", this._onerror);
|
|
61
|
+
// Check if we were the only data listener
|
|
62
|
+
const remainingDataListeners = this._stdin.listenerCount('data');
|
|
63
|
+
if (remainingDataListeners === 0) {
|
|
64
|
+
// Only pause stdin if we were the only listener
|
|
65
|
+
// This prevents interfering with other parts of the application that might be using stdin
|
|
66
|
+
this._stdin.pause();
|
|
67
|
+
}
|
|
68
|
+
// Clear the buffer and notify closure
|
|
69
|
+
this._readBuffer.clear();
|
|
70
|
+
(_a = this.onclose) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
71
|
+
}
|
|
72
|
+
send(message) {
|
|
73
|
+
return new Promise((resolve) => {
|
|
74
|
+
const json = (0, stdio_js_1.serializeMessage)(message);
|
|
75
|
+
if (this._stdout.write(json)) {
|
|
76
|
+
resolve();
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
this._stdout.once("drain", resolve);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
exports.StdioServerTransport = StdioServerTransport;
|
|
85
|
+
//# sourceMappingURL=stdio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdio.js","sourceRoot":"","sources":["../../../src/server/stdio.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAmC;AAEnC,iDAAkE;AAIlE;;;;GAIG;AACH,MAAa,oBAAoB;IAI/B,YACU,SAAmB,sBAAO,CAAC,KAAK,EAChC,UAAoB,sBAAO,CAAC,MAAM;QADlC,WAAM,GAAN,MAAM,CAA0B;QAChC,YAAO,GAAP,OAAO,CAA2B;QALpC,gBAAW,GAAe,IAAI,qBAAU,EAAE,CAAC;QAC3C,aAAQ,GAAG,KAAK,CAAC;QAWzB,gFAAgF;QAChF,YAAO,GAAG,CAAC,KAAa,EAAE,EAAE;YAC1B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,CAAC,CAAC;QACF,aAAQ,GAAG,CAAC,KAAY,EAAE,EAAE;;YAC1B,MAAA,IAAI,CAAC,OAAO,qDAAG,KAAK,CAAC,CAAC;QACxB,CAAC,CAAC;IAbC,CAAC;IAeJ;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CACb,+GAA+G,CAChH,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAEO,iBAAiB;;QACvB,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;gBAC/C,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;oBACrB,MAAM;gBACR,CAAC;gBAED,MAAA,IAAI,CAAC,SAAS,qDAAG,OAAO,CAAC,CAAC;YAC5B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAA,IAAI,CAAC,OAAO,qDAAG,KAAc,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK;;QACT,mCAAmC;QACnC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAExC,0CAA0C;QAC1C,MAAM,sBAAsB,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACjE,IAAI,sBAAsB,KAAK,CAAC,EAAE,CAAC;YACjC,gDAAgD;YAChD,0FAA0F;YAC1F,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC;QAED,sCAAsC;QACtC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACzB,MAAA,IAAI,CAAC,OAAO,oDAAI,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,OAAuB;QAC1B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,IAAI,GAAG,IAAA,2BAAgB,EAAC,OAAO,CAAC,CAAC;YACvC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7B,OAAO,EAAE,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACtC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAhFD,oDAgFC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../src/shared/protocol.ts"],"names":[],"mappings":"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"}
|