@modelcontextprotocol/sdk 0.4.0 → 0.5.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/README.md +1 -1
- package/dist/cli.js +13 -0
- package/dist/cli.js.map +1 -1
- package/dist/client/index.d.ts +23 -12
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +133 -37
- package/dist/client/index.js.map +1 -1
- package/dist/client/index.test.js +301 -3
- package/dist/client/index.test.js.map +1 -1
- package/dist/client/stdio.d.ts +7 -0
- package/dist/client/stdio.d.ts.map +1 -1
- package/dist/client/stdio.js +6 -5
- package/dist/client/stdio.js.map +1 -1
- package/dist/inMemory.d.ts +20 -0
- package/dist/inMemory.d.ts.map +1 -0
- package/dist/inMemory.js +47 -0
- package/dist/inMemory.js.map +1 -0
- package/dist/inMemory.test.d.ts +2 -0
- package/dist/inMemory.test.d.ts.map +1 -0
- package/dist/inMemory.test.js +74 -0
- package/dist/inMemory.test.js.map +1 -0
- package/dist/server/index.d.ts +15 -5
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +99 -23
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.test.js +310 -3
- package/dist/server/index.test.js.map +1 -1
- package/dist/shared/protocol.d.ts +64 -7
- package/dist/shared/protocol.d.ts.map +1 -1
- package/dist/shared/protocol.js +60 -11
- package/dist/shared/protocol.js.map +1 -1
- package/dist/types.d.ts +753 -362
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +55 -26
- package/dist/types.js.map +1 -1
- package/dist/utils.d.ts +5 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +11 -0
- package/dist/utils.js.map +1 -0
- package/dist/utils.test.d.ts +2 -0
- package/dist/utils.test.d.ts.map +1 -0
- package/dist/utils.test.js +14 -0
- package/dist/utils.test.js.map +1 -0
- package/package.json +1 -1
|
@@ -3,10 +3,267 @@
|
|
|
3
3
|
/* eslint-disable @typescript-eslint/no-unused-expressions */
|
|
4
4
|
import { Client } from "./index.js";
|
|
5
5
|
import { z } from "zod";
|
|
6
|
-
import { RequestSchema, NotificationSchema, ResultSchema } from "../types.js";
|
|
6
|
+
import { RequestSchema, NotificationSchema, ResultSchema, LATEST_PROTOCOL_VERSION, SUPPORTED_PROTOCOL_VERSIONS, InitializeRequestSchema, ListResourcesRequestSchema, ListToolsRequestSchema, CreateMessageRequestSchema, ListRootsRequestSchema, } from "../types.js";
|
|
7
|
+
import { Server } from "../server/index.js";
|
|
8
|
+
import { InMemoryTransport } from "../inMemory.js";
|
|
9
|
+
test("should initialize with matching protocol version", async () => {
|
|
10
|
+
const clientTransport = {
|
|
11
|
+
start: jest.fn().mockResolvedValue(undefined),
|
|
12
|
+
close: jest.fn().mockResolvedValue(undefined),
|
|
13
|
+
send: jest.fn().mockImplementation((message) => {
|
|
14
|
+
var _a;
|
|
15
|
+
if (message.method === "initialize") {
|
|
16
|
+
(_a = clientTransport.onmessage) === null || _a === void 0 ? void 0 : _a.call(clientTransport, {
|
|
17
|
+
jsonrpc: "2.0",
|
|
18
|
+
id: message.id,
|
|
19
|
+
result: {
|
|
20
|
+
protocolVersion: LATEST_PROTOCOL_VERSION,
|
|
21
|
+
capabilities: {},
|
|
22
|
+
serverInfo: {
|
|
23
|
+
name: "test",
|
|
24
|
+
version: "1.0",
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
return Promise.resolve();
|
|
30
|
+
}),
|
|
31
|
+
};
|
|
32
|
+
const client = new Client({
|
|
33
|
+
name: "test client",
|
|
34
|
+
version: "1.0",
|
|
35
|
+
}, {
|
|
36
|
+
capabilities: {
|
|
37
|
+
sampling: {},
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
await client.connect(clientTransport);
|
|
41
|
+
// Should have sent initialize with latest version
|
|
42
|
+
expect(clientTransport.send).toHaveBeenCalledWith(expect.objectContaining({
|
|
43
|
+
method: "initialize",
|
|
44
|
+
params: expect.objectContaining({
|
|
45
|
+
protocolVersion: LATEST_PROTOCOL_VERSION,
|
|
46
|
+
}),
|
|
47
|
+
}));
|
|
48
|
+
});
|
|
49
|
+
test("should initialize with supported older protocol version", async () => {
|
|
50
|
+
const OLD_VERSION = SUPPORTED_PROTOCOL_VERSIONS[1];
|
|
51
|
+
const clientTransport = {
|
|
52
|
+
start: jest.fn().mockResolvedValue(undefined),
|
|
53
|
+
close: jest.fn().mockResolvedValue(undefined),
|
|
54
|
+
send: jest.fn().mockImplementation((message) => {
|
|
55
|
+
var _a;
|
|
56
|
+
if (message.method === "initialize") {
|
|
57
|
+
(_a = clientTransport.onmessage) === null || _a === void 0 ? void 0 : _a.call(clientTransport, {
|
|
58
|
+
jsonrpc: "2.0",
|
|
59
|
+
id: message.id,
|
|
60
|
+
result: {
|
|
61
|
+
protocolVersion: OLD_VERSION,
|
|
62
|
+
capabilities: {},
|
|
63
|
+
serverInfo: {
|
|
64
|
+
name: "test",
|
|
65
|
+
version: "1.0",
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
return Promise.resolve();
|
|
71
|
+
}),
|
|
72
|
+
};
|
|
73
|
+
const client = new Client({
|
|
74
|
+
name: "test client",
|
|
75
|
+
version: "1.0",
|
|
76
|
+
}, {
|
|
77
|
+
capabilities: {
|
|
78
|
+
sampling: {},
|
|
79
|
+
},
|
|
80
|
+
});
|
|
81
|
+
await client.connect(clientTransport);
|
|
82
|
+
// Connection should succeed with the older version
|
|
83
|
+
expect(client.getServerVersion()).toEqual({
|
|
84
|
+
name: "test",
|
|
85
|
+
version: "1.0",
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
test("should reject unsupported protocol version", async () => {
|
|
89
|
+
const clientTransport = {
|
|
90
|
+
start: jest.fn().mockResolvedValue(undefined),
|
|
91
|
+
close: jest.fn().mockResolvedValue(undefined),
|
|
92
|
+
send: jest.fn().mockImplementation((message) => {
|
|
93
|
+
var _a;
|
|
94
|
+
if (message.method === "initialize") {
|
|
95
|
+
(_a = clientTransport.onmessage) === null || _a === void 0 ? void 0 : _a.call(clientTransport, {
|
|
96
|
+
jsonrpc: "2.0",
|
|
97
|
+
id: message.id,
|
|
98
|
+
result: {
|
|
99
|
+
protocolVersion: "invalid-version",
|
|
100
|
+
capabilities: {},
|
|
101
|
+
serverInfo: {
|
|
102
|
+
name: "test",
|
|
103
|
+
version: "1.0",
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
return Promise.resolve();
|
|
109
|
+
}),
|
|
110
|
+
};
|
|
111
|
+
const client = new Client({
|
|
112
|
+
name: "test client",
|
|
113
|
+
version: "1.0",
|
|
114
|
+
}, {
|
|
115
|
+
capabilities: {
|
|
116
|
+
sampling: {},
|
|
117
|
+
},
|
|
118
|
+
});
|
|
119
|
+
await expect(client.connect(clientTransport)).rejects.toThrow("Server's protocol version is not supported: invalid-version");
|
|
120
|
+
expect(clientTransport.close).toHaveBeenCalled();
|
|
121
|
+
});
|
|
122
|
+
test("should respect server capabilities", async () => {
|
|
123
|
+
const server = new Server({
|
|
124
|
+
name: "test server",
|
|
125
|
+
version: "1.0",
|
|
126
|
+
}, {
|
|
127
|
+
capabilities: {
|
|
128
|
+
resources: {},
|
|
129
|
+
tools: {},
|
|
130
|
+
},
|
|
131
|
+
});
|
|
132
|
+
server.setRequestHandler(InitializeRequestSchema, (_request) => ({
|
|
133
|
+
protocolVersion: LATEST_PROTOCOL_VERSION,
|
|
134
|
+
capabilities: {
|
|
135
|
+
resources: {},
|
|
136
|
+
tools: {},
|
|
137
|
+
},
|
|
138
|
+
serverInfo: {
|
|
139
|
+
name: "test",
|
|
140
|
+
version: "1.0",
|
|
141
|
+
},
|
|
142
|
+
}));
|
|
143
|
+
server.setRequestHandler(ListResourcesRequestSchema, () => ({
|
|
144
|
+
resources: [],
|
|
145
|
+
}));
|
|
146
|
+
server.setRequestHandler(ListToolsRequestSchema, () => ({
|
|
147
|
+
tools: [],
|
|
148
|
+
}));
|
|
149
|
+
const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
|
|
150
|
+
const client = new Client({
|
|
151
|
+
name: "test client",
|
|
152
|
+
version: "1.0",
|
|
153
|
+
}, {
|
|
154
|
+
capabilities: {
|
|
155
|
+
sampling: {},
|
|
156
|
+
},
|
|
157
|
+
enforceStrictCapabilities: true,
|
|
158
|
+
});
|
|
159
|
+
await Promise.all([
|
|
160
|
+
client.connect(clientTransport),
|
|
161
|
+
server.connect(serverTransport),
|
|
162
|
+
]);
|
|
163
|
+
// Server supports resources and tools, but not prompts
|
|
164
|
+
expect(client.getServerCapabilities()).toEqual({
|
|
165
|
+
resources: {},
|
|
166
|
+
tools: {},
|
|
167
|
+
});
|
|
168
|
+
// These should work
|
|
169
|
+
await expect(client.listResources()).resolves.not.toThrow();
|
|
170
|
+
await expect(client.listTools()).resolves.not.toThrow();
|
|
171
|
+
// This should throw because prompts are not supported
|
|
172
|
+
await expect(client.listPrompts()).rejects.toThrow("Server does not support prompts");
|
|
173
|
+
});
|
|
174
|
+
test("should respect client notification capabilities", async () => {
|
|
175
|
+
const server = new Server({
|
|
176
|
+
name: "test server",
|
|
177
|
+
version: "1.0",
|
|
178
|
+
}, {
|
|
179
|
+
capabilities: {},
|
|
180
|
+
});
|
|
181
|
+
const client = new Client({
|
|
182
|
+
name: "test client",
|
|
183
|
+
version: "1.0",
|
|
184
|
+
}, {
|
|
185
|
+
capabilities: {
|
|
186
|
+
roots: {
|
|
187
|
+
listChanged: true,
|
|
188
|
+
},
|
|
189
|
+
},
|
|
190
|
+
});
|
|
191
|
+
const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
|
|
192
|
+
await Promise.all([
|
|
193
|
+
client.connect(clientTransport),
|
|
194
|
+
server.connect(serverTransport),
|
|
195
|
+
]);
|
|
196
|
+
// This should work because the client has the roots.listChanged capability
|
|
197
|
+
await expect(client.sendRootsListChanged()).resolves.not.toThrow();
|
|
198
|
+
// Create a new client without the roots.listChanged capability
|
|
199
|
+
const clientWithoutCapability = new Client({
|
|
200
|
+
name: "test client without capability",
|
|
201
|
+
version: "1.0",
|
|
202
|
+
}, {
|
|
203
|
+
capabilities: {},
|
|
204
|
+
enforceStrictCapabilities: true,
|
|
205
|
+
});
|
|
206
|
+
await clientWithoutCapability.connect(clientTransport);
|
|
207
|
+
// This should throw because the client doesn't have the roots.listChanged capability
|
|
208
|
+
await expect(clientWithoutCapability.sendRootsListChanged()).rejects.toThrow(/^Client does not support/);
|
|
209
|
+
});
|
|
210
|
+
test("should respect server notification capabilities", async () => {
|
|
211
|
+
const server = new Server({
|
|
212
|
+
name: "test server",
|
|
213
|
+
version: "1.0",
|
|
214
|
+
}, {
|
|
215
|
+
capabilities: {
|
|
216
|
+
logging: {},
|
|
217
|
+
resources: {
|
|
218
|
+
listChanged: true,
|
|
219
|
+
},
|
|
220
|
+
},
|
|
221
|
+
});
|
|
222
|
+
const client = new Client({
|
|
223
|
+
name: "test client",
|
|
224
|
+
version: "1.0",
|
|
225
|
+
}, {
|
|
226
|
+
capabilities: {},
|
|
227
|
+
});
|
|
228
|
+
const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
|
|
229
|
+
await Promise.all([
|
|
230
|
+
client.connect(clientTransport),
|
|
231
|
+
server.connect(serverTransport),
|
|
232
|
+
]);
|
|
233
|
+
// These should work because the server has the corresponding capabilities
|
|
234
|
+
await expect(server.sendLoggingMessage({ level: "info", data: "Test" })).resolves.not.toThrow();
|
|
235
|
+
await expect(server.sendResourceListChanged()).resolves.not.toThrow();
|
|
236
|
+
// This should throw because the server doesn't have the tools capability
|
|
237
|
+
await expect(server.sendToolListChanged()).rejects.toThrow("Server does not support notifying of tool list changes");
|
|
238
|
+
});
|
|
239
|
+
test("should only allow setRequestHandler for declared capabilities", () => {
|
|
240
|
+
const client = new Client({
|
|
241
|
+
name: "test client",
|
|
242
|
+
version: "1.0",
|
|
243
|
+
}, {
|
|
244
|
+
capabilities: {
|
|
245
|
+
sampling: {},
|
|
246
|
+
},
|
|
247
|
+
});
|
|
248
|
+
// This should work because sampling is a declared capability
|
|
249
|
+
expect(() => {
|
|
250
|
+
client.setRequestHandler(CreateMessageRequestSchema, () => ({
|
|
251
|
+
model: "test-model",
|
|
252
|
+
role: "assistant",
|
|
253
|
+
content: {
|
|
254
|
+
type: "text",
|
|
255
|
+
text: "Test response",
|
|
256
|
+
},
|
|
257
|
+
}));
|
|
258
|
+
}).not.toThrow();
|
|
259
|
+
// This should throw because roots listing is not a declared capability
|
|
260
|
+
expect(() => {
|
|
261
|
+
client.setRequestHandler(ListRootsRequestSchema, () => ({}));
|
|
262
|
+
}).toThrow("Client does not support roots capability");
|
|
263
|
+
});
|
|
7
264
|
/*
|
|
8
|
-
Test that custom request/notification/result schemas can be used with the Client class.
|
|
9
|
-
*/
|
|
265
|
+
Test that custom request/notification/result schemas can be used with the Client class.
|
|
266
|
+
*/
|
|
10
267
|
test("should typecheck", () => {
|
|
11
268
|
const GetWeatherRequestSchema = RequestSchema.extend({
|
|
12
269
|
method: z.literal("weather/get"),
|
|
@@ -38,6 +295,10 @@ test("should typecheck", () => {
|
|
|
38
295
|
const weatherClient = new Client({
|
|
39
296
|
name: "WeatherClient",
|
|
40
297
|
version: "1.0.0",
|
|
298
|
+
}, {
|
|
299
|
+
capabilities: {
|
|
300
|
+
sampling: {},
|
|
301
|
+
},
|
|
41
302
|
});
|
|
42
303
|
// Typecheck that only valid weather requests/notifications/results are allowed
|
|
43
304
|
false &&
|
|
@@ -56,4 +317,41 @@ test("should typecheck", () => {
|
|
|
56
317
|
},
|
|
57
318
|
});
|
|
58
319
|
});
|
|
320
|
+
test("should handle client cancelling a request", async () => {
|
|
321
|
+
const server = new Server({
|
|
322
|
+
name: "test server",
|
|
323
|
+
version: "1.0",
|
|
324
|
+
}, {
|
|
325
|
+
capabilities: {
|
|
326
|
+
resources: {},
|
|
327
|
+
},
|
|
328
|
+
});
|
|
329
|
+
// Set up server to delay responding to listResources
|
|
330
|
+
server.setRequestHandler(ListResourcesRequestSchema, async (request, extra) => {
|
|
331
|
+
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
332
|
+
return {
|
|
333
|
+
resources: [],
|
|
334
|
+
};
|
|
335
|
+
});
|
|
336
|
+
const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
|
|
337
|
+
const client = new Client({
|
|
338
|
+
name: "test client",
|
|
339
|
+
version: "1.0",
|
|
340
|
+
}, {
|
|
341
|
+
capabilities: {},
|
|
342
|
+
});
|
|
343
|
+
await Promise.all([
|
|
344
|
+
client.connect(clientTransport),
|
|
345
|
+
server.connect(serverTransport),
|
|
346
|
+
]);
|
|
347
|
+
// Set up abort controller
|
|
348
|
+
const controller = new AbortController();
|
|
349
|
+
// Issue request but cancel it immediately
|
|
350
|
+
const listResourcesPromise = client.listResources(undefined, {
|
|
351
|
+
signal: controller.signal,
|
|
352
|
+
});
|
|
353
|
+
controller.abort("Cancelled by test");
|
|
354
|
+
// Request should be rejected
|
|
355
|
+
await expect(listResourcesPromise).rejects.toBe("Cancelled by test");
|
|
356
|
+
});
|
|
59
357
|
//# sourceMappingURL=index.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/client/index.test.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,kDAAkD;AAClD,6DAA6D;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/client/index.test.ts"],"names":[],"mappings":"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"}
|
package/dist/client/stdio.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { JSONRPCMessage } from "../types.js";
|
|
2
2
|
import { Transport } from "../shared/transport.js";
|
|
3
|
+
import { Stream } from "node:stream";
|
|
3
4
|
export type StdioServerParameters = {
|
|
4
5
|
/**
|
|
5
6
|
* The executable to run to start the server.
|
|
@@ -15,6 +16,12 @@ export type StdioServerParameters = {
|
|
|
15
16
|
* If not specified, the result of getDefaultEnvironment() will be used.
|
|
16
17
|
*/
|
|
17
18
|
env?: Record<string, string>;
|
|
19
|
+
/**
|
|
20
|
+
* How to handle stderr of the child process. This matches the semantics of Node's `child_process.spawn`.
|
|
21
|
+
*
|
|
22
|
+
* The default is "inherit", meaning messages to stderr will be printed to the parent process's stderr.
|
|
23
|
+
*/
|
|
24
|
+
stderr?: "inherit" | "ignore" | Stream;
|
|
18
25
|
};
|
|
19
26
|
/**
|
|
20
27
|
* Environment variables to inherit by default, if an environment is not explicitly given.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdio.d.ts","sourceRoot":"","sources":["../../src/client/stdio.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"stdio.d.ts","sourceRoot":"","sources":["../../src/client/stdio.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,MAAM,qBAAqB,GAAG;IAClC;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE7B;;;;OAIG;IACH,MAAM,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;CACxC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B,UAgBmB,CAAC;AAE3D;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkB9D;AAED;;;;GAIG;AACH,qBAAa,oBAAqB,YAAW,SAAS;IACpD,OAAO,CAAC,QAAQ,CAAC,CAAe;IAChC,OAAO,CAAC,gBAAgB,CAA0C;IAClE,OAAO,CAAC,WAAW,CAAgC;IACnD,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;gBAElC,MAAM,EAAE,qBAAqB;IAIzC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAsD5B,OAAO,CAAC,iBAAiB;IAenB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CAc7C"}
|
package/dist/client/stdio.js
CHANGED
|
@@ -57,10 +57,11 @@ export class StdioClientTransport {
|
|
|
57
57
|
throw new Error("StdioClientTransport already started! If using Client class, note that connect() calls start() automatically.");
|
|
58
58
|
}
|
|
59
59
|
return new Promise((resolve, reject) => {
|
|
60
|
-
var _a, _b, _c, _d, _e;
|
|
60
|
+
var _a, _b, _c, _d, _e, _f;
|
|
61
61
|
this._process = spawn(this._serverParams.command, (_a = this._serverParams.args) !== null && _a !== void 0 ? _a : [], {
|
|
62
62
|
env: (_b = this._serverParams.env) !== null && _b !== void 0 ? _b : getDefaultEnvironment(),
|
|
63
|
-
stdio: ["pipe", "pipe", "inherit"],
|
|
63
|
+
stdio: ["pipe", "pipe", (_c = this._serverParams.stderr) !== null && _c !== void 0 ? _c : "inherit"],
|
|
64
|
+
shell: false,
|
|
64
65
|
signal: this._abortController.signal,
|
|
65
66
|
});
|
|
66
67
|
this._process.on("error", (error) => {
|
|
@@ -81,15 +82,15 @@ export class StdioClientTransport {
|
|
|
81
82
|
this._process = undefined;
|
|
82
83
|
(_a = this.onclose) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
83
84
|
});
|
|
84
|
-
(
|
|
85
|
+
(_d = this._process.stdin) === null || _d === void 0 ? void 0 : _d.on("error", (error) => {
|
|
85
86
|
var _a;
|
|
86
87
|
(_a = this.onerror) === null || _a === void 0 ? void 0 : _a.call(this, error);
|
|
87
88
|
});
|
|
88
|
-
(
|
|
89
|
+
(_e = this._process.stdout) === null || _e === void 0 ? void 0 : _e.on("data", (chunk) => {
|
|
89
90
|
this._readBuffer.append(chunk);
|
|
90
91
|
this.processReadBuffer();
|
|
91
92
|
});
|
|
92
|
-
(
|
|
93
|
+
(_f = this._process.stdout) === null || _f === void 0 ? void 0 : _f.on("error", (error) => {
|
|
93
94
|
var _a;
|
|
94
95
|
(_a = this.onerror) === null || _a === void 0 ? void 0 : _a.call(this, error);
|
|
95
96
|
});
|
package/dist/client/stdio.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdio.js","sourceRoot":"","sources":["../../src/client/stdio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"stdio.js","sourceRoot":"","sources":["../../src/client/stdio.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Transport } from "./shared/transport.js";
|
|
2
|
+
import { JSONRPCMessage } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* In-memory transport for creating clients and servers that talk to each other within the same process.
|
|
5
|
+
*/
|
|
6
|
+
export declare class InMemoryTransport implements Transport {
|
|
7
|
+
private _otherTransport?;
|
|
8
|
+
private _messageQueue;
|
|
9
|
+
onclose?: () => void;
|
|
10
|
+
onerror?: (error: Error) => void;
|
|
11
|
+
onmessage?: (message: JSONRPCMessage) => void;
|
|
12
|
+
/**
|
|
13
|
+
* 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.
|
|
14
|
+
*/
|
|
15
|
+
static createLinkedPair(): [InMemoryTransport, InMemoryTransport];
|
|
16
|
+
start(): Promise<void>;
|
|
17
|
+
close(): Promise<void>;
|
|
18
|
+
send(message: JSONRPCMessage): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=inMemory.d.ts.map
|
|
@@ -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"}
|
package/dist/inMemory.js
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-memory transport for creating clients and servers that talk to each other within the same process.
|
|
3
|
+
*/
|
|
4
|
+
export class InMemoryTransport {
|
|
5
|
+
constructor() {
|
|
6
|
+
this._messageQueue = [];
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* 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.
|
|
10
|
+
*/
|
|
11
|
+
static createLinkedPair() {
|
|
12
|
+
const clientTransport = new InMemoryTransport();
|
|
13
|
+
const serverTransport = new InMemoryTransport();
|
|
14
|
+
clientTransport._otherTransport = serverTransport;
|
|
15
|
+
serverTransport._otherTransport = clientTransport;
|
|
16
|
+
return [clientTransport, serverTransport];
|
|
17
|
+
}
|
|
18
|
+
async start() {
|
|
19
|
+
var _a;
|
|
20
|
+
// Process any messages that were queued before start was called
|
|
21
|
+
while (this._messageQueue.length > 0) {
|
|
22
|
+
const message = this._messageQueue.shift();
|
|
23
|
+
if (message) {
|
|
24
|
+
(_a = this.onmessage) === null || _a === void 0 ? void 0 : _a.call(this, message);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
async close() {
|
|
29
|
+
var _a;
|
|
30
|
+
const other = this._otherTransport;
|
|
31
|
+
this._otherTransport = undefined;
|
|
32
|
+
await (other === null || other === void 0 ? void 0 : other.close());
|
|
33
|
+
(_a = this.onclose) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
34
|
+
}
|
|
35
|
+
async send(message) {
|
|
36
|
+
if (!this._otherTransport) {
|
|
37
|
+
throw new Error("Not connected");
|
|
38
|
+
}
|
|
39
|
+
if (this._otherTransport.onmessage) {
|
|
40
|
+
this._otherTransport.onmessage(message);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
this._otherTransport._messageQueue.push(message);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=inMemory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inMemory.js","sourceRoot":"","sources":["../src/inMemory.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,OAAO,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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inMemory.test.d.ts","sourceRoot":"","sources":["../src/inMemory.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { InMemoryTransport } from "./inMemory.js";
|
|
2
|
+
describe("InMemoryTransport", () => {
|
|
3
|
+
let clientTransport;
|
|
4
|
+
let serverTransport;
|
|
5
|
+
beforeEach(() => {
|
|
6
|
+
[clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
|
|
7
|
+
});
|
|
8
|
+
test("should create linked pair", () => {
|
|
9
|
+
expect(clientTransport).toBeDefined();
|
|
10
|
+
expect(serverTransport).toBeDefined();
|
|
11
|
+
});
|
|
12
|
+
test("should start without error", async () => {
|
|
13
|
+
await expect(clientTransport.start()).resolves.not.toThrow();
|
|
14
|
+
await expect(serverTransport.start()).resolves.not.toThrow();
|
|
15
|
+
});
|
|
16
|
+
test("should send message from client to server", async () => {
|
|
17
|
+
const message = {
|
|
18
|
+
jsonrpc: "2.0",
|
|
19
|
+
method: "test",
|
|
20
|
+
id: 1,
|
|
21
|
+
};
|
|
22
|
+
let receivedMessage;
|
|
23
|
+
serverTransport.onmessage = (msg) => {
|
|
24
|
+
receivedMessage = msg;
|
|
25
|
+
};
|
|
26
|
+
await clientTransport.send(message);
|
|
27
|
+
expect(receivedMessage).toEqual(message);
|
|
28
|
+
});
|
|
29
|
+
test("should send message from server to client", async () => {
|
|
30
|
+
const message = {
|
|
31
|
+
jsonrpc: "2.0",
|
|
32
|
+
method: "test",
|
|
33
|
+
id: 1,
|
|
34
|
+
};
|
|
35
|
+
let receivedMessage;
|
|
36
|
+
clientTransport.onmessage = (msg) => {
|
|
37
|
+
receivedMessage = msg;
|
|
38
|
+
};
|
|
39
|
+
await serverTransport.send(message);
|
|
40
|
+
expect(receivedMessage).toEqual(message);
|
|
41
|
+
});
|
|
42
|
+
test("should handle close", async () => {
|
|
43
|
+
let clientClosed = false;
|
|
44
|
+
let serverClosed = false;
|
|
45
|
+
clientTransport.onclose = () => {
|
|
46
|
+
clientClosed = true;
|
|
47
|
+
};
|
|
48
|
+
serverTransport.onclose = () => {
|
|
49
|
+
serverClosed = true;
|
|
50
|
+
};
|
|
51
|
+
await clientTransport.close();
|
|
52
|
+
expect(clientClosed).toBe(true);
|
|
53
|
+
expect(serverClosed).toBe(true);
|
|
54
|
+
});
|
|
55
|
+
test("should throw error when sending after close", async () => {
|
|
56
|
+
await clientTransport.close();
|
|
57
|
+
await expect(clientTransport.send({ jsonrpc: "2.0", method: "test", id: 1 })).rejects.toThrow("Not connected");
|
|
58
|
+
});
|
|
59
|
+
test("should queue messages sent before start", async () => {
|
|
60
|
+
const message = {
|
|
61
|
+
jsonrpc: "2.0",
|
|
62
|
+
method: "test",
|
|
63
|
+
id: 1,
|
|
64
|
+
};
|
|
65
|
+
let receivedMessage;
|
|
66
|
+
serverTransport.onmessage = (msg) => {
|
|
67
|
+
receivedMessage = msg;
|
|
68
|
+
};
|
|
69
|
+
await clientTransport.send(message);
|
|
70
|
+
await serverTransport.start();
|
|
71
|
+
expect(receivedMessage).toEqual(message);
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
//# sourceMappingURL=inMemory.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inMemory.test.js","sourceRoot":"","sources":["../src/inMemory.test.ts"],"names":[],"mappings":"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"}
|
package/dist/server/index.d.ts
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ClientCapabilities, CreateMessageRequest, Implementation, ListRootsRequest, LoggingMessageNotification, Notification, Request, ResourceUpdatedNotification, Result, ServerNotification, ServerRequest, ServerResult } from "../types.js";
|
|
1
|
+
import { Protocol, ProtocolOptions, RequestOptions } from "../shared/protocol.js";
|
|
2
|
+
import { ClientCapabilities, CreateMessageRequest, Implementation, ListRootsRequest, LoggingMessageNotification, Notification, Request, ResourceUpdatedNotification, Result, ServerCapabilities, ServerNotification, ServerRequest, ServerResult } from "../types.js";
|
|
3
|
+
export type ServerOptions = ProtocolOptions & {
|
|
4
|
+
/**
|
|
5
|
+
* Capabilities to advertise as being supported by this server.
|
|
6
|
+
*/
|
|
7
|
+
capabilities: ServerCapabilities;
|
|
8
|
+
};
|
|
3
9
|
/**
|
|
4
10
|
* An MCP server on top of a pluggable transport.
|
|
5
11
|
*
|
|
@@ -29,6 +35,7 @@ export declare class Server<RequestT extends Request = Request, NotificationT ex
|
|
|
29
35
|
private _serverInfo;
|
|
30
36
|
private _clientCapabilities?;
|
|
31
37
|
private _clientVersion?;
|
|
38
|
+
private _capabilities;
|
|
32
39
|
/**
|
|
33
40
|
* Callback for when initialization has fully completed (i.e., the client has sent an `initialized` notification).
|
|
34
41
|
*/
|
|
@@ -36,7 +43,10 @@ export declare class Server<RequestT extends Request = Request, NotificationT ex
|
|
|
36
43
|
/**
|
|
37
44
|
* Initializes this server with the given name and version information.
|
|
38
45
|
*/
|
|
39
|
-
constructor(_serverInfo: Implementation);
|
|
46
|
+
constructor(_serverInfo: Implementation, options: ServerOptions);
|
|
47
|
+
protected assertCapabilityForMethod(method: RequestT["method"]): void;
|
|
48
|
+
protected assertNotificationCapability(method: (ServerNotification | NotificationT)["method"]): void;
|
|
49
|
+
protected assertRequestHandlerCapability(method: string): void;
|
|
40
50
|
private _oninitialize;
|
|
41
51
|
/**
|
|
42
52
|
* After initialization has completed, this will be populated with the client's reported capabilities.
|
|
@@ -50,7 +60,7 @@ export declare class Server<RequestT extends Request = Request, NotificationT ex
|
|
|
50
60
|
ping(): Promise<{
|
|
51
61
|
_meta?: import("zod").objectOutputType<{}, import("zod").ZodTypeAny, "passthrough"> | undefined;
|
|
52
62
|
}>;
|
|
53
|
-
createMessage(params: CreateMessageRequest["params"],
|
|
63
|
+
createMessage(params: CreateMessageRequest["params"], options?: RequestOptions): Promise<import("zod").objectOutputType<import("zod").objectUtil.extendShape<{
|
|
54
64
|
_meta: import("zod").ZodOptional<import("zod").ZodObject<{}, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{}, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{}, import("zod").ZodTypeAny, "passthrough">>>;
|
|
55
65
|
}, {
|
|
56
66
|
model: import("zod").ZodString;
|
|
@@ -79,7 +89,7 @@ export declare class Server<RequestT extends Request = Request, NotificationT ex
|
|
|
79
89
|
mimeType: import("zod").ZodString;
|
|
80
90
|
}, import("zod").ZodTypeAny, "passthrough">>]>;
|
|
81
91
|
}>, import("zod").ZodTypeAny, "passthrough">>;
|
|
82
|
-
listRoots(params?: ListRootsRequest["params"],
|
|
92
|
+
listRoots(params?: ListRootsRequest["params"], options?: RequestOptions): Promise<import("zod").objectOutputType<import("zod").objectUtil.extendShape<{
|
|
83
93
|
_meta: import("zod").ZodOptional<import("zod").ZodObject<{}, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{}, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{}, import("zod").ZodTypeAny, "passthrough">>>;
|
|
84
94
|
}, {
|
|
85
95
|
roots: import("zod").ZodArray<import("zod").ZodObject<{
|