@modelcontextprotocol/sdk 1.1.1 → 1.3.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.
Files changed (157) hide show
  1. package/README.md +358 -58
  2. package/dist/cjs/cli.d.ts.map +1 -0
  3. package/dist/cjs/cli.js +134 -0
  4. package/dist/cjs/cli.js.map +1 -0
  5. package/dist/{client → cjs/client}/index.d.ts +8 -2
  6. package/dist/cjs/client/index.d.ts.map +1 -0
  7. package/dist/cjs/client/index.js +222 -0
  8. package/dist/cjs/client/index.js.map +1 -0
  9. package/dist/cjs/client/sse.d.ts.map +1 -0
  10. package/dist/cjs/client/sse.js +99 -0
  11. package/dist/cjs/client/sse.js.map +1 -0
  12. package/dist/cjs/client/stdio.d.ts.map +1 -0
  13. package/dist/cjs/client/stdio.js +156 -0
  14. package/dist/cjs/client/stdio.js.map +1 -0
  15. package/dist/cjs/client/websocket.d.ts.map +1 -0
  16. package/dist/cjs/client/websocket.js +65 -0
  17. package/dist/cjs/client/websocket.js.map +1 -0
  18. package/dist/cjs/inMemory.d.ts.map +1 -0
  19. package/dist/cjs/inMemory.js +51 -0
  20. package/dist/cjs/inMemory.js.map +1 -0
  21. package/dist/cjs/package.json +1 -0
  22. package/dist/cjs/server/completable.d.ts +22 -0
  23. package/dist/cjs/server/completable.d.ts.map +1 -0
  24. package/dist/cjs/server/completable.js +65 -0
  25. package/dist/cjs/server/completable.js.map +1 -0
  26. package/dist/{server → cjs/server}/index.d.ts +13 -2
  27. package/dist/cjs/server/index.d.ts.map +1 -0
  28. package/dist/cjs/server/index.js +200 -0
  29. package/dist/cjs/server/index.js.map +1 -0
  30. package/dist/cjs/server/mcp.d.ts +150 -0
  31. package/dist/cjs/server/mcp.d.ts.map +1 -0
  32. package/dist/cjs/server/mcp.js +365 -0
  33. package/dist/cjs/server/mcp.js.map +1 -0
  34. package/dist/cjs/server/sse.d.ts.map +1 -0
  35. package/dist/cjs/server/sse.js +123 -0
  36. package/dist/cjs/server/sse.js.map +1 -0
  37. package/dist/cjs/server/stdio.d.ts.map +1 -0
  38. package/dist/cjs/server/stdio.js +85 -0
  39. package/dist/cjs/server/stdio.js.map +1 -0
  40. package/dist/{shared → cjs/shared}/protocol.d.ts +6 -1
  41. package/dist/cjs/shared/protocol.d.ts.map +1 -0
  42. package/dist/cjs/shared/protocol.js +321 -0
  43. package/dist/cjs/shared/protocol.js.map +1 -0
  44. package/dist/cjs/shared/stdio.d.ts.map +1 -0
  45. package/dist/cjs/shared/stdio.js +37 -0
  46. package/dist/cjs/shared/stdio.js.map +1 -0
  47. package/dist/cjs/shared/transport.d.ts.map +1 -0
  48. package/dist/cjs/shared/transport.js +3 -0
  49. package/dist/{shared → cjs/shared}/transport.js.map +1 -1
  50. package/dist/cjs/shared/uriTemplate.d.ts +24 -0
  51. package/dist/cjs/shared/uriTemplate.d.ts.map +1 -0
  52. package/dist/cjs/shared/uriTemplate.js +242 -0
  53. package/dist/cjs/shared/uriTemplate.js.map +1 -0
  54. package/dist/cjs/types.d.ts.map +1 -0
  55. package/dist/cjs/types.js +1002 -0
  56. package/dist/cjs/types.js.map +1 -0
  57. package/dist/esm/cli.d.ts +2 -0
  58. package/dist/esm/cli.d.ts.map +1 -0
  59. package/dist/esm/cli.js.map +1 -0
  60. package/dist/esm/client/index.d.ts +779 -0
  61. package/dist/esm/client/index.d.ts.map +1 -0
  62. package/dist/{client → esm/client}/index.js +14 -2
  63. package/dist/esm/client/index.js.map +1 -0
  64. package/dist/esm/client/sse.d.ts +27 -0
  65. package/dist/esm/client/sse.d.ts.map +1 -0
  66. package/dist/esm/client/sse.js.map +1 -0
  67. package/dist/esm/client/stdio.d.ts +63 -0
  68. package/dist/esm/client/stdio.d.ts.map +1 -0
  69. package/dist/esm/client/stdio.js.map +1 -0
  70. package/dist/esm/client/websocket.d.ts +17 -0
  71. package/dist/esm/client/websocket.d.ts.map +1 -0
  72. package/dist/esm/client/websocket.js.map +1 -0
  73. package/dist/esm/inMemory.d.ts +20 -0
  74. package/dist/esm/inMemory.d.ts.map +1 -0
  75. package/dist/esm/inMemory.js.map +1 -0
  76. package/dist/esm/package.json +1 -0
  77. package/dist/esm/server/completable.d.ts +22 -0
  78. package/dist/esm/server/completable.d.ts.map +1 -0
  79. package/dist/esm/server/completable.js +60 -0
  80. package/dist/esm/server/completable.js.map +1 -0
  81. package/dist/esm/server/index.d.ts +123 -0
  82. package/dist/esm/server/index.d.ts.map +1 -0
  83. package/dist/{server → esm/server}/index.js +16 -2
  84. package/dist/esm/server/index.js.map +1 -0
  85. package/dist/esm/server/mcp.d.ts +150 -0
  86. package/dist/esm/server/mcp.d.ts.map +1 -0
  87. package/dist/esm/server/mcp.js +360 -0
  88. package/dist/esm/server/mcp.js.map +1 -0
  89. package/dist/esm/server/sse.d.ts +46 -0
  90. package/dist/esm/server/sse.d.ts.map +1 -0
  91. package/dist/esm/server/sse.js.map +1 -0
  92. package/dist/esm/server/stdio.d.ts +28 -0
  93. package/dist/esm/server/stdio.d.ts.map +1 -0
  94. package/dist/esm/server/stdio.js.map +1 -0
  95. package/dist/esm/shared/protocol.d.ts +162 -0
  96. package/dist/esm/shared/protocol.d.ts.map +1 -0
  97. package/dist/{shared → esm/shared}/protocol.js +19 -0
  98. package/dist/esm/shared/protocol.js.map +1 -0
  99. package/dist/esm/shared/stdio.d.ts +13 -0
  100. package/dist/esm/shared/stdio.d.ts.map +1 -0
  101. package/dist/esm/shared/stdio.js.map +1 -0
  102. package/dist/esm/shared/transport.d.ts +39 -0
  103. package/dist/esm/shared/transport.d.ts.map +1 -0
  104. package/dist/esm/shared/transport.js.map +1 -0
  105. package/dist/esm/shared/uriTemplate.d.ts +24 -0
  106. package/dist/esm/shared/uriTemplate.d.ts.map +1 -0
  107. package/dist/esm/shared/uriTemplate.js +238 -0
  108. package/dist/esm/shared/uriTemplate.js.map +1 -0
  109. package/dist/esm/types.d.ts +26431 -0
  110. package/dist/esm/types.d.ts.map +1 -0
  111. package/dist/esm/types.js.map +1 -0
  112. package/package.json +12 -6
  113. package/dist/cli.d.ts.map +0 -1
  114. package/dist/cli.js.map +0 -1
  115. package/dist/client/index.d.ts.map +0 -1
  116. package/dist/client/index.js.map +0 -1
  117. package/dist/client/sse.d.ts.map +0 -1
  118. package/dist/client/sse.js.map +0 -1
  119. package/dist/client/stdio.d.ts.map +0 -1
  120. package/dist/client/stdio.js.map +0 -1
  121. package/dist/client/websocket.d.ts.map +0 -1
  122. package/dist/client/websocket.js.map +0 -1
  123. package/dist/inMemory.d.ts.map +0 -1
  124. package/dist/inMemory.js.map +0 -1
  125. package/dist/server/index.d.ts.map +0 -1
  126. package/dist/server/index.js.map +0 -1
  127. package/dist/server/sse.d.ts.map +0 -1
  128. package/dist/server/sse.js.map +0 -1
  129. package/dist/server/stdio.d.ts.map +0 -1
  130. package/dist/server/stdio.js.map +0 -1
  131. package/dist/shared/protocol.d.ts.map +0 -1
  132. package/dist/shared/protocol.js.map +0 -1
  133. package/dist/shared/stdio.d.ts.map +0 -1
  134. package/dist/shared/stdio.js.map +0 -1
  135. package/dist/shared/transport.d.ts.map +0 -1
  136. package/dist/types.d.ts.map +0 -1
  137. package/dist/types.js.map +0 -1
  138. /package/dist/{cli.d.ts → cjs/cli.d.ts} +0 -0
  139. /package/dist/{client → cjs/client}/sse.d.ts +0 -0
  140. /package/dist/{client → cjs/client}/stdio.d.ts +0 -0
  141. /package/dist/{client → cjs/client}/websocket.d.ts +0 -0
  142. /package/dist/{inMemory.d.ts → cjs/inMemory.d.ts} +0 -0
  143. /package/dist/{server → cjs/server}/sse.d.ts +0 -0
  144. /package/dist/{server → cjs/server}/stdio.d.ts +0 -0
  145. /package/dist/{shared → cjs/shared}/stdio.d.ts +0 -0
  146. /package/dist/{shared → cjs/shared}/transport.d.ts +0 -0
  147. /package/dist/{types.d.ts → cjs/types.d.ts} +0 -0
  148. /package/dist/{cli.js → esm/cli.js} +0 -0
  149. /package/dist/{client → esm/client}/sse.js +0 -0
  150. /package/dist/{client → esm/client}/stdio.js +0 -0
  151. /package/dist/{client → esm/client}/websocket.js +0 -0
  152. /package/dist/{inMemory.js → esm/inMemory.js} +0 -0
  153. /package/dist/{server → esm/server}/sse.js +0 -0
  154. /package/dist/{server → esm/server}/stdio.js +0 -0
  155. /package/dist/{shared → esm/shared}/stdio.js +0 -0
  156. /package/dist/{shared → esm/shared}/transport.js +0 -0
  157. /package/dist/{types.js → esm/types.js} +0 -0
@@ -0,0 +1,365 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ResourceTemplate = exports.McpServer = void 0;
4
+ const index_js_1 = require("./index.js");
5
+ const zod_to_json_schema_1 = require("zod-to-json-schema");
6
+ const zod_1 = require("zod");
7
+ const types_js_1 = require("../types.js");
8
+ const completable_js_1 = require("./completable.js");
9
+ const uriTemplate_js_1 = require("../shared/uriTemplate.js");
10
+ /**
11
+ * High-level MCP server that provides a simpler API for working with resources, tools, and prompts.
12
+ * For advanced usage (like sending notifications or setting custom request handlers), use the underlying
13
+ * Server instance available via the `server` property.
14
+ */
15
+ class McpServer {
16
+ constructor(serverInfo, options) {
17
+ this._registeredResources = {};
18
+ this._registeredResourceTemplates = {};
19
+ this._registeredTools = {};
20
+ this._registeredPrompts = {};
21
+ this.server = new index_js_1.Server(serverInfo, options);
22
+ }
23
+ /**
24
+ * Attaches to the given transport, starts it, and starts listening for messages.
25
+ *
26
+ * The `server` object assumes ownership of the Transport, replacing any callbacks that have already been set, and expects that it is the only user of the Transport instance going forward.
27
+ */
28
+ async connect(transport) {
29
+ return await this.server.connect(transport);
30
+ }
31
+ /**
32
+ * Closes the connection.
33
+ */
34
+ async close() {
35
+ await this.server.close();
36
+ }
37
+ setToolRequestHandlers() {
38
+ this.server.assertCanSetRequestHandler(types_js_1.ListToolsRequestSchema.shape.method.value);
39
+ this.server.assertCanSetRequestHandler(types_js_1.CallToolRequestSchema.shape.method.value);
40
+ this.server.registerCapabilities({
41
+ tools: {},
42
+ });
43
+ this.server.setRequestHandler(types_js_1.ListToolsRequestSchema, () => ({
44
+ tools: Object.entries(this._registeredTools).map(([name, tool]) => {
45
+ return {
46
+ name,
47
+ description: tool.description,
48
+ inputSchema: tool.inputSchema
49
+ ? (0, zod_to_json_schema_1.zodToJsonSchema)(tool.inputSchema)
50
+ : EMPTY_OBJECT_JSON_SCHEMA,
51
+ };
52
+ }),
53
+ }));
54
+ this.server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request, extra) => {
55
+ const tool = this._registeredTools[request.params.name];
56
+ if (!tool) {
57
+ throw new types_js_1.McpError(types_js_1.ErrorCode.InvalidParams, `Tool ${request.params.name} not found`);
58
+ }
59
+ if (tool.inputSchema) {
60
+ const parseResult = await tool.inputSchema.safeParseAsync(request.params.arguments);
61
+ if (!parseResult.success) {
62
+ throw new types_js_1.McpError(types_js_1.ErrorCode.InvalidParams, `Invalid arguments for tool ${request.params.name}: ${parseResult.error.message}`);
63
+ }
64
+ const args = parseResult.data;
65
+ const cb = tool.callback;
66
+ try {
67
+ return await Promise.resolve(cb(args, extra));
68
+ }
69
+ catch (error) {
70
+ return {
71
+ content: [
72
+ {
73
+ type: "text",
74
+ text: error instanceof Error ? error.message : String(error),
75
+ },
76
+ ],
77
+ isError: true,
78
+ };
79
+ }
80
+ }
81
+ else {
82
+ const cb = tool.callback;
83
+ try {
84
+ return await Promise.resolve(cb(extra));
85
+ }
86
+ catch (error) {
87
+ return {
88
+ content: [
89
+ {
90
+ type: "text",
91
+ text: error instanceof Error ? error.message : String(error),
92
+ },
93
+ ],
94
+ isError: true,
95
+ };
96
+ }
97
+ }
98
+ });
99
+ }
100
+ setCompletionRequestHandler() {
101
+ this.server.assertCanSetRequestHandler(types_js_1.CompleteRequestSchema.shape.method.value);
102
+ this.server.setRequestHandler(types_js_1.CompleteRequestSchema, async (request) => {
103
+ switch (request.params.ref.type) {
104
+ case "ref/prompt":
105
+ return this.handlePromptCompletion(request, request.params.ref);
106
+ case "ref/resource":
107
+ return this.handleResourceCompletion(request, request.params.ref);
108
+ default:
109
+ throw new types_js_1.McpError(types_js_1.ErrorCode.InvalidParams, `Invalid completion reference: ${request.params.ref}`);
110
+ }
111
+ });
112
+ }
113
+ async handlePromptCompletion(request, ref) {
114
+ const prompt = this._registeredPrompts[ref.name];
115
+ if (!prompt) {
116
+ throw new types_js_1.McpError(types_js_1.ErrorCode.InvalidParams, `Prompt ${request.params.ref.name} not found`);
117
+ }
118
+ if (!prompt.argsSchema) {
119
+ return EMPTY_COMPLETION_RESULT;
120
+ }
121
+ const field = prompt.argsSchema.shape[request.params.argument.name];
122
+ if (!(field instanceof completable_js_1.Completable)) {
123
+ return EMPTY_COMPLETION_RESULT;
124
+ }
125
+ const def = field._def;
126
+ const suggestions = await def.complete(request.params.argument.value);
127
+ return createCompletionResult(suggestions);
128
+ }
129
+ async handleResourceCompletion(request, ref) {
130
+ const template = Object.values(this._registeredResourceTemplates).find((t) => t.resourceTemplate.uriTemplate.toString() === ref.uri);
131
+ if (!template) {
132
+ if (this._registeredResources[ref.uri]) {
133
+ // Attempting to autocomplete a fixed resource URI is not an error in the spec (but probably should be).
134
+ return EMPTY_COMPLETION_RESULT;
135
+ }
136
+ throw new types_js_1.McpError(types_js_1.ErrorCode.InvalidParams, `Resource template ${request.params.ref.uri} not found`);
137
+ }
138
+ const completer = template.resourceTemplate.completeCallback(request.params.argument.name);
139
+ if (!completer) {
140
+ return EMPTY_COMPLETION_RESULT;
141
+ }
142
+ const suggestions = await completer(request.params.argument.value);
143
+ return createCompletionResult(suggestions);
144
+ }
145
+ setResourceRequestHandlers() {
146
+ this.server.assertCanSetRequestHandler(types_js_1.ListResourcesRequestSchema.shape.method.value);
147
+ this.server.assertCanSetRequestHandler(types_js_1.ListResourceTemplatesRequestSchema.shape.method.value);
148
+ this.server.assertCanSetRequestHandler(types_js_1.ReadResourceRequestSchema.shape.method.value);
149
+ this.server.registerCapabilities({
150
+ resources: {},
151
+ });
152
+ this.server.setRequestHandler(types_js_1.ListResourcesRequestSchema, async (request, extra) => {
153
+ const resources = Object.entries(this._registeredResources).map(([uri, resource]) => ({
154
+ uri,
155
+ name: resource.name,
156
+ ...resource.metadata,
157
+ }));
158
+ const templateResources = [];
159
+ for (const template of Object.values(this._registeredResourceTemplates)) {
160
+ if (!template.resourceTemplate.listCallback) {
161
+ continue;
162
+ }
163
+ const result = await template.resourceTemplate.listCallback(extra);
164
+ for (const resource of result.resources) {
165
+ templateResources.push({
166
+ ...resource,
167
+ ...template.metadata,
168
+ });
169
+ }
170
+ }
171
+ return { resources: [...resources, ...templateResources] };
172
+ });
173
+ this.server.setRequestHandler(types_js_1.ListResourceTemplatesRequestSchema, async () => {
174
+ const resourceTemplates = Object.entries(this._registeredResourceTemplates).map(([name, template]) => ({
175
+ name,
176
+ uriTemplate: template.resourceTemplate.uriTemplate.toString(),
177
+ ...template.metadata,
178
+ }));
179
+ return { resourceTemplates };
180
+ });
181
+ this.server.setRequestHandler(types_js_1.ReadResourceRequestSchema, async (request, extra) => {
182
+ const uri = new URL(request.params.uri);
183
+ // First check for exact resource match
184
+ const resource = this._registeredResources[uri.toString()];
185
+ if (resource) {
186
+ return resource.readCallback(uri, extra);
187
+ }
188
+ // Then check templates
189
+ for (const template of Object.values(this._registeredResourceTemplates)) {
190
+ const variables = template.resourceTemplate.uriTemplate.match(uri.toString());
191
+ if (variables) {
192
+ return template.readCallback(uri, variables, extra);
193
+ }
194
+ }
195
+ throw new types_js_1.McpError(types_js_1.ErrorCode.InvalidParams, `Resource ${uri} not found`);
196
+ });
197
+ this.setCompletionRequestHandler();
198
+ }
199
+ setPromptRequestHandlers() {
200
+ this.server.assertCanSetRequestHandler(types_js_1.ListPromptsRequestSchema.shape.method.value);
201
+ this.server.assertCanSetRequestHandler(types_js_1.GetPromptRequestSchema.shape.method.value);
202
+ this.server.registerCapabilities({
203
+ prompts: {},
204
+ });
205
+ this.server.setRequestHandler(types_js_1.ListPromptsRequestSchema, () => ({
206
+ prompts: Object.entries(this._registeredPrompts).map(([name, prompt]) => {
207
+ return {
208
+ name,
209
+ description: prompt.description,
210
+ arguments: prompt.argsSchema
211
+ ? promptArgumentsFromSchema(prompt.argsSchema)
212
+ : undefined,
213
+ };
214
+ }),
215
+ }));
216
+ this.server.setRequestHandler(types_js_1.GetPromptRequestSchema, async (request, extra) => {
217
+ const prompt = this._registeredPrompts[request.params.name];
218
+ if (!prompt) {
219
+ throw new types_js_1.McpError(types_js_1.ErrorCode.InvalidParams, `Prompt ${request.params.name} not found`);
220
+ }
221
+ if (prompt.argsSchema) {
222
+ const parseResult = await prompt.argsSchema.safeParseAsync(request.params.arguments);
223
+ if (!parseResult.success) {
224
+ throw new types_js_1.McpError(types_js_1.ErrorCode.InvalidParams, `Invalid arguments for prompt ${request.params.name}: ${parseResult.error.message}`);
225
+ }
226
+ const args = parseResult.data;
227
+ const cb = prompt.callback;
228
+ return await Promise.resolve(cb(args, extra));
229
+ }
230
+ else {
231
+ const cb = prompt.callback;
232
+ return await Promise.resolve(cb(extra));
233
+ }
234
+ });
235
+ this.setCompletionRequestHandler();
236
+ }
237
+ resource(name, uriOrTemplate, ...rest) {
238
+ let metadata;
239
+ if (typeof rest[0] === "object") {
240
+ metadata = rest.shift();
241
+ }
242
+ const readCallback = rest[0];
243
+ if (typeof uriOrTemplate === "string") {
244
+ if (this._registeredResources[uriOrTemplate]) {
245
+ throw new Error(`Resource ${uriOrTemplate} is already registered`);
246
+ }
247
+ this._registeredResources[uriOrTemplate] = {
248
+ name,
249
+ metadata,
250
+ readCallback: readCallback,
251
+ };
252
+ }
253
+ else {
254
+ if (this._registeredResourceTemplates[name]) {
255
+ throw new Error(`Resource template ${name} is already registered`);
256
+ }
257
+ this._registeredResourceTemplates[name] = {
258
+ resourceTemplate: uriOrTemplate,
259
+ metadata,
260
+ readCallback: readCallback,
261
+ };
262
+ }
263
+ this.setResourceRequestHandlers();
264
+ }
265
+ tool(name, ...rest) {
266
+ if (this._registeredTools[name]) {
267
+ throw new Error(`Tool ${name} is already registered`);
268
+ }
269
+ let description;
270
+ if (typeof rest[0] === "string") {
271
+ description = rest.shift();
272
+ }
273
+ let paramsSchema;
274
+ if (rest.length > 1) {
275
+ paramsSchema = rest.shift();
276
+ }
277
+ const cb = rest[0];
278
+ this._registeredTools[name] = {
279
+ description,
280
+ inputSchema: paramsSchema === undefined ? undefined : zod_1.z.object(paramsSchema),
281
+ callback: cb,
282
+ };
283
+ this.setToolRequestHandlers();
284
+ }
285
+ prompt(name, ...rest) {
286
+ if (this._registeredPrompts[name]) {
287
+ throw new Error(`Prompt ${name} is already registered`);
288
+ }
289
+ let description;
290
+ if (typeof rest[0] === "string") {
291
+ description = rest.shift();
292
+ }
293
+ let argsSchema;
294
+ if (rest.length > 1) {
295
+ argsSchema = rest.shift();
296
+ }
297
+ const cb = rest[0];
298
+ this._registeredPrompts[name] = {
299
+ description,
300
+ argsSchema: argsSchema === undefined ? undefined : zod_1.z.object(argsSchema),
301
+ callback: cb,
302
+ };
303
+ this.setPromptRequestHandlers();
304
+ }
305
+ }
306
+ exports.McpServer = McpServer;
307
+ /**
308
+ * A resource template combines a URI pattern with optional functionality to enumerate
309
+ * all resources matching that pattern.
310
+ */
311
+ class ResourceTemplate {
312
+ constructor(uriTemplate, _callbacks) {
313
+ this._callbacks = _callbacks;
314
+ this._uriTemplate =
315
+ typeof uriTemplate === "string"
316
+ ? new uriTemplate_js_1.UriTemplate(uriTemplate)
317
+ : uriTemplate;
318
+ }
319
+ /**
320
+ * Gets the URI template pattern.
321
+ */
322
+ get uriTemplate() {
323
+ return this._uriTemplate;
324
+ }
325
+ /**
326
+ * Gets the list callback, if one was provided.
327
+ */
328
+ get listCallback() {
329
+ return this._callbacks.list;
330
+ }
331
+ /**
332
+ * Gets the callback for completing a specific URI template variable, if one was provided.
333
+ */
334
+ completeCallback(variable) {
335
+ var _a;
336
+ return (_a = this._callbacks.complete) === null || _a === void 0 ? void 0 : _a[variable];
337
+ }
338
+ }
339
+ exports.ResourceTemplate = ResourceTemplate;
340
+ const EMPTY_OBJECT_JSON_SCHEMA = {
341
+ type: "object",
342
+ };
343
+ function promptArgumentsFromSchema(schema) {
344
+ return Object.entries(schema.shape).map(([name, field]) => ({
345
+ name,
346
+ description: field.description,
347
+ required: !field.isOptional(),
348
+ }));
349
+ }
350
+ function createCompletionResult(suggestions) {
351
+ return {
352
+ completion: {
353
+ values: suggestions.slice(0, 100),
354
+ total: suggestions.length,
355
+ hasMore: suggestions.length > 100,
356
+ },
357
+ };
358
+ }
359
+ const EMPTY_COMPLETION_RESULT = {
360
+ completion: {
361
+ values: [],
362
+ hasMore: false,
363
+ },
364
+ };
365
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/server/mcp.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"}
@@ -1,5 +1,5 @@
1
1
  import { ZodLiteral, ZodObject, ZodType, z } from "zod";
2
- import { Notification, Progress, Request, Result } from "../types.js";
2
+ import { ClientCapabilities, Notification, Progress, Request, Result, ServerCapabilities } from "../types.js";
3
3
  import { Transport } from "./transport.js";
4
4
  /**
5
5
  * Callback for progress notifications.
@@ -141,6 +141,10 @@ export declare abstract class Protocol<SendRequestT extends Request, SendNotific
141
141
  * Removes the request handler for the given method.
142
142
  */
143
143
  removeRequestHandler(method: string): void;
144
+ /**
145
+ * Asserts that a request handler has not already been set for the given method, in preparation for a new one being automatically installed.
146
+ */
147
+ assertCanSetRequestHandler(method: string): void;
144
148
  /**
145
149
  * Registers a handler to invoke when this protocol object receives a notification with the given method.
146
150
  *
@@ -154,4 +158,5 @@ export declare abstract class Protocol<SendRequestT extends Request, SendNotific
154
158
  */
155
159
  removeNotificationHandler(method: string): void;
156
160
  }
161
+ export declare function mergeCapabilities<T extends ServerCapabilities | ClientCapabilities>(base: T, additional: T): T;
157
162
  //# sourceMappingURL=protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../src/shared/protocol.ts"],"names":[],"mappings":"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"}