@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.
- package/README.md +358 -58
- 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/{client → cjs/client}/index.d.ts +8 -2
- package/dist/cjs/client/index.d.ts.map +1 -0
- package/dist/cjs/client/index.js +222 -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/cjs/server/completable.d.ts +22 -0
- package/dist/cjs/server/completable.d.ts.map +1 -0
- package/dist/cjs/server/completable.js +65 -0
- package/dist/cjs/server/completable.js.map +1 -0
- package/dist/{server → cjs/server}/index.d.ts +13 -2
- package/dist/cjs/server/index.d.ts.map +1 -0
- package/dist/cjs/server/index.js +200 -0
- package/dist/cjs/server/index.js.map +1 -0
- package/dist/cjs/server/mcp.d.ts +150 -0
- package/dist/cjs/server/mcp.d.ts.map +1 -0
- package/dist/cjs/server/mcp.js +365 -0
- package/dist/cjs/server/mcp.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/{shared → cjs/shared}/protocol.d.ts +6 -1
- package/dist/cjs/shared/protocol.d.ts.map +1 -0
- package/dist/cjs/shared/protocol.js +321 -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/cjs/shared/uriTemplate.d.ts +24 -0
- package/dist/cjs/shared/uriTemplate.d.ts.map +1 -0
- package/dist/cjs/shared/uriTemplate.js +242 -0
- package/dist/cjs/shared/uriTemplate.js.map +1 -0
- 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 +779 -0
- package/dist/esm/client/index.d.ts.map +1 -0
- package/dist/{client → esm/client}/index.js +14 -2
- 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/completable.d.ts +22 -0
- package/dist/esm/server/completable.d.ts.map +1 -0
- package/dist/esm/server/completable.js +60 -0
- package/dist/esm/server/completable.js.map +1 -0
- package/dist/esm/server/index.d.ts +123 -0
- package/dist/esm/server/index.d.ts.map +1 -0
- package/dist/{server → esm/server}/index.js +16 -2
- package/dist/esm/server/index.js.map +1 -0
- package/dist/esm/server/mcp.d.ts +150 -0
- package/dist/esm/server/mcp.d.ts.map +1 -0
- package/dist/esm/server/mcp.js +360 -0
- package/dist/esm/server/mcp.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/esm/server/stdio.js.map +1 -0
- package/dist/esm/shared/protocol.d.ts +162 -0
- package/dist/esm/shared/protocol.d.ts.map +1 -0
- package/dist/{shared → esm/shared}/protocol.js +19 -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/shared/uriTemplate.d.ts +24 -0
- package/dist/esm/shared/uriTemplate.d.ts.map +1 -0
- package/dist/esm/shared/uriTemplate.js +238 -0
- package/dist/esm/shared/uriTemplate.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 +12 -6
- 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}/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}/stdio.d.ts +0 -0
- /package/dist/{shared → cjs/shared}/transport.d.ts +0 -0
- /package/dist/{types.d.ts → cjs/types.d.ts} +0 -0
- /package/dist/{cli.js → esm/cli.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/{server → esm/server}/stdio.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,162 @@
|
|
|
1
|
+
import { ZodLiteral, ZodObject, ZodType, z } from "zod";
|
|
2
|
+
import { ClientCapabilities, Notification, Progress, Request, Result, ServerCapabilities } from "../types.js";
|
|
3
|
+
import { Transport } from "./transport.js";
|
|
4
|
+
/**
|
|
5
|
+
* Callback for progress notifications.
|
|
6
|
+
*/
|
|
7
|
+
export type ProgressCallback = (progress: Progress) => void;
|
|
8
|
+
/**
|
|
9
|
+
* Additional initialization options.
|
|
10
|
+
*/
|
|
11
|
+
export type ProtocolOptions = {
|
|
12
|
+
/**
|
|
13
|
+
* Whether to restrict emitted requests to only those that the remote side has indicated that they can handle, through their advertised capabilities.
|
|
14
|
+
*
|
|
15
|
+
* Note that this DOES NOT affect checking of _local_ side capabilities, as it is considered a logic error to mis-specify those.
|
|
16
|
+
*
|
|
17
|
+
* Currently this defaults to false, for backwards compatibility with SDK versions that did not advertise capabilities correctly. In future, this will default to true.
|
|
18
|
+
*/
|
|
19
|
+
enforceStrictCapabilities?: boolean;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* The default request timeout, in miliseconds.
|
|
23
|
+
*/
|
|
24
|
+
export declare const DEFAULT_REQUEST_TIMEOUT_MSEC = 60000;
|
|
25
|
+
/**
|
|
26
|
+
* Options that can be given per request.
|
|
27
|
+
*/
|
|
28
|
+
export type RequestOptions = {
|
|
29
|
+
/**
|
|
30
|
+
* If set, requests progress notifications from the remote end (if supported). When progress notifications are received, this callback will be invoked.
|
|
31
|
+
*/
|
|
32
|
+
onprogress?: ProgressCallback;
|
|
33
|
+
/**
|
|
34
|
+
* Can be used to cancel an in-flight request. This will cause an AbortError to be raised from request().
|
|
35
|
+
*/
|
|
36
|
+
signal?: AbortSignal;
|
|
37
|
+
/**
|
|
38
|
+
* A timeout (in milliseconds) for this request. If exceeded, an McpError with code `RequestTimeout` will be raised from request().
|
|
39
|
+
*
|
|
40
|
+
* If not specified, `DEFAULT_REQUEST_TIMEOUT_MSEC` will be used as the timeout.
|
|
41
|
+
*/
|
|
42
|
+
timeout?: number;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Extra data given to request handlers.
|
|
46
|
+
*/
|
|
47
|
+
export type RequestHandlerExtra = {
|
|
48
|
+
/**
|
|
49
|
+
* An abort signal used to communicate if the request was cancelled from the sender's side.
|
|
50
|
+
*/
|
|
51
|
+
signal: AbortSignal;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Implements MCP protocol framing on top of a pluggable transport, including
|
|
55
|
+
* features like request/response linking, notifications, and progress.
|
|
56
|
+
*/
|
|
57
|
+
export declare abstract class Protocol<SendRequestT extends Request, SendNotificationT extends Notification, SendResultT extends Result> {
|
|
58
|
+
private _options?;
|
|
59
|
+
private _transport?;
|
|
60
|
+
private _requestMessageId;
|
|
61
|
+
private _requestHandlers;
|
|
62
|
+
private _requestHandlerAbortControllers;
|
|
63
|
+
private _notificationHandlers;
|
|
64
|
+
private _responseHandlers;
|
|
65
|
+
private _progressHandlers;
|
|
66
|
+
/**
|
|
67
|
+
* Callback for when the connection is closed for any reason.
|
|
68
|
+
*
|
|
69
|
+
* This is invoked when close() is called as well.
|
|
70
|
+
*/
|
|
71
|
+
onclose?: () => void;
|
|
72
|
+
/**
|
|
73
|
+
* Callback for when an error occurs.
|
|
74
|
+
*
|
|
75
|
+
* Note that errors are not necessarily fatal; they are used for reporting any kind of exceptional condition out of band.
|
|
76
|
+
*/
|
|
77
|
+
onerror?: (error: Error) => void;
|
|
78
|
+
/**
|
|
79
|
+
* A handler to invoke for any request types that do not have their own handler installed.
|
|
80
|
+
*/
|
|
81
|
+
fallbackRequestHandler?: (request: Request) => Promise<SendResultT>;
|
|
82
|
+
/**
|
|
83
|
+
* A handler to invoke for any notification types that do not have their own handler installed.
|
|
84
|
+
*/
|
|
85
|
+
fallbackNotificationHandler?: (notification: Notification) => Promise<void>;
|
|
86
|
+
constructor(_options?: ProtocolOptions | undefined);
|
|
87
|
+
/**
|
|
88
|
+
* Attaches to the given transport, starts it, and starts listening for messages.
|
|
89
|
+
*
|
|
90
|
+
* The Protocol 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.
|
|
91
|
+
*/
|
|
92
|
+
connect(transport: Transport): Promise<void>;
|
|
93
|
+
private _onclose;
|
|
94
|
+
private _onerror;
|
|
95
|
+
private _onnotification;
|
|
96
|
+
private _onrequest;
|
|
97
|
+
private _onprogress;
|
|
98
|
+
private _onresponse;
|
|
99
|
+
get transport(): Transport | undefined;
|
|
100
|
+
/**
|
|
101
|
+
* Closes the connection.
|
|
102
|
+
*/
|
|
103
|
+
close(): Promise<void>;
|
|
104
|
+
/**
|
|
105
|
+
* A method to check if a capability is supported by the remote side, for the given method to be called.
|
|
106
|
+
*
|
|
107
|
+
* This should be implemented by subclasses.
|
|
108
|
+
*/
|
|
109
|
+
protected abstract assertCapabilityForMethod(method: SendRequestT["method"]): void;
|
|
110
|
+
/**
|
|
111
|
+
* A method to check if a notification is supported by the local side, for the given method to be sent.
|
|
112
|
+
*
|
|
113
|
+
* This should be implemented by subclasses.
|
|
114
|
+
*/
|
|
115
|
+
protected abstract assertNotificationCapability(method: SendNotificationT["method"]): void;
|
|
116
|
+
/**
|
|
117
|
+
* A method to check if a request handler is supported by the local side, for the given method to be handled.
|
|
118
|
+
*
|
|
119
|
+
* This should be implemented by subclasses.
|
|
120
|
+
*/
|
|
121
|
+
protected abstract assertRequestHandlerCapability(method: string): void;
|
|
122
|
+
/**
|
|
123
|
+
* Sends a request and wait for a response.
|
|
124
|
+
*
|
|
125
|
+
* Do not use this method to emit notifications! Use notification() instead.
|
|
126
|
+
*/
|
|
127
|
+
request<T extends ZodType<object>>(request: SendRequestT, resultSchema: T, options?: RequestOptions): Promise<z.infer<T>>;
|
|
128
|
+
/**
|
|
129
|
+
* Emits a notification, which is a one-way message that does not expect a response.
|
|
130
|
+
*/
|
|
131
|
+
notification(notification: SendNotificationT): Promise<void>;
|
|
132
|
+
/**
|
|
133
|
+
* Registers a handler to invoke when this protocol object receives a request with the given method.
|
|
134
|
+
*
|
|
135
|
+
* Note that this will replace any previous request handler for the same method.
|
|
136
|
+
*/
|
|
137
|
+
setRequestHandler<T extends ZodObject<{
|
|
138
|
+
method: ZodLiteral<string>;
|
|
139
|
+
}>>(requestSchema: T, handler: (request: z.infer<T>, extra: RequestHandlerExtra) => SendResultT | Promise<SendResultT>): void;
|
|
140
|
+
/**
|
|
141
|
+
* Removes the request handler for the given method.
|
|
142
|
+
*/
|
|
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;
|
|
148
|
+
/**
|
|
149
|
+
* Registers a handler to invoke when this protocol object receives a notification with the given method.
|
|
150
|
+
*
|
|
151
|
+
* Note that this will replace any previous notification handler for the same method.
|
|
152
|
+
*/
|
|
153
|
+
setNotificationHandler<T extends ZodObject<{
|
|
154
|
+
method: ZodLiteral<string>;
|
|
155
|
+
}>>(notificationSchema: T, handler: (notification: z.infer<T>) => void | Promise<void>): void;
|
|
156
|
+
/**
|
|
157
|
+
* Removes the notification handler for the given method.
|
|
158
|
+
*/
|
|
159
|
+
removeNotificationHandler(method: string): void;
|
|
160
|
+
}
|
|
161
|
+
export declare function mergeCapabilities<T extends ServerCapabilities | ClientCapabilities>(base: T, additional: T): T;
|
|
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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"}
|
|
@@ -279,6 +279,14 @@ export class Protocol {
|
|
|
279
279
|
removeRequestHandler(method) {
|
|
280
280
|
this._requestHandlers.delete(method);
|
|
281
281
|
}
|
|
282
|
+
/**
|
|
283
|
+
* Asserts that a request handler has not already been set for the given method, in preparation for a new one being automatically installed.
|
|
284
|
+
*/
|
|
285
|
+
assertCanSetRequestHandler(method) {
|
|
286
|
+
if (this._requestHandlers.has(method)) {
|
|
287
|
+
throw new Error(`A request handler for ${method} already exists, which would be overridden`);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
282
290
|
/**
|
|
283
291
|
* Registers a handler to invoke when this protocol object receives a notification with the given method.
|
|
284
292
|
*
|
|
@@ -294,4 +302,15 @@ export class Protocol {
|
|
|
294
302
|
this._notificationHandlers.delete(method);
|
|
295
303
|
}
|
|
296
304
|
}
|
|
305
|
+
export function mergeCapabilities(base, additional) {
|
|
306
|
+
return Object.entries(additional).reduce((acc, [key, value]) => {
|
|
307
|
+
if (value && typeof value === "object") {
|
|
308
|
+
acc[key] = acc[key] ? { ...acc[key], ...value } : value;
|
|
309
|
+
}
|
|
310
|
+
else {
|
|
311
|
+
acc[key] = value;
|
|
312
|
+
}
|
|
313
|
+
return acc;
|
|
314
|
+
}, { ...base });
|
|
315
|
+
}
|
|
297
316
|
//# sourceMappingURL=protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../src/shared/protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { JSONRPCMessage } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Buffers a continuous stdio stream into discrete JSON-RPC messages.
|
|
4
|
+
*/
|
|
5
|
+
export declare class ReadBuffer {
|
|
6
|
+
private _buffer?;
|
|
7
|
+
append(chunk: Buffer): void;
|
|
8
|
+
readMessage(): JSONRPCMessage | null;
|
|
9
|
+
clear(): void;
|
|
10
|
+
}
|
|
11
|
+
export declare function deserializeMessage(line: string): JSONRPCMessage;
|
|
12
|
+
export declare function serializeMessage(message: JSONRPCMessage): string;
|
|
13
|
+
//# sourceMappingURL=stdio.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdio.d.ts","sourceRoot":"","sources":["../../../src/shared/stdio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAwB,MAAM,aAAa,CAAC;AAEnE;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAC,CAAS;IAEzB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI3B,WAAW,IAAI,cAAc,GAAG,IAAI;IAepC,KAAK,IAAI,IAAI;CAGd;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAE/D;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAEhE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdio.js","sourceRoot":"","sources":["../../../src/shared/stdio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnE;;GAEG;AACH,MAAM,OAAO,UAAU;IAGrB,MAAM,CAAC,KAAa;QAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC7E,CAAC;IAED,WAAW;QACT,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAChD,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAuB;IACtD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { JSONRPCMessage } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Describes the minimal contract for a MCP transport that a client or server can communicate over.
|
|
4
|
+
*/
|
|
5
|
+
export interface Transport {
|
|
6
|
+
/**
|
|
7
|
+
* Starts processing messages on the transport, including any connection steps that might need to be taken.
|
|
8
|
+
*
|
|
9
|
+
* This method should only be called after callbacks are installed, or else messages may be lost.
|
|
10
|
+
*
|
|
11
|
+
* NOTE: This method should not be called explicitly when using Client, Server, or Protocol classes, as they will implicitly call start().
|
|
12
|
+
*/
|
|
13
|
+
start(): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Sends a JSON-RPC message (request or response).
|
|
16
|
+
*/
|
|
17
|
+
send(message: JSONRPCMessage): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Closes the connection.
|
|
20
|
+
*/
|
|
21
|
+
close(): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Callback for when the connection is closed for any reason.
|
|
24
|
+
*
|
|
25
|
+
* This should be invoked when close() is called as well.
|
|
26
|
+
*/
|
|
27
|
+
onclose?: () => void;
|
|
28
|
+
/**
|
|
29
|
+
* Callback for when an error occurs.
|
|
30
|
+
*
|
|
31
|
+
* Note that errors are not necessarily fatal; they are used for reporting any kind of exceptional condition out of band.
|
|
32
|
+
*/
|
|
33
|
+
onerror?: (error: Error) => void;
|
|
34
|
+
/**
|
|
35
|
+
* Callback for when a message (request or response) is received over the connection.
|
|
36
|
+
*/
|
|
37
|
+
onmessage?: (message: JSONRPCMessage) => void;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/shared/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB;;;;;;OAMG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7C;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAEjC;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;CAC/C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/shared/transport.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export type Variables = Record<string, string | string[]>;
|
|
2
|
+
export declare class UriTemplate {
|
|
3
|
+
/**
|
|
4
|
+
* Returns true if the given string contains any URI template expressions.
|
|
5
|
+
* A template expression is a sequence of characters enclosed in curly braces,
|
|
6
|
+
* like {foo} or {?bar}.
|
|
7
|
+
*/
|
|
8
|
+
static isTemplate(str: string): boolean;
|
|
9
|
+
private static validateLength;
|
|
10
|
+
private readonly template;
|
|
11
|
+
private readonly parts;
|
|
12
|
+
constructor(template: string);
|
|
13
|
+
toString(): string;
|
|
14
|
+
private parse;
|
|
15
|
+
private getOperator;
|
|
16
|
+
private getNames;
|
|
17
|
+
private encodeValue;
|
|
18
|
+
private expandPart;
|
|
19
|
+
expand(variables: Variables): string;
|
|
20
|
+
private escapeRegExp;
|
|
21
|
+
private partToRegExp;
|
|
22
|
+
match(uri: string): Variables | null;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=uriTemplate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uriTemplate.d.ts","sourceRoot":"","sources":["../../../src/shared/uriTemplate.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;AAO1D,qBAAa,WAAW;IACtB;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAMvC,OAAO,CAAC,MAAM,CAAC,cAAc;IAW7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAGpB;gBAEU,QAAQ,EAAE,MAAM;IAM5B,QAAQ,IAAI,MAAM;IAIlB,OAAO,CAAC,KAAK;IA4Db,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,UAAU;IAwDlB,MAAM,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM;IA4BpC,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,YAAY;IAkDpB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;CA2CrC"}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
// Claude-authored implementation of RFC 6570 URI Templates
|
|
2
|
+
const MAX_TEMPLATE_LENGTH = 1000000; // 1MB
|
|
3
|
+
const MAX_VARIABLE_LENGTH = 1000000; // 1MB
|
|
4
|
+
const MAX_TEMPLATE_EXPRESSIONS = 10000;
|
|
5
|
+
const MAX_REGEX_LENGTH = 1000000; // 1MB
|
|
6
|
+
export class UriTemplate {
|
|
7
|
+
/**
|
|
8
|
+
* Returns true if the given string contains any URI template expressions.
|
|
9
|
+
* A template expression is a sequence of characters enclosed in curly braces,
|
|
10
|
+
* like {foo} or {?bar}.
|
|
11
|
+
*/
|
|
12
|
+
static isTemplate(str) {
|
|
13
|
+
// Look for any sequence of characters between curly braces
|
|
14
|
+
// that isn't just whitespace
|
|
15
|
+
return /\{[^}\s]+\}/.test(str);
|
|
16
|
+
}
|
|
17
|
+
static validateLength(str, max, context) {
|
|
18
|
+
if (str.length > max) {
|
|
19
|
+
throw new Error(`${context} exceeds maximum length of ${max} characters (got ${str.length})`);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
constructor(template) {
|
|
23
|
+
UriTemplate.validateLength(template, MAX_TEMPLATE_LENGTH, "Template");
|
|
24
|
+
this.template = template;
|
|
25
|
+
this.parts = this.parse(template);
|
|
26
|
+
}
|
|
27
|
+
toString() {
|
|
28
|
+
return this.template;
|
|
29
|
+
}
|
|
30
|
+
parse(template) {
|
|
31
|
+
const parts = [];
|
|
32
|
+
let currentText = "";
|
|
33
|
+
let i = 0;
|
|
34
|
+
let expressionCount = 0;
|
|
35
|
+
while (i < template.length) {
|
|
36
|
+
if (template[i] === "{") {
|
|
37
|
+
if (currentText) {
|
|
38
|
+
parts.push(currentText);
|
|
39
|
+
currentText = "";
|
|
40
|
+
}
|
|
41
|
+
const end = template.indexOf("}", i);
|
|
42
|
+
if (end === -1)
|
|
43
|
+
throw new Error("Unclosed template expression");
|
|
44
|
+
expressionCount++;
|
|
45
|
+
if (expressionCount > MAX_TEMPLATE_EXPRESSIONS) {
|
|
46
|
+
throw new Error(`Template contains too many expressions (max ${MAX_TEMPLATE_EXPRESSIONS})`);
|
|
47
|
+
}
|
|
48
|
+
const expr = template.slice(i + 1, end);
|
|
49
|
+
const operator = this.getOperator(expr);
|
|
50
|
+
const exploded = expr.includes("*");
|
|
51
|
+
const names = this.getNames(expr);
|
|
52
|
+
const name = names[0];
|
|
53
|
+
// Validate variable name length
|
|
54
|
+
for (const name of names) {
|
|
55
|
+
UriTemplate.validateLength(name, MAX_VARIABLE_LENGTH, "Variable name");
|
|
56
|
+
}
|
|
57
|
+
parts.push({ name, operator, names, exploded });
|
|
58
|
+
i = end + 1;
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
currentText += template[i];
|
|
62
|
+
i++;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (currentText) {
|
|
66
|
+
parts.push(currentText);
|
|
67
|
+
}
|
|
68
|
+
return parts;
|
|
69
|
+
}
|
|
70
|
+
getOperator(expr) {
|
|
71
|
+
const operators = ["+", "#", ".", "/", "?", "&"];
|
|
72
|
+
return operators.find((op) => expr.startsWith(op)) || "";
|
|
73
|
+
}
|
|
74
|
+
getNames(expr) {
|
|
75
|
+
const operator = this.getOperator(expr);
|
|
76
|
+
return expr
|
|
77
|
+
.slice(operator.length)
|
|
78
|
+
.split(",")
|
|
79
|
+
.map((name) => name.replace("*", "").trim())
|
|
80
|
+
.filter((name) => name.length > 0);
|
|
81
|
+
}
|
|
82
|
+
encodeValue(value, operator) {
|
|
83
|
+
UriTemplate.validateLength(value, MAX_VARIABLE_LENGTH, "Variable value");
|
|
84
|
+
if (operator === "+" || operator === "#") {
|
|
85
|
+
return encodeURI(value);
|
|
86
|
+
}
|
|
87
|
+
return encodeURIComponent(value);
|
|
88
|
+
}
|
|
89
|
+
expandPart(part, variables) {
|
|
90
|
+
if (part.operator === "?" || part.operator === "&") {
|
|
91
|
+
const pairs = part.names
|
|
92
|
+
.map((name) => {
|
|
93
|
+
const value = variables[name];
|
|
94
|
+
if (value === undefined)
|
|
95
|
+
return "";
|
|
96
|
+
const encoded = Array.isArray(value)
|
|
97
|
+
? value.map((v) => this.encodeValue(v, part.operator)).join(",")
|
|
98
|
+
: this.encodeValue(value.toString(), part.operator);
|
|
99
|
+
return `${name}=${encoded}`;
|
|
100
|
+
})
|
|
101
|
+
.filter((pair) => pair.length > 0);
|
|
102
|
+
if (pairs.length === 0)
|
|
103
|
+
return "";
|
|
104
|
+
const separator = part.operator === "?" ? "?" : "&";
|
|
105
|
+
return separator + pairs.join("&");
|
|
106
|
+
}
|
|
107
|
+
if (part.names.length > 1) {
|
|
108
|
+
const values = part.names
|
|
109
|
+
.map((name) => variables[name])
|
|
110
|
+
.filter((v) => v !== undefined);
|
|
111
|
+
if (values.length === 0)
|
|
112
|
+
return "";
|
|
113
|
+
return values.map((v) => (Array.isArray(v) ? v[0] : v)).join(",");
|
|
114
|
+
}
|
|
115
|
+
const value = variables[part.name];
|
|
116
|
+
if (value === undefined)
|
|
117
|
+
return "";
|
|
118
|
+
const values = Array.isArray(value) ? value : [value];
|
|
119
|
+
const encoded = values.map((v) => this.encodeValue(v, part.operator));
|
|
120
|
+
switch (part.operator) {
|
|
121
|
+
case "":
|
|
122
|
+
return encoded.join(",");
|
|
123
|
+
case "+":
|
|
124
|
+
return encoded.join(",");
|
|
125
|
+
case "#":
|
|
126
|
+
return "#" + encoded.join(",");
|
|
127
|
+
case ".":
|
|
128
|
+
return "." + encoded.join(".");
|
|
129
|
+
case "/":
|
|
130
|
+
return "/" + encoded.join("/");
|
|
131
|
+
default:
|
|
132
|
+
return encoded.join(",");
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
expand(variables) {
|
|
136
|
+
let result = "";
|
|
137
|
+
let hasQueryParam = false;
|
|
138
|
+
for (const part of this.parts) {
|
|
139
|
+
if (typeof part === "string") {
|
|
140
|
+
result += part;
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
const expanded = this.expandPart(part, variables);
|
|
144
|
+
if (!expanded)
|
|
145
|
+
continue;
|
|
146
|
+
// Convert ? to & if we already have a query parameter
|
|
147
|
+
if ((part.operator === "?" || part.operator === "&") && hasQueryParam) {
|
|
148
|
+
result += expanded.replace("?", "&");
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
result += expanded;
|
|
152
|
+
}
|
|
153
|
+
if (part.operator === "?" || part.operator === "&") {
|
|
154
|
+
hasQueryParam = true;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return result;
|
|
158
|
+
}
|
|
159
|
+
escapeRegExp(str) {
|
|
160
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
161
|
+
}
|
|
162
|
+
partToRegExp(part) {
|
|
163
|
+
const patterns = [];
|
|
164
|
+
// Validate variable name length for matching
|
|
165
|
+
for (const name of part.names) {
|
|
166
|
+
UriTemplate.validateLength(name, MAX_VARIABLE_LENGTH, "Variable name");
|
|
167
|
+
}
|
|
168
|
+
if (part.operator === "?" || part.operator === "&") {
|
|
169
|
+
for (let i = 0; i < part.names.length; i++) {
|
|
170
|
+
const name = part.names[i];
|
|
171
|
+
const prefix = i === 0 ? "\\" + part.operator : "&";
|
|
172
|
+
patterns.push({
|
|
173
|
+
pattern: prefix + this.escapeRegExp(name) + "=([^&]+)",
|
|
174
|
+
name,
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
return patterns;
|
|
178
|
+
}
|
|
179
|
+
let pattern;
|
|
180
|
+
const name = part.name;
|
|
181
|
+
switch (part.operator) {
|
|
182
|
+
case "":
|
|
183
|
+
pattern = part.exploded ? "([^/]+(?:,[^/]+)*)" : "([^/,]+)";
|
|
184
|
+
break;
|
|
185
|
+
case "+":
|
|
186
|
+
case "#":
|
|
187
|
+
pattern = "(.+)";
|
|
188
|
+
break;
|
|
189
|
+
case ".":
|
|
190
|
+
pattern = "\\.([^/,]+)";
|
|
191
|
+
break;
|
|
192
|
+
case "/":
|
|
193
|
+
pattern = "/" + (part.exploded ? "([^/]+(?:,[^/]+)*)" : "([^/,]+)");
|
|
194
|
+
break;
|
|
195
|
+
default:
|
|
196
|
+
pattern = "([^/]+)";
|
|
197
|
+
}
|
|
198
|
+
patterns.push({ pattern, name });
|
|
199
|
+
return patterns;
|
|
200
|
+
}
|
|
201
|
+
match(uri) {
|
|
202
|
+
UriTemplate.validateLength(uri, MAX_TEMPLATE_LENGTH, "URI");
|
|
203
|
+
let pattern = "^";
|
|
204
|
+
const names = [];
|
|
205
|
+
for (const part of this.parts) {
|
|
206
|
+
if (typeof part === "string") {
|
|
207
|
+
pattern += this.escapeRegExp(part);
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
const patterns = this.partToRegExp(part);
|
|
211
|
+
for (const { pattern: partPattern, name } of patterns) {
|
|
212
|
+
pattern += partPattern;
|
|
213
|
+
names.push({ name, exploded: part.exploded });
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
pattern += "$";
|
|
218
|
+
UriTemplate.validateLength(pattern, MAX_REGEX_LENGTH, "Generated regex pattern");
|
|
219
|
+
const regex = new RegExp(pattern);
|
|
220
|
+
const match = uri.match(regex);
|
|
221
|
+
if (!match)
|
|
222
|
+
return null;
|
|
223
|
+
const result = {};
|
|
224
|
+
for (let i = 0; i < names.length; i++) {
|
|
225
|
+
const { name, exploded } = names[i];
|
|
226
|
+
const value = match[i + 1];
|
|
227
|
+
const cleanName = name.replace("*", "");
|
|
228
|
+
if (exploded && value.includes(",")) {
|
|
229
|
+
result[cleanName] = value.split(",");
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
result[cleanName] = value;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
return result;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=uriTemplate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uriTemplate.js","sourceRoot":"","sources":["../../../src/shared/uriTemplate.ts"],"names":[],"mappings":"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"}
|