@modelcontextprotocol/sdk 1.9.0 → 1.10.1
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 +321 -28
- package/dist/cjs/client/index.d.ts.map +1 -1
- package/dist/cjs/client/index.js +5 -0
- package/dist/cjs/client/index.js.map +1 -1
- package/dist/cjs/client/streamableHttp.d.ts +124 -0
- package/dist/cjs/client/streamableHttp.d.ts.map +1 -0
- package/dist/cjs/client/streamableHttp.js +353 -0
- package/dist/cjs/client/streamableHttp.js.map +1 -0
- package/dist/cjs/examples/client/simpleStreamableHttp.d.ts +2 -0
- package/dist/cjs/examples/client/simpleStreamableHttp.d.ts.map +1 -0
- package/dist/cjs/examples/client/simpleStreamableHttp.js +448 -0
- package/dist/cjs/examples/client/simpleStreamableHttp.js.map +1 -0
- package/dist/cjs/examples/client/streamableHttpWithSseFallbackClient.d.ts +2 -0
- package/dist/cjs/examples/client/streamableHttpWithSseFallbackClient.d.ts.map +1 -0
- package/dist/cjs/examples/client/streamableHttpWithSseFallbackClient.js +168 -0
- package/dist/cjs/examples/client/streamableHttpWithSseFallbackClient.js.map +1 -0
- package/dist/cjs/examples/server/jsonResponseStreamableHttp.d.ts +2 -0
- package/dist/cjs/examples/server/jsonResponseStreamableHttp.d.ts.map +1 -0
- package/dist/cjs/examples/server/jsonResponseStreamableHttp.js +139 -0
- package/dist/cjs/examples/server/jsonResponseStreamableHttp.js.map +1 -0
- package/dist/cjs/examples/server/simpleSseServer.d.ts +2 -0
- package/dist/cjs/examples/server/simpleSseServer.d.ts.map +1 -0
- package/dist/cjs/examples/server/simpleSseServer.js +148 -0
- package/dist/cjs/examples/server/simpleSseServer.js.map +1 -0
- package/dist/cjs/examples/server/simpleStatelessStreamableHttp.d.ts +2 -0
- package/dist/cjs/examples/server/simpleStatelessStreamableHttp.d.ts.map +1 -0
- package/dist/cjs/examples/server/simpleStatelessStreamableHttp.js +149 -0
- package/dist/cjs/examples/server/simpleStatelessStreamableHttp.js.map +1 -0
- package/dist/cjs/examples/server/simpleStreamableHttp.d.ts +2 -0
- package/dist/cjs/examples/server/simpleStreamableHttp.d.ts.map +1 -0
- package/dist/cjs/examples/server/simpleStreamableHttp.js +250 -0
- package/dist/cjs/examples/server/simpleStreamableHttp.js.map +1 -0
- package/dist/cjs/examples/server/sseAndStreamableHttpCompatibleServer.d.ts +2 -0
- package/dist/cjs/examples/server/sseAndStreamableHttpCompatibleServer.d.ts.map +1 -0
- package/dist/cjs/examples/server/sseAndStreamableHttpCompatibleServer.js +229 -0
- package/dist/cjs/examples/server/sseAndStreamableHttpCompatibleServer.js.map +1 -0
- package/dist/cjs/examples/server/standaloneSseWithGetStreamableHttp.d.ts +2 -0
- package/dist/cjs/examples/server/standaloneSseWithGetStreamableHttp.d.ts.map +1 -0
- package/dist/cjs/examples/server/standaloneSseWithGetStreamableHttp.js +112 -0
- package/dist/cjs/examples/server/standaloneSseWithGetStreamableHttp.js.map +1 -0
- package/dist/cjs/examples/shared/inMemoryEventStore.d.ts +31 -0
- package/dist/cjs/examples/shared/inMemoryEventStore.d.ts.map +1 -0
- package/dist/cjs/examples/shared/inMemoryEventStore.js +69 -0
- package/dist/cjs/examples/shared/inMemoryEventStore.js.map +1 -0
- package/dist/cjs/inMemory.d.ts +13 -3
- package/dist/cjs/inMemory.d.ts.map +1 -1
- package/dist/cjs/inMemory.js +9 -7
- package/dist/cjs/inMemory.js.map +1 -1
- package/dist/cjs/server/auth/types.d.ts +5 -0
- package/dist/cjs/server/auth/types.d.ts.map +1 -1
- package/dist/cjs/server/mcp.d.ts +100 -19
- package/dist/cjs/server/mcp.d.ts.map +1 -1
- package/dist/cjs/server/mcp.js +154 -12
- package/dist/cjs/server/mcp.js.map +1 -1
- package/dist/cjs/server/sse.d.ts +10 -3
- package/dist/cjs/server/sse.d.ts.map +1 -1
- package/dist/cjs/server/sse.js +13 -4
- package/dist/cjs/server/sse.js.map +1 -1
- package/dist/cjs/server/streamableHttp.d.ts +146 -0
- package/dist/cjs/server/streamableHttp.d.ts.map +1 -0
- package/dist/cjs/server/streamableHttp.js +538 -0
- package/dist/cjs/server/streamableHttp.js.map +1 -0
- package/dist/cjs/shared/protocol.d.ts +31 -5
- package/dist/cjs/shared/protocol.d.ts.map +1 -1
- package/dist/cjs/shared/protocol.js +23 -15
- package/dist/cjs/shared/protocol.js.map +1 -1
- package/dist/cjs/shared/transport.d.ts +32 -3
- package/dist/cjs/shared/transport.d.ts.map +1 -1
- package/dist/cjs/types.d.ts +6 -0
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/types.js +14 -2
- package/dist/cjs/types.js.map +1 -1
- package/dist/esm/client/index.d.ts.map +1 -1
- package/dist/esm/client/index.js +5 -0
- package/dist/esm/client/index.js.map +1 -1
- package/dist/esm/client/streamableHttp.d.ts +124 -0
- package/dist/esm/client/streamableHttp.d.ts.map +1 -0
- package/dist/esm/client/streamableHttp.js +348 -0
- package/dist/esm/client/streamableHttp.js.map +1 -0
- package/dist/esm/examples/client/simpleStreamableHttp.d.ts +2 -0
- package/dist/esm/examples/client/simpleStreamableHttp.d.ts.map +1 -0
- package/dist/esm/examples/client/simpleStreamableHttp.js +446 -0
- package/dist/esm/examples/client/simpleStreamableHttp.js.map +1 -0
- package/dist/esm/examples/client/streamableHttpWithSseFallbackClient.d.ts +2 -0
- package/dist/esm/examples/client/streamableHttpWithSseFallbackClient.d.ts.map +1 -0
- package/dist/esm/examples/client/streamableHttpWithSseFallbackClient.js +166 -0
- package/dist/esm/examples/client/streamableHttpWithSseFallbackClient.js.map +1 -0
- package/dist/esm/examples/server/jsonResponseStreamableHttp.d.ts +2 -0
- package/dist/esm/examples/server/jsonResponseStreamableHttp.d.ts.map +1 -0
- package/dist/esm/examples/server/jsonResponseStreamableHttp.js +134 -0
- package/dist/esm/examples/server/jsonResponseStreamableHttp.js.map +1 -0
- package/dist/esm/examples/server/simpleSseServer.d.ts +2 -0
- package/dist/esm/examples/server/simpleSseServer.d.ts.map +1 -0
- package/dist/esm/examples/server/simpleSseServer.js +143 -0
- package/dist/esm/examples/server/simpleSseServer.js.map +1 -0
- package/dist/esm/examples/server/simpleStatelessStreamableHttp.d.ts +2 -0
- package/dist/esm/examples/server/simpleStatelessStreamableHttp.d.ts.map +1 -0
- package/dist/esm/examples/server/simpleStatelessStreamableHttp.js +144 -0
- package/dist/esm/examples/server/simpleStatelessStreamableHttp.js.map +1 -0
- package/dist/esm/examples/server/simpleStreamableHttp.d.ts +2 -0
- package/dist/esm/examples/server/simpleStreamableHttp.d.ts.map +1 -0
- package/dist/esm/examples/server/simpleStreamableHttp.js +245 -0
- package/dist/esm/examples/server/simpleStreamableHttp.js.map +1 -0
- package/dist/esm/examples/server/sseAndStreamableHttpCompatibleServer.d.ts +2 -0
- package/dist/esm/examples/server/sseAndStreamableHttpCompatibleServer.d.ts.map +1 -0
- package/dist/esm/examples/server/sseAndStreamableHttpCompatibleServer.js +224 -0
- package/dist/esm/examples/server/sseAndStreamableHttpCompatibleServer.js.map +1 -0
- package/dist/esm/examples/server/standaloneSseWithGetStreamableHttp.d.ts +2 -0
- package/dist/esm/examples/server/standaloneSseWithGetStreamableHttp.d.ts.map +1 -0
- package/dist/esm/examples/server/standaloneSseWithGetStreamableHttp.js +107 -0
- package/dist/esm/examples/server/standaloneSseWithGetStreamableHttp.js.map +1 -0
- package/dist/esm/examples/shared/inMemoryEventStore.d.ts +31 -0
- package/dist/esm/examples/shared/inMemoryEventStore.d.ts.map +1 -0
- package/dist/esm/examples/shared/inMemoryEventStore.js +65 -0
- package/dist/esm/examples/shared/inMemoryEventStore.js.map +1 -0
- package/dist/esm/inMemory.d.ts +13 -3
- package/dist/esm/inMemory.d.ts.map +1 -1
- package/dist/esm/inMemory.js +9 -7
- package/dist/esm/inMemory.js.map +1 -1
- package/dist/esm/server/auth/types.d.ts +5 -0
- package/dist/esm/server/auth/types.d.ts.map +1 -1
- package/dist/esm/server/mcp.d.ts +100 -19
- package/dist/esm/server/mcp.d.ts.map +1 -1
- package/dist/esm/server/mcp.js +154 -12
- package/dist/esm/server/mcp.js.map +1 -1
- package/dist/esm/server/sse.d.ts +10 -3
- package/dist/esm/server/sse.d.ts.map +1 -1
- package/dist/esm/server/sse.js +13 -4
- package/dist/esm/server/sse.js.map +1 -1
- package/dist/esm/server/streamableHttp.d.ts +146 -0
- package/dist/esm/server/streamableHttp.d.ts.map +1 -0
- package/dist/esm/server/streamableHttp.js +531 -0
- package/dist/esm/server/streamableHttp.js.map +1 -0
- package/dist/esm/shared/protocol.d.ts +31 -5
- package/dist/esm/shared/protocol.d.ts.map +1 -1
- package/dist/esm/shared/protocol.js +24 -16
- package/dist/esm/shared/protocol.js.map +1 -1
- package/dist/esm/shared/transport.d.ts +32 -3
- package/dist/esm/shared/transport.d.ts.map +1 -1
- package/dist/esm/types.d.ts +6 -0
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/types.js +6 -0
- package/dist/esm/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple in-memory implementation of the EventStore interface for resumability
|
|
3
|
+
* This is primarily intended for examples and testing, not for production use
|
|
4
|
+
* where a persistent storage solution would be more appropriate.
|
|
5
|
+
*/
|
|
6
|
+
export class InMemoryEventStore {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.events = new Map();
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Generates a unique event ID for a given stream ID
|
|
12
|
+
*/
|
|
13
|
+
generateEventId(streamId) {
|
|
14
|
+
return `${streamId}_${Date.now()}_${Math.random().toString(36).substring(2, 10)}`;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Extracts the stream ID from an event ID
|
|
18
|
+
*/
|
|
19
|
+
getStreamIdFromEventId(eventId) {
|
|
20
|
+
const parts = eventId.split('_');
|
|
21
|
+
return parts.length > 0 ? parts[0] : '';
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Stores an event with a generated event ID
|
|
25
|
+
* Implements EventStore.storeEvent
|
|
26
|
+
*/
|
|
27
|
+
async storeEvent(streamId, message) {
|
|
28
|
+
const eventId = this.generateEventId(streamId);
|
|
29
|
+
this.events.set(eventId, { streamId, message });
|
|
30
|
+
return eventId;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Replays events that occurred after a specific event ID
|
|
34
|
+
* Implements EventStore.replayEventsAfter
|
|
35
|
+
*/
|
|
36
|
+
async replayEventsAfter(lastEventId, { send }) {
|
|
37
|
+
if (!lastEventId || !this.events.has(lastEventId)) {
|
|
38
|
+
return '';
|
|
39
|
+
}
|
|
40
|
+
// Extract the stream ID from the event ID
|
|
41
|
+
const streamId = this.getStreamIdFromEventId(lastEventId);
|
|
42
|
+
if (!streamId) {
|
|
43
|
+
return '';
|
|
44
|
+
}
|
|
45
|
+
let foundLastEvent = false;
|
|
46
|
+
// Sort events by eventId for chronological ordering
|
|
47
|
+
const sortedEvents = [...this.events.entries()].sort((a, b) => a[0].localeCompare(b[0]));
|
|
48
|
+
for (const [eventId, { streamId: eventStreamId, message }] of sortedEvents) {
|
|
49
|
+
// Only include events from the same stream
|
|
50
|
+
if (eventStreamId !== streamId) {
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
// Start sending events after we find the lastEventId
|
|
54
|
+
if (eventId === lastEventId) {
|
|
55
|
+
foundLastEvent = true;
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
if (foundLastEvent) {
|
|
59
|
+
await send(eventId, message);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return streamId;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=inMemoryEventStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inMemoryEventStore.js","sourceRoot":"","sources":["../../../../src/examples/shared/inMemoryEventStore.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,MAAM,OAAO,kBAAkB;IAA/B;QACU,WAAM,GAA+D,IAAI,GAAG,EAAE,CAAC;IAmEzF,CAAC;IAjEC;;OAEG;IACK,eAAe,CAAC,QAAgB;QACtC,OAAO,GAAG,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;IACpF,CAAC;IAED;;OAEG;IACK,sBAAsB,CAAC,OAAe;QAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,OAAuB;QACxD,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QAChD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,iBAAiB,CAAC,WAAmB,EACzC,EAAE,IAAI,EAAyE;QAE/E,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YAClD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,0CAA0C;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;QAC1D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,cAAc,GAAG,KAAK,CAAC;QAE3B,oDAAoD;QACpD,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEzF,KAAK,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,IAAI,YAAY,EAAE,CAAC;YAC3E,2CAA2C;YAC3C,IAAI,aAAa,KAAK,QAAQ,EAAE,CAAC;gBAC/B,SAAS;YACX,CAAC;YAED,qDAAqD;YACrD,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;gBAC5B,cAAc,GAAG,IAAI,CAAC;gBACtB,SAAS;YACX,CAAC;YAED,IAAI,cAAc,EAAE,CAAC;gBACnB,MAAM,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF"}
|
package/dist/esm/inMemory.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Transport } from "./shared/transport.js";
|
|
2
|
-
import { JSONRPCMessage } from "./types.js";
|
|
2
|
+
import { JSONRPCMessage, RequestId } from "./types.js";
|
|
3
|
+
import { AuthInfo } from "./server/auth/types.js";
|
|
3
4
|
/**
|
|
4
5
|
* In-memory transport for creating clients and servers that talk to each other within the same process.
|
|
5
6
|
*/
|
|
@@ -8,7 +9,9 @@ export declare class InMemoryTransport implements Transport {
|
|
|
8
9
|
private _messageQueue;
|
|
9
10
|
onclose?: () => void;
|
|
10
11
|
onerror?: (error: Error) => void;
|
|
11
|
-
onmessage?: (message: JSONRPCMessage
|
|
12
|
+
onmessage?: (message: JSONRPCMessage, extra?: {
|
|
13
|
+
authInfo?: AuthInfo;
|
|
14
|
+
}) => void;
|
|
12
15
|
sessionId?: string;
|
|
13
16
|
/**
|
|
14
17
|
* 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.
|
|
@@ -16,6 +19,13 @@ export declare class InMemoryTransport implements Transport {
|
|
|
16
19
|
static createLinkedPair(): [InMemoryTransport, InMemoryTransport];
|
|
17
20
|
start(): Promise<void>;
|
|
18
21
|
close(): Promise<void>;
|
|
19
|
-
|
|
22
|
+
/**
|
|
23
|
+
* Sends a message with optional auth info.
|
|
24
|
+
* This is useful for testing authentication scenarios.
|
|
25
|
+
*/
|
|
26
|
+
send(message: JSONRPCMessage, options?: {
|
|
27
|
+
relatedRequestId?: RequestId;
|
|
28
|
+
authInfo?: AuthInfo;
|
|
29
|
+
}): Promise<void>;
|
|
20
30
|
}
|
|
21
31
|
//# sourceMappingURL=inMemory.d.ts.map
|
|
@@ -1 +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;
|
|
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,SAAS,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAOlD;;GAEG;AACH,qBAAa,iBAAkB,YAAW,SAAS;IACjD,OAAO,CAAC,eAAe,CAAC,CAAoB;IAC5C,OAAO,CAAC,aAAa,CAAuB;IAE5C,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,EAAE,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,QAAQ,CAAA;KAAE,KAAK,IAAI,CAAC;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,MAAM,CAAC,gBAAgB,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAQ3D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B;;;OAGG;IACG,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,SAAS,CAAC;QAAC,QAAQ,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAWpH"}
|
package/dist/esm/inMemory.js
CHANGED
|
@@ -19,10 +19,8 @@ export class InMemoryTransport {
|
|
|
19
19
|
var _a;
|
|
20
20
|
// Process any messages that were queued before start was called
|
|
21
21
|
while (this._messageQueue.length > 0) {
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
(_a = this.onmessage) === null || _a === void 0 ? void 0 : _a.call(this, message);
|
|
25
|
-
}
|
|
22
|
+
const queuedMessage = this._messageQueue.shift();
|
|
23
|
+
(_a = this.onmessage) === null || _a === void 0 ? void 0 : _a.call(this, queuedMessage.message, queuedMessage.extra);
|
|
26
24
|
}
|
|
27
25
|
}
|
|
28
26
|
async close() {
|
|
@@ -32,15 +30,19 @@ export class InMemoryTransport {
|
|
|
32
30
|
await (other === null || other === void 0 ? void 0 : other.close());
|
|
33
31
|
(_a = this.onclose) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
34
32
|
}
|
|
35
|
-
|
|
33
|
+
/**
|
|
34
|
+
* Sends a message with optional auth info.
|
|
35
|
+
* This is useful for testing authentication scenarios.
|
|
36
|
+
*/
|
|
37
|
+
async send(message, options) {
|
|
36
38
|
if (!this._otherTransport) {
|
|
37
39
|
throw new Error("Not connected");
|
|
38
40
|
}
|
|
39
41
|
if (this._otherTransport.onmessage) {
|
|
40
|
-
this._otherTransport.onmessage(message);
|
|
42
|
+
this._otherTransport.onmessage(message, { authInfo: options === null || options === void 0 ? void 0 : options.authInfo });
|
|
41
43
|
}
|
|
42
44
|
else {
|
|
43
|
-
this._otherTransport._messageQueue.push(message);
|
|
45
|
+
this._otherTransport._messageQueue.push({ message, extra: { authInfo: options === null || options === void 0 ? void 0 : options.authInfo } });
|
|
44
46
|
}
|
|
45
47
|
}
|
|
46
48
|
}
|
package/dist/esm/inMemory.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inMemory.js","sourceRoot":"","sources":["../../src/inMemory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"inMemory.js","sourceRoot":"","sources":["../../src/inMemory.ts"],"names":[],"mappings":"AASA;;GAEG;AACH,MAAM,OAAO,iBAAiB;IAA9B;QAEU,kBAAa,GAAoB,EAAE,CAAC;IAgD9C,CAAC;IAzCC;;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,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAG,CAAC;YAClD,MAAA,IAAI,CAAC,SAAS,qDAAG,aAAa,CAAC,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;QAC/D,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;;;OAGG;IACH,KAAK,CAAC,IAAI,CAAC,OAAuB,EAAE,OAA+D;QACjG,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,EAAE,EAAE,QAAQ,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,EAAE,CAAC,CAAC;QAC3E,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC/F,CAAC;IACH,CAAC;CACF"}
|
|
@@ -18,5 +18,10 @@ export interface AuthInfo {
|
|
|
18
18
|
* When the token expires (in seconds since epoch).
|
|
19
19
|
*/
|
|
20
20
|
expiresAt?: number;
|
|
21
|
+
/**
|
|
22
|
+
* Additional data associated with the token.
|
|
23
|
+
* This field should be used for any additional data that needs to be attached to the auth info.
|
|
24
|
+
*/
|
|
25
|
+
extra?: Record<string, unknown>;
|
|
21
26
|
}
|
|
22
27
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/server/auth/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,MAAM,EAAE,MAAM,EAAE,CAAC;IAEjB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/server/auth/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,MAAM,EAAE,MAAM,EAAE,CAAC;IAEjB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;MAGE;IACF,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC"}
|
package/dist/esm/server/mcp.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Server, ServerOptions } from "./index.js";
|
|
2
|
-
import { z, ZodRawShape, ZodTypeAny, ZodType, ZodTypeDef, ZodOptional } from "zod";
|
|
3
|
-
import { Implementation, CallToolResult, Resource, ListResourcesResult, GetPromptResult, ReadResourceResult } from "../types.js";
|
|
2
|
+
import { z, ZodRawShape, ZodObject, AnyZodObject, ZodTypeAny, ZodType, ZodTypeDef, ZodOptional } from "zod";
|
|
3
|
+
import { Implementation, CallToolResult, Resource, ListResourcesResult, GetPromptResult, ReadResourceResult, ServerRequest, ServerNotification } from "../types.js";
|
|
4
4
|
import { UriTemplate, Variables } from "../shared/uriTemplate.js";
|
|
5
5
|
import { RequestHandlerExtra } from "../shared/protocol.js";
|
|
6
6
|
import { Transport } from "../shared/transport.js";
|
|
@@ -42,51 +42,68 @@ export declare class McpServer {
|
|
|
42
42
|
/**
|
|
43
43
|
* Registers a resource `name` at a fixed URI, which will use the given callback to respond to read requests.
|
|
44
44
|
*/
|
|
45
|
-
resource(name: string, uri: string, readCallback: ReadResourceCallback):
|
|
45
|
+
resource(name: string, uri: string, readCallback: ReadResourceCallback): RegisteredResource;
|
|
46
46
|
/**
|
|
47
47
|
* Registers a resource `name` at a fixed URI with metadata, which will use the given callback to respond to read requests.
|
|
48
48
|
*/
|
|
49
|
-
resource(name: string, uri: string, metadata: ResourceMetadata, readCallback: ReadResourceCallback):
|
|
49
|
+
resource(name: string, uri: string, metadata: ResourceMetadata, readCallback: ReadResourceCallback): RegisteredResource;
|
|
50
50
|
/**
|
|
51
51
|
* Registers a resource `name` with a template pattern, which will use the given callback to respond to read requests.
|
|
52
52
|
*/
|
|
53
|
-
resource(name: string, template: ResourceTemplate, readCallback: ReadResourceTemplateCallback):
|
|
53
|
+
resource(name: string, template: ResourceTemplate, readCallback: ReadResourceTemplateCallback): RegisteredResourceTemplate;
|
|
54
54
|
/**
|
|
55
55
|
* Registers a resource `name` with a template pattern and metadata, which will use the given callback to respond to read requests.
|
|
56
56
|
*/
|
|
57
|
-
resource(name: string, template: ResourceTemplate, metadata: ResourceMetadata, readCallback: ReadResourceTemplateCallback):
|
|
57
|
+
resource(name: string, template: ResourceTemplate, metadata: ResourceMetadata, readCallback: ReadResourceTemplateCallback): RegisteredResourceTemplate;
|
|
58
58
|
/**
|
|
59
59
|
* Registers a zero-argument tool `name`, which will run the given function when the client calls it.
|
|
60
60
|
*/
|
|
61
|
-
tool(name: string, cb: ToolCallback):
|
|
61
|
+
tool(name: string, cb: ToolCallback): RegisteredTool;
|
|
62
62
|
/**
|
|
63
63
|
* Registers a zero-argument tool `name` (with a description) which will run the given function when the client calls it.
|
|
64
64
|
*/
|
|
65
|
-
tool(name: string, description: string, cb: ToolCallback):
|
|
65
|
+
tool(name: string, description: string, cb: ToolCallback): RegisteredTool;
|
|
66
66
|
/**
|
|
67
67
|
* Registers a tool `name` accepting the given arguments, which must be an object containing named properties associated with Zod schemas. When the client calls it, the function will be run with the parsed and validated arguments.
|
|
68
68
|
*/
|
|
69
|
-
tool<Args extends ZodRawShape>(name: string, paramsSchema: Args, cb: ToolCallback<Args>):
|
|
69
|
+
tool<Args extends ZodRawShape>(name: string, paramsSchema: Args, cb: ToolCallback<Args>): RegisteredTool;
|
|
70
70
|
/**
|
|
71
71
|
* Registers a tool `name` (with a description) accepting the given arguments, which must be an object containing named properties associated with Zod schemas. When the client calls it, the function will be run with the parsed and validated arguments.
|
|
72
72
|
*/
|
|
73
|
-
tool<Args extends ZodRawShape>(name: string, description: string, paramsSchema: Args, cb: ToolCallback<Args>):
|
|
73
|
+
tool<Args extends ZodRawShape>(name: string, description: string, paramsSchema: Args, cb: ToolCallback<Args>): RegisteredTool;
|
|
74
74
|
/**
|
|
75
75
|
* Registers a zero-argument prompt `name`, which will run the given function when the client calls it.
|
|
76
76
|
*/
|
|
77
|
-
prompt(name: string, cb: PromptCallback):
|
|
77
|
+
prompt(name: string, cb: PromptCallback): RegisteredPrompt;
|
|
78
78
|
/**
|
|
79
79
|
* Registers a zero-argument prompt `name` (with a description) which will run the given function when the client calls it.
|
|
80
80
|
*/
|
|
81
|
-
prompt(name: string, description: string, cb: PromptCallback):
|
|
81
|
+
prompt(name: string, description: string, cb: PromptCallback): RegisteredPrompt;
|
|
82
82
|
/**
|
|
83
83
|
* Registers a prompt `name` accepting the given arguments, which must be an object containing named properties associated with Zod schemas. When the client calls it, the function will be run with the parsed and validated arguments.
|
|
84
84
|
*/
|
|
85
|
-
prompt<Args extends PromptArgsRawShape>(name: string, argsSchema: Args, cb: PromptCallback<Args>):
|
|
85
|
+
prompt<Args extends PromptArgsRawShape>(name: string, argsSchema: Args, cb: PromptCallback<Args>): RegisteredPrompt;
|
|
86
86
|
/**
|
|
87
87
|
* Registers a prompt `name` (with a description) accepting the given arguments, which must be an object containing named properties associated with Zod schemas. When the client calls it, the function will be run with the parsed and validated arguments.
|
|
88
88
|
*/
|
|
89
|
-
prompt<Args extends PromptArgsRawShape>(name: string, description: string, argsSchema: Args, cb: PromptCallback<Args>):
|
|
89
|
+
prompt<Args extends PromptArgsRawShape>(name: string, description: string, argsSchema: Args, cb: PromptCallback<Args>): RegisteredPrompt;
|
|
90
|
+
/**
|
|
91
|
+
* Checks if the server is connected to a transport.
|
|
92
|
+
* @returns True if the server is connected
|
|
93
|
+
*/
|
|
94
|
+
isConnected(): boolean;
|
|
95
|
+
/**
|
|
96
|
+
* Sends a resource list changed event to the client, if connected.
|
|
97
|
+
*/
|
|
98
|
+
sendResourceListChanged(): void;
|
|
99
|
+
/**
|
|
100
|
+
* Sends a tool list changed event to the client, if connected.
|
|
101
|
+
*/
|
|
102
|
+
sendToolListChanged(): void;
|
|
103
|
+
/**
|
|
104
|
+
* Sends a prompt list changed event to the client, if connected.
|
|
105
|
+
*/
|
|
106
|
+
sendPromptListChanged(): void;
|
|
90
107
|
}
|
|
91
108
|
/**
|
|
92
109
|
* A callback to complete one variable within a resource template's URI template.
|
|
@@ -129,7 +146,23 @@ export declare class ResourceTemplate {
|
|
|
129
146
|
*
|
|
130
147
|
* Parameters will include tool arguments, if applicable, as well as other request handler context.
|
|
131
148
|
*/
|
|
132
|
-
export type ToolCallback<Args extends undefined | ZodRawShape = undefined> = Args extends ZodRawShape ? (args: z.objectOutputType<Args, ZodTypeAny>, extra: RequestHandlerExtra) => CallToolResult | Promise<CallToolResult> : (extra: RequestHandlerExtra) => CallToolResult | Promise<CallToolResult>;
|
|
149
|
+
export type ToolCallback<Args extends undefined | ZodRawShape = undefined> = Args extends ZodRawShape ? (args: z.objectOutputType<Args, ZodTypeAny>, extra: RequestHandlerExtra<ServerRequest, ServerNotification>) => CallToolResult | Promise<CallToolResult> : (extra: RequestHandlerExtra<ServerRequest, ServerNotification>) => CallToolResult | Promise<CallToolResult>;
|
|
150
|
+
export type RegisteredTool = {
|
|
151
|
+
description?: string;
|
|
152
|
+
inputSchema?: AnyZodObject;
|
|
153
|
+
callback: ToolCallback<undefined | ZodRawShape>;
|
|
154
|
+
enabled: boolean;
|
|
155
|
+
enable(): void;
|
|
156
|
+
disable(): void;
|
|
157
|
+
update<Args extends ZodRawShape>(updates: {
|
|
158
|
+
name?: string | null;
|
|
159
|
+
description?: string;
|
|
160
|
+
paramsSchema?: Args;
|
|
161
|
+
callback?: ToolCallback<Args>;
|
|
162
|
+
enabled?: boolean;
|
|
163
|
+
}): void;
|
|
164
|
+
remove(): void;
|
|
165
|
+
};
|
|
133
166
|
/**
|
|
134
167
|
* Additional, optional information for annotating a resource.
|
|
135
168
|
*/
|
|
@@ -137,18 +170,66 @@ export type ResourceMetadata = Omit<Resource, "uri" | "name">;
|
|
|
137
170
|
/**
|
|
138
171
|
* Callback to list all resources matching a given template.
|
|
139
172
|
*/
|
|
140
|
-
export type ListResourcesCallback = (extra: RequestHandlerExtra) => ListResourcesResult | Promise<ListResourcesResult>;
|
|
173
|
+
export type ListResourcesCallback = (extra: RequestHandlerExtra<ServerRequest, ServerNotification>) => ListResourcesResult | Promise<ListResourcesResult>;
|
|
141
174
|
/**
|
|
142
175
|
* Callback to read a resource at a given URI.
|
|
143
176
|
*/
|
|
144
|
-
export type ReadResourceCallback = (uri: URL, extra: RequestHandlerExtra) => ReadResourceResult | Promise<ReadResourceResult>;
|
|
177
|
+
export type ReadResourceCallback = (uri: URL, extra: RequestHandlerExtra<ServerRequest, ServerNotification>) => ReadResourceResult | Promise<ReadResourceResult>;
|
|
178
|
+
export type RegisteredResource = {
|
|
179
|
+
name: string;
|
|
180
|
+
metadata?: ResourceMetadata;
|
|
181
|
+
readCallback: ReadResourceCallback;
|
|
182
|
+
enabled: boolean;
|
|
183
|
+
enable(): void;
|
|
184
|
+
disable(): void;
|
|
185
|
+
update(updates: {
|
|
186
|
+
name?: string;
|
|
187
|
+
uri?: string | null;
|
|
188
|
+
metadata?: ResourceMetadata;
|
|
189
|
+
callback?: ReadResourceCallback;
|
|
190
|
+
enabled?: boolean;
|
|
191
|
+
}): void;
|
|
192
|
+
remove(): void;
|
|
193
|
+
};
|
|
145
194
|
/**
|
|
146
195
|
* Callback to read a resource at a given URI, following a filled-in URI template.
|
|
147
196
|
*/
|
|
148
|
-
export type ReadResourceTemplateCallback = (uri: URL, variables: Variables, extra: RequestHandlerExtra) => ReadResourceResult | Promise<ReadResourceResult>;
|
|
197
|
+
export type ReadResourceTemplateCallback = (uri: URL, variables: Variables, extra: RequestHandlerExtra<ServerRequest, ServerNotification>) => ReadResourceResult | Promise<ReadResourceResult>;
|
|
198
|
+
export type RegisteredResourceTemplate = {
|
|
199
|
+
resourceTemplate: ResourceTemplate;
|
|
200
|
+
metadata?: ResourceMetadata;
|
|
201
|
+
readCallback: ReadResourceTemplateCallback;
|
|
202
|
+
enabled: boolean;
|
|
203
|
+
enable(): void;
|
|
204
|
+
disable(): void;
|
|
205
|
+
update(updates: {
|
|
206
|
+
name?: string | null;
|
|
207
|
+
template?: ResourceTemplate;
|
|
208
|
+
metadata?: ResourceMetadata;
|
|
209
|
+
callback?: ReadResourceTemplateCallback;
|
|
210
|
+
enabled?: boolean;
|
|
211
|
+
}): void;
|
|
212
|
+
remove(): void;
|
|
213
|
+
};
|
|
149
214
|
type PromptArgsRawShape = {
|
|
150
215
|
[k: string]: ZodType<string, ZodTypeDef, string> | ZodOptional<ZodType<string, ZodTypeDef, string>>;
|
|
151
216
|
};
|
|
152
|
-
export type PromptCallback<Args extends undefined | PromptArgsRawShape = undefined> = Args extends PromptArgsRawShape ? (args: z.objectOutputType<Args, ZodTypeAny>, extra: RequestHandlerExtra) => GetPromptResult | Promise<GetPromptResult> : (extra: RequestHandlerExtra) => GetPromptResult | Promise<GetPromptResult>;
|
|
217
|
+
export type PromptCallback<Args extends undefined | PromptArgsRawShape = undefined> = Args extends PromptArgsRawShape ? (args: z.objectOutputType<Args, ZodTypeAny>, extra: RequestHandlerExtra<ServerRequest, ServerNotification>) => GetPromptResult | Promise<GetPromptResult> : (extra: RequestHandlerExtra<ServerRequest, ServerNotification>) => GetPromptResult | Promise<GetPromptResult>;
|
|
218
|
+
export type RegisteredPrompt = {
|
|
219
|
+
description?: string;
|
|
220
|
+
argsSchema?: ZodObject<PromptArgsRawShape>;
|
|
221
|
+
callback: PromptCallback<undefined | PromptArgsRawShape>;
|
|
222
|
+
enabled: boolean;
|
|
223
|
+
enable(): void;
|
|
224
|
+
disable(): void;
|
|
225
|
+
update<Args extends PromptArgsRawShape>(updates: {
|
|
226
|
+
name?: string | null;
|
|
227
|
+
description?: string;
|
|
228
|
+
argsSchema?: Args;
|
|
229
|
+
callback?: PromptCallback<Args>;
|
|
230
|
+
enabled?: boolean;
|
|
231
|
+
}): void;
|
|
232
|
+
remove(): void;
|
|
233
|
+
};
|
|
153
234
|
export {};
|
|
154
235
|
//# sourceMappingURL=mcp.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../src/server/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEnD,OAAO,EACL,CAAC,EACD,WAAW,
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../src/server/mcp.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/server/mcp.js
CHANGED
|
@@ -42,10 +42,12 @@ export class McpServer {
|
|
|
42
42
|
this.server.assertCanSetRequestHandler(ListToolsRequestSchema.shape.method.value);
|
|
43
43
|
this.server.assertCanSetRequestHandler(CallToolRequestSchema.shape.method.value);
|
|
44
44
|
this.server.registerCapabilities({
|
|
45
|
-
tools: {
|
|
45
|
+
tools: {
|
|
46
|
+
listChanged: true
|
|
47
|
+
}
|
|
46
48
|
});
|
|
47
49
|
this.server.setRequestHandler(ListToolsRequestSchema, () => ({
|
|
48
|
-
tools: Object.entries(this._registeredTools).map(([name, tool]) => {
|
|
50
|
+
tools: Object.entries(this._registeredTools).filter(([, tool]) => tool.enabled).map(([name, tool]) => {
|
|
49
51
|
return {
|
|
50
52
|
name,
|
|
51
53
|
description: tool.description,
|
|
@@ -62,6 +64,9 @@ export class McpServer {
|
|
|
62
64
|
if (!tool) {
|
|
63
65
|
throw new McpError(ErrorCode.InvalidParams, `Tool ${request.params.name} not found`);
|
|
64
66
|
}
|
|
67
|
+
if (!tool.enabled) {
|
|
68
|
+
throw new McpError(ErrorCode.InvalidParams, `Tool ${request.params.name} disabled`);
|
|
69
|
+
}
|
|
65
70
|
if (tool.inputSchema) {
|
|
66
71
|
const parseResult = await tool.inputSchema.safeParseAsync(request.params.arguments);
|
|
67
72
|
if (!parseResult.success) {
|
|
@@ -124,7 +129,10 @@ export class McpServer {
|
|
|
124
129
|
async handlePromptCompletion(request, ref) {
|
|
125
130
|
const prompt = this._registeredPrompts[ref.name];
|
|
126
131
|
if (!prompt) {
|
|
127
|
-
throw new McpError(ErrorCode.InvalidParams, `Prompt ${
|
|
132
|
+
throw new McpError(ErrorCode.InvalidParams, `Prompt ${ref.name} not found`);
|
|
133
|
+
}
|
|
134
|
+
if (!prompt.enabled) {
|
|
135
|
+
throw new McpError(ErrorCode.InvalidParams, `Prompt ${ref.name} disabled`);
|
|
128
136
|
}
|
|
129
137
|
if (!prompt.argsSchema) {
|
|
130
138
|
return EMPTY_COMPLETION_RESULT;
|
|
@@ -161,10 +169,12 @@ export class McpServer {
|
|
|
161
169
|
this.server.assertCanSetRequestHandler(ListResourceTemplatesRequestSchema.shape.method.value);
|
|
162
170
|
this.server.assertCanSetRequestHandler(ReadResourceRequestSchema.shape.method.value);
|
|
163
171
|
this.server.registerCapabilities({
|
|
164
|
-
resources: {
|
|
172
|
+
resources: {
|
|
173
|
+
listChanged: true
|
|
174
|
+
}
|
|
165
175
|
});
|
|
166
176
|
this.server.setRequestHandler(ListResourcesRequestSchema, async (request, extra) => {
|
|
167
|
-
const resources = Object.entries(this._registeredResources).map(([uri, resource]) => ({
|
|
177
|
+
const resources = Object.entries(this._registeredResources).filter(([_, resource]) => resource.enabled).map(([uri, resource]) => ({
|
|
168
178
|
uri,
|
|
169
179
|
name: resource.name,
|
|
170
180
|
...resource.metadata,
|
|
@@ -197,6 +207,9 @@ export class McpServer {
|
|
|
197
207
|
// First check for exact resource match
|
|
198
208
|
const resource = this._registeredResources[uri.toString()];
|
|
199
209
|
if (resource) {
|
|
210
|
+
if (!resource.enabled) {
|
|
211
|
+
throw new McpError(ErrorCode.InvalidParams, `Resource ${uri} disabled`);
|
|
212
|
+
}
|
|
200
213
|
return resource.readCallback(uri, extra);
|
|
201
214
|
}
|
|
202
215
|
// Then check templates
|
|
@@ -218,10 +231,12 @@ export class McpServer {
|
|
|
218
231
|
this.server.assertCanSetRequestHandler(ListPromptsRequestSchema.shape.method.value);
|
|
219
232
|
this.server.assertCanSetRequestHandler(GetPromptRequestSchema.shape.method.value);
|
|
220
233
|
this.server.registerCapabilities({
|
|
221
|
-
prompts: {
|
|
234
|
+
prompts: {
|
|
235
|
+
listChanged: true
|
|
236
|
+
}
|
|
222
237
|
});
|
|
223
238
|
this.server.setRequestHandler(ListPromptsRequestSchema, () => ({
|
|
224
|
-
prompts: Object.entries(this._registeredPrompts).map(([name, prompt]) => {
|
|
239
|
+
prompts: Object.entries(this._registeredPrompts).filter(([, prompt]) => prompt.enabled).map(([name, prompt]) => {
|
|
225
240
|
return {
|
|
226
241
|
name,
|
|
227
242
|
description: prompt.description,
|
|
@@ -236,6 +251,9 @@ export class McpServer {
|
|
|
236
251
|
if (!prompt) {
|
|
237
252
|
throw new McpError(ErrorCode.InvalidParams, `Prompt ${request.params.name} not found`);
|
|
238
253
|
}
|
|
254
|
+
if (!prompt.enabled) {
|
|
255
|
+
throw new McpError(ErrorCode.InvalidParams, `Prompt ${request.params.name} disabled`);
|
|
256
|
+
}
|
|
239
257
|
if (prompt.argsSchema) {
|
|
240
258
|
const parseResult = await prompt.argsSchema.safeParseAsync(request.params.arguments);
|
|
241
259
|
if (!parseResult.success) {
|
|
@@ -263,23 +281,70 @@ export class McpServer {
|
|
|
263
281
|
if (this._registeredResources[uriOrTemplate]) {
|
|
264
282
|
throw new Error(`Resource ${uriOrTemplate} is already registered`);
|
|
265
283
|
}
|
|
266
|
-
|
|
284
|
+
const registeredResource = {
|
|
267
285
|
name,
|
|
268
286
|
metadata,
|
|
269
287
|
readCallback: readCallback,
|
|
288
|
+
enabled: true,
|
|
289
|
+
disable: () => registeredResource.update({ enabled: false }),
|
|
290
|
+
enable: () => registeredResource.update({ enabled: true }),
|
|
291
|
+
remove: () => registeredResource.update({ uri: null }),
|
|
292
|
+
update: (updates) => {
|
|
293
|
+
if (typeof updates.uri !== "undefined" && updates.uri !== uriOrTemplate) {
|
|
294
|
+
delete this._registeredResources[uriOrTemplate];
|
|
295
|
+
if (updates.uri)
|
|
296
|
+
this._registeredResources[updates.uri] = registeredResource;
|
|
297
|
+
}
|
|
298
|
+
if (typeof updates.name !== "undefined")
|
|
299
|
+
registeredResource.name = updates.name;
|
|
300
|
+
if (typeof updates.metadata !== "undefined")
|
|
301
|
+
registeredResource.metadata = updates.metadata;
|
|
302
|
+
if (typeof updates.callback !== "undefined")
|
|
303
|
+
registeredResource.readCallback = updates.callback;
|
|
304
|
+
if (typeof updates.enabled !== "undefined")
|
|
305
|
+
registeredResource.enabled = updates.enabled;
|
|
306
|
+
this.sendResourceListChanged();
|
|
307
|
+
},
|
|
270
308
|
};
|
|
309
|
+
this._registeredResources[uriOrTemplate] = registeredResource;
|
|
310
|
+
this.setResourceRequestHandlers();
|
|
311
|
+
this.sendResourceListChanged();
|
|
312
|
+
return registeredResource;
|
|
271
313
|
}
|
|
272
314
|
else {
|
|
273
315
|
if (this._registeredResourceTemplates[name]) {
|
|
274
316
|
throw new Error(`Resource template ${name} is already registered`);
|
|
275
317
|
}
|
|
276
|
-
|
|
318
|
+
const registeredResourceTemplate = {
|
|
277
319
|
resourceTemplate: uriOrTemplate,
|
|
278
320
|
metadata,
|
|
279
321
|
readCallback: readCallback,
|
|
322
|
+
enabled: true,
|
|
323
|
+
disable: () => registeredResourceTemplate.update({ enabled: false }),
|
|
324
|
+
enable: () => registeredResourceTemplate.update({ enabled: true }),
|
|
325
|
+
remove: () => registeredResourceTemplate.update({ name: null }),
|
|
326
|
+
update: (updates) => {
|
|
327
|
+
if (typeof updates.name !== "undefined" && updates.name !== name) {
|
|
328
|
+
delete this._registeredResourceTemplates[name];
|
|
329
|
+
if (updates.name)
|
|
330
|
+
this._registeredResourceTemplates[updates.name] = registeredResourceTemplate;
|
|
331
|
+
}
|
|
332
|
+
if (typeof updates.template !== "undefined")
|
|
333
|
+
registeredResourceTemplate.resourceTemplate = updates.template;
|
|
334
|
+
if (typeof updates.metadata !== "undefined")
|
|
335
|
+
registeredResourceTemplate.metadata = updates.metadata;
|
|
336
|
+
if (typeof updates.callback !== "undefined")
|
|
337
|
+
registeredResourceTemplate.readCallback = updates.callback;
|
|
338
|
+
if (typeof updates.enabled !== "undefined")
|
|
339
|
+
registeredResourceTemplate.enabled = updates.enabled;
|
|
340
|
+
this.sendResourceListChanged();
|
|
341
|
+
},
|
|
280
342
|
};
|
|
343
|
+
this._registeredResourceTemplates[name] = registeredResourceTemplate;
|
|
344
|
+
this.setResourceRequestHandlers();
|
|
345
|
+
this.sendResourceListChanged();
|
|
346
|
+
return registeredResourceTemplate;
|
|
281
347
|
}
|
|
282
|
-
this.setResourceRequestHandlers();
|
|
283
348
|
}
|
|
284
349
|
tool(name, ...rest) {
|
|
285
350
|
if (this._registeredTools[name]) {
|
|
@@ -294,12 +359,35 @@ export class McpServer {
|
|
|
294
359
|
paramsSchema = rest.shift();
|
|
295
360
|
}
|
|
296
361
|
const cb = rest[0];
|
|
297
|
-
|
|
362
|
+
const registeredTool = {
|
|
298
363
|
description,
|
|
299
364
|
inputSchema: paramsSchema === undefined ? undefined : z.object(paramsSchema),
|
|
300
365
|
callback: cb,
|
|
366
|
+
enabled: true,
|
|
367
|
+
disable: () => registeredTool.update({ enabled: false }),
|
|
368
|
+
enable: () => registeredTool.update({ enabled: true }),
|
|
369
|
+
remove: () => registeredTool.update({ name: null }),
|
|
370
|
+
update: (updates) => {
|
|
371
|
+
if (typeof updates.name !== "undefined" && updates.name !== name) {
|
|
372
|
+
delete this._registeredTools[name];
|
|
373
|
+
if (updates.name)
|
|
374
|
+
this._registeredTools[updates.name] = registeredTool;
|
|
375
|
+
}
|
|
376
|
+
if (typeof updates.description !== "undefined")
|
|
377
|
+
registeredTool.description = updates.description;
|
|
378
|
+
if (typeof updates.paramsSchema !== "undefined")
|
|
379
|
+
registeredTool.inputSchema = z.object(updates.paramsSchema);
|
|
380
|
+
if (typeof updates.callback !== "undefined")
|
|
381
|
+
registeredTool.callback = updates.callback;
|
|
382
|
+
if (typeof updates.enabled !== "undefined")
|
|
383
|
+
registeredTool.enabled = updates.enabled;
|
|
384
|
+
this.sendToolListChanged();
|
|
385
|
+
},
|
|
301
386
|
};
|
|
387
|
+
this._registeredTools[name] = registeredTool;
|
|
302
388
|
this.setToolRequestHandlers();
|
|
389
|
+
this.sendToolListChanged();
|
|
390
|
+
return registeredTool;
|
|
303
391
|
}
|
|
304
392
|
prompt(name, ...rest) {
|
|
305
393
|
if (this._registeredPrompts[name]) {
|
|
@@ -314,12 +402,66 @@ export class McpServer {
|
|
|
314
402
|
argsSchema = rest.shift();
|
|
315
403
|
}
|
|
316
404
|
const cb = rest[0];
|
|
317
|
-
|
|
405
|
+
const registeredPrompt = {
|
|
318
406
|
description,
|
|
319
407
|
argsSchema: argsSchema === undefined ? undefined : z.object(argsSchema),
|
|
320
408
|
callback: cb,
|
|
409
|
+
enabled: true,
|
|
410
|
+
disable: () => registeredPrompt.update({ enabled: false }),
|
|
411
|
+
enable: () => registeredPrompt.update({ enabled: true }),
|
|
412
|
+
remove: () => registeredPrompt.update({ name: null }),
|
|
413
|
+
update: (updates) => {
|
|
414
|
+
if (typeof updates.name !== "undefined" && updates.name !== name) {
|
|
415
|
+
delete this._registeredPrompts[name];
|
|
416
|
+
if (updates.name)
|
|
417
|
+
this._registeredPrompts[updates.name] = registeredPrompt;
|
|
418
|
+
}
|
|
419
|
+
if (typeof updates.description !== "undefined")
|
|
420
|
+
registeredPrompt.description = updates.description;
|
|
421
|
+
if (typeof updates.argsSchema !== "undefined")
|
|
422
|
+
registeredPrompt.argsSchema = z.object(updates.argsSchema);
|
|
423
|
+
if (typeof updates.callback !== "undefined")
|
|
424
|
+
registeredPrompt.callback = updates.callback;
|
|
425
|
+
if (typeof updates.enabled !== "undefined")
|
|
426
|
+
registeredPrompt.enabled = updates.enabled;
|
|
427
|
+
this.sendPromptListChanged();
|
|
428
|
+
},
|
|
321
429
|
};
|
|
430
|
+
this._registeredPrompts[name] = registeredPrompt;
|
|
322
431
|
this.setPromptRequestHandlers();
|
|
432
|
+
this.sendPromptListChanged();
|
|
433
|
+
return registeredPrompt;
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* Checks if the server is connected to a transport.
|
|
437
|
+
* @returns True if the server is connected
|
|
438
|
+
*/
|
|
439
|
+
isConnected() {
|
|
440
|
+
return this.server.transport !== undefined;
|
|
441
|
+
}
|
|
442
|
+
/**
|
|
443
|
+
* Sends a resource list changed event to the client, if connected.
|
|
444
|
+
*/
|
|
445
|
+
sendResourceListChanged() {
|
|
446
|
+
if (this.isConnected()) {
|
|
447
|
+
this.server.sendResourceListChanged();
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
/**
|
|
451
|
+
* Sends a tool list changed event to the client, if connected.
|
|
452
|
+
*/
|
|
453
|
+
sendToolListChanged() {
|
|
454
|
+
if (this.isConnected()) {
|
|
455
|
+
this.server.sendToolListChanged();
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
/**
|
|
459
|
+
* Sends a prompt list changed event to the client, if connected.
|
|
460
|
+
*/
|
|
461
|
+
sendPromptListChanged() {
|
|
462
|
+
if (this.isConnected()) {
|
|
463
|
+
this.server.sendPromptListChanged();
|
|
464
|
+
}
|
|
323
465
|
}
|
|
324
466
|
}
|
|
325
467
|
/**
|