@modelcontextprotocol/sdk 1.10.1 → 1.11.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 +21 -23
- package/dist/cjs/client/index.d.ts +57 -0
- package/dist/cjs/client/index.d.ts.map +1 -1
- package/dist/cjs/client/stdio.d.ts +4 -1
- package/dist/cjs/client/stdio.d.ts.map +1 -1
- package/dist/cjs/client/stdio.js +14 -1
- package/dist/cjs/client/stdio.js.map +1 -1
- package/dist/cjs/examples/client/multipleClientsParallel.d.ts +2 -0
- package/dist/cjs/examples/client/multipleClientsParallel.d.ts.map +1 -0
- package/dist/cjs/examples/client/multipleClientsParallel.js +134 -0
- package/dist/cjs/examples/client/multipleClientsParallel.js.map +1 -0
- package/dist/cjs/examples/client/parallelToolCallsClient.d.ts +2 -0
- package/dist/cjs/examples/client/parallelToolCallsClient.d.ts.map +1 -0
- package/dist/cjs/examples/client/parallelToolCallsClient.js +175 -0
- package/dist/cjs/examples/client/parallelToolCallsClient.js.map +1 -0
- package/dist/cjs/examples/server/jsonResponseStreamableHttp.js +50 -47
- package/dist/cjs/examples/server/jsonResponseStreamableHttp.js.map +1 -1
- package/dist/cjs/examples/server/simpleSseServer.js +46 -46
- package/dist/cjs/examples/server/simpleSseServer.js.map +1 -1
- package/dist/cjs/examples/server/simpleStatelessStreamableHttp.js +78 -87
- package/dist/cjs/examples/server/simpleStatelessStreamableHttp.js.map +1 -1
- package/dist/cjs/examples/server/simpleStreamableHttp.js +108 -101
- package/dist/cjs/examples/server/simpleStreamableHttp.js.map +1 -1
- package/dist/cjs/examples/server/sseAndStreamableHttpCompatibleServer.js +42 -38
- package/dist/cjs/examples/server/sseAndStreamableHttpCompatibleServer.js.map +1 -1
- package/dist/cjs/server/mcp.d.ts +24 -5
- package/dist/cjs/server/mcp.d.ts.map +1 -1
- package/dist/cjs/server/mcp.js +31 -1
- package/dist/cjs/server/mcp.js.map +1 -1
- package/dist/cjs/server/streamableHttp.d.ts +3 -3
- package/dist/cjs/server/streamableHttp.d.ts.map +1 -1
- package/dist/cjs/server/streamableHttp.js +11 -11
- package/dist/cjs/server/streamableHttp.js.map +1 -1
- package/dist/cjs/shared/protocol.d.ts +10 -1
- package/dist/cjs/shared/protocol.d.ts.map +1 -1
- package/dist/cjs/shared/protocol.js +3 -1
- package/dist/cjs/shared/protocol.js.map +1 -1
- package/dist/cjs/types.d.ts +2645 -24
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/types.js +67 -10
- package/dist/cjs/types.js.map +1 -1
- package/dist/esm/client/index.d.ts +57 -0
- package/dist/esm/client/index.d.ts.map +1 -1
- package/dist/esm/client/stdio.d.ts +4 -1
- package/dist/esm/client/stdio.d.ts.map +1 -1
- package/dist/esm/client/stdio.js +14 -1
- package/dist/esm/client/stdio.js.map +1 -1
- package/dist/esm/examples/client/multipleClientsParallel.d.ts +2 -0
- package/dist/esm/examples/client/multipleClientsParallel.d.ts.map +1 -0
- package/dist/esm/examples/client/multipleClientsParallel.js +132 -0
- package/dist/esm/examples/client/multipleClientsParallel.js.map +1 -0
- package/dist/esm/examples/client/parallelToolCallsClient.d.ts +2 -0
- package/dist/esm/examples/client/parallelToolCallsClient.d.ts.map +1 -0
- package/dist/esm/examples/client/parallelToolCallsClient.js +173 -0
- package/dist/esm/examples/client/parallelToolCallsClient.js.map +1 -0
- package/dist/esm/examples/server/jsonResponseStreamableHttp.js +50 -47
- package/dist/esm/examples/server/jsonResponseStreamableHttp.js.map +1 -1
- package/dist/esm/examples/server/simpleSseServer.js +46 -46
- package/dist/esm/examples/server/simpleSseServer.js.map +1 -1
- package/dist/esm/examples/server/simpleStatelessStreamableHttp.js +78 -87
- package/dist/esm/examples/server/simpleStatelessStreamableHttp.js.map +1 -1
- package/dist/esm/examples/server/simpleStreamableHttp.js +108 -101
- package/dist/esm/examples/server/simpleStreamableHttp.js.map +1 -1
- package/dist/esm/examples/server/sseAndStreamableHttpCompatibleServer.js +42 -38
- package/dist/esm/examples/server/sseAndStreamableHttpCompatibleServer.js.map +1 -1
- package/dist/esm/server/mcp.d.ts +24 -5
- package/dist/esm/server/mcp.d.ts.map +1 -1
- package/dist/esm/server/mcp.js +32 -2
- package/dist/esm/server/mcp.js.map +1 -1
- package/dist/esm/server/streamableHttp.d.ts +3 -3
- package/dist/esm/server/streamableHttp.d.ts.map +1 -1
- package/dist/esm/server/streamableHttp.js +11 -11
- package/dist/esm/server/streamableHttp.js.map +1 -1
- package/dist/esm/shared/protocol.d.ts +10 -1
- package/dist/esm/shared/protocol.d.ts.map +1 -1
- package/dist/esm/shared/protocol.js +3 -1
- package/dist/esm/shared/protocol.js.map +1 -1
- package/dist/esm/types.d.ts +2645 -24
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/types.js +66 -9
- package/dist/esm/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,116 +1,123 @@
|
|
|
1
1
|
import express from 'express';
|
|
2
2
|
import { randomUUID } from 'node:crypto';
|
|
3
|
+
import { z } from 'zod';
|
|
3
4
|
import { McpServer } from '../../server/mcp.js';
|
|
4
5
|
import { StreamableHTTPServerTransport } from '../../server/streamableHttp.js';
|
|
5
|
-
import { z } from 'zod';
|
|
6
6
|
import { isInitializeRequest } from '../../types.js';
|
|
7
7
|
import { InMemoryEventStore } from '../shared/inMemoryEventStore.js';
|
|
8
8
|
// Create an MCP server with implementation details
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
// Register a tool that sends multiple greetings with notifications
|
|
27
|
-
server.tool('multi-greet', 'A tool that sends different greetings with delays between them', {
|
|
28
|
-
name: z.string().describe('Name to greet'),
|
|
29
|
-
}, async ({ name }, { sendNotification }) => {
|
|
30
|
-
const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
|
|
31
|
-
await sendNotification({
|
|
32
|
-
method: "notifications/message",
|
|
33
|
-
params: { level: "debug", data: `Starting multi-greet for ${name}` }
|
|
9
|
+
const getServer = () => {
|
|
10
|
+
const server = new McpServer({
|
|
11
|
+
name: 'simple-streamable-http-server',
|
|
12
|
+
version: '1.0.0',
|
|
13
|
+
}, { capabilities: { logging: {} } });
|
|
14
|
+
// Register a simple tool that returns a greeting
|
|
15
|
+
server.tool('greet', 'A simple greeting tool', {
|
|
16
|
+
name: z.string().describe('Name to greet'),
|
|
17
|
+
}, async ({ name }) => {
|
|
18
|
+
return {
|
|
19
|
+
content: [
|
|
20
|
+
{
|
|
21
|
+
type: 'text',
|
|
22
|
+
text: `Hello, ${name}!`,
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
};
|
|
34
26
|
});
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
27
|
+
// Register a tool that sends multiple greetings with notifications (with annotations)
|
|
28
|
+
server.tool('multi-greet', 'A tool that sends different greetings with delays between them', {
|
|
29
|
+
name: z.string().describe('Name to greet'),
|
|
30
|
+
}, {
|
|
31
|
+
title: 'Multiple Greeting Tool',
|
|
32
|
+
readOnlyHint: true,
|
|
33
|
+
openWorldHint: false
|
|
34
|
+
}, async ({ name }, { sendNotification }) => {
|
|
35
|
+
const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
|
|
36
|
+
await sendNotification({
|
|
37
|
+
method: "notifications/message",
|
|
38
|
+
params: { level: "debug", data: `Starting multi-greet for ${name}` }
|
|
39
|
+
});
|
|
40
|
+
await sleep(1000); // Wait 1 second before first greeting
|
|
41
|
+
await sendNotification({
|
|
42
|
+
method: "notifications/message",
|
|
43
|
+
params: { level: "info", data: `Sending first greeting to ${name}` }
|
|
44
|
+
});
|
|
45
|
+
await sleep(1000); // Wait another second before second greeting
|
|
46
|
+
await sendNotification({
|
|
47
|
+
method: "notifications/message",
|
|
48
|
+
params: { level: "info", data: `Sending second greeting to ${name}` }
|
|
49
|
+
});
|
|
50
|
+
return {
|
|
51
|
+
content: [
|
|
52
|
+
{
|
|
53
|
+
type: 'text',
|
|
54
|
+
text: `Good morning, ${name}!`,
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
};
|
|
39
58
|
});
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
59
|
+
// Register a simple prompt
|
|
60
|
+
server.prompt('greeting-template', 'A simple greeting prompt template', {
|
|
61
|
+
name: z.string().describe('Name to include in greeting'),
|
|
62
|
+
}, async ({ name }) => {
|
|
63
|
+
return {
|
|
64
|
+
messages: [
|
|
65
|
+
{
|
|
66
|
+
role: 'user',
|
|
67
|
+
content: {
|
|
68
|
+
type: 'text',
|
|
69
|
+
text: `Please greet ${name} in a friendly manner.`,
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
],
|
|
73
|
+
};
|
|
44
74
|
});
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
75
|
+
// Register a tool specifically for testing resumability
|
|
76
|
+
server.tool('start-notification-stream', 'Starts sending periodic notifications for testing resumability', {
|
|
77
|
+
interval: z.number().describe('Interval in milliseconds between notifications').default(100),
|
|
78
|
+
count: z.number().describe('Number of notifications to send (0 for 100)').default(50),
|
|
79
|
+
}, async ({ interval, count }, { sendNotification }) => {
|
|
80
|
+
const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
|
|
81
|
+
let counter = 0;
|
|
82
|
+
while (count === 0 || counter < count) {
|
|
83
|
+
counter++;
|
|
84
|
+
try {
|
|
85
|
+
await sendNotification({
|
|
86
|
+
method: "notifications/message",
|
|
87
|
+
params: {
|
|
88
|
+
level: "info",
|
|
89
|
+
data: `Periodic notification #${counter} at ${new Date().toISOString()}`
|
|
90
|
+
}
|
|
91
|
+
});
|
|
50
92
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
}
|
|
54
|
-
//
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
{
|
|
61
|
-
role: 'user',
|
|
62
|
-
content: {
|
|
93
|
+
catch (error) {
|
|
94
|
+
console.error("Error sending notification:", error);
|
|
95
|
+
}
|
|
96
|
+
// Wait for the specified interval
|
|
97
|
+
await sleep(interval);
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
content: [
|
|
101
|
+
{
|
|
63
102
|
type: 'text',
|
|
64
|
-
text: `
|
|
65
|
-
},
|
|
66
|
-
},
|
|
67
|
-
],
|
|
68
|
-
};
|
|
69
|
-
});
|
|
70
|
-
// Register a tool specifically for testing resumability
|
|
71
|
-
server.tool('start-notification-stream', 'Starts sending periodic notifications for testing resumability', {
|
|
72
|
-
interval: z.number().describe('Interval in milliseconds between notifications').default(100),
|
|
73
|
-
count: z.number().describe('Number of notifications to send (0 for 100)').default(50),
|
|
74
|
-
}, async ({ interval, count }, { sendNotification }) => {
|
|
75
|
-
const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
|
|
76
|
-
let counter = 0;
|
|
77
|
-
while (count === 0 || counter < count) {
|
|
78
|
-
counter++;
|
|
79
|
-
try {
|
|
80
|
-
await sendNotification({
|
|
81
|
-
method: "notifications/message",
|
|
82
|
-
params: {
|
|
83
|
-
level: "info",
|
|
84
|
-
data: `Periodic notification #${counter} at ${new Date().toISOString()}`
|
|
103
|
+
text: `Started sending periodic notifications every ${interval}ms`,
|
|
85
104
|
}
|
|
86
|
-
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
});
|
|
103
|
-
// Create a simple resource at a fixed URI
|
|
104
|
-
server.resource('greeting-resource', 'https://example.com/greetings/default', { mimeType: 'text/plain' }, async () => {
|
|
105
|
-
return {
|
|
106
|
-
contents: [
|
|
107
|
-
{
|
|
108
|
-
uri: 'https://example.com/greetings/default',
|
|
109
|
-
text: 'Hello, world!',
|
|
110
|
-
},
|
|
111
|
-
],
|
|
112
|
-
};
|
|
113
|
-
});
|
|
105
|
+
],
|
|
106
|
+
};
|
|
107
|
+
});
|
|
108
|
+
// Create a simple resource at a fixed URI
|
|
109
|
+
server.resource('greeting-resource', 'https://example.com/greetings/default', { mimeType: 'text/plain' }, async () => {
|
|
110
|
+
return {
|
|
111
|
+
contents: [
|
|
112
|
+
{
|
|
113
|
+
uri: 'https://example.com/greetings/default',
|
|
114
|
+
text: 'Hello, world!',
|
|
115
|
+
},
|
|
116
|
+
],
|
|
117
|
+
};
|
|
118
|
+
});
|
|
119
|
+
return server;
|
|
120
|
+
};
|
|
114
121
|
const app = express();
|
|
115
122
|
app.use(express.json());
|
|
116
123
|
// Map to store transports by session ID
|
|
@@ -148,6 +155,7 @@ app.post('/mcp', async (req, res) => {
|
|
|
148
155
|
};
|
|
149
156
|
// Connect the transport to the MCP server BEFORE handling the request
|
|
150
157
|
// so responses can flow back through the same transport
|
|
158
|
+
const server = getServer();
|
|
151
159
|
await server.connect(transport);
|
|
152
160
|
await transport.handleRequest(req, res, req.body);
|
|
153
161
|
return; // Already handled
|
|
@@ -238,7 +246,6 @@ process.on('SIGINT', async () => {
|
|
|
238
246
|
console.error(`Error closing transport for session ${sessionId}:`, error);
|
|
239
247
|
}
|
|
240
248
|
}
|
|
241
|
-
await server.close();
|
|
242
249
|
console.log('Server shutdown complete');
|
|
243
250
|
process.exit(0);
|
|
244
251
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simpleStreamableHttp.js","sourceRoot":"","sources":["../../../../src/examples/server/simpleStreamableHttp.ts"],"names":[],"mappings":"AAAA,OAAO,OAA8B,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"simpleStreamableHttp.js","sourceRoot":"","sources":["../../../../src/examples/server/simpleStreamableHttp.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,43 +16,46 @@ import { InMemoryEventStore } from '../shared/inMemoryEventStore.js';
|
|
|
16
16
|
* - /sse: The deprecated SSE endpoint for older clients (GET to establish stream)
|
|
17
17
|
* - /messages: The deprecated POST endpoint for older clients (POST to send messages)
|
|
18
18
|
*/
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
counter
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
catch (error) {
|
|
42
|
-
console.error("Error sending notification:", error);
|
|
43
|
-
}
|
|
44
|
-
// Wait for the specified interval
|
|
45
|
-
await sleep(interval);
|
|
46
|
-
}
|
|
47
|
-
return {
|
|
48
|
-
content: [
|
|
49
|
-
{
|
|
50
|
-
type: 'text',
|
|
51
|
-
text: `Started sending periodic notifications every ${interval}ms`,
|
|
19
|
+
const getServer = () => {
|
|
20
|
+
const server = new McpServer({
|
|
21
|
+
name: 'backwards-compatible-server',
|
|
22
|
+
version: '1.0.0',
|
|
23
|
+
}, { capabilities: { logging: {} } });
|
|
24
|
+
// Register a simple tool that sends notifications over time
|
|
25
|
+
server.tool('start-notification-stream', 'Starts sending periodic notifications for testing resumability', {
|
|
26
|
+
interval: z.number().describe('Interval in milliseconds between notifications').default(100),
|
|
27
|
+
count: z.number().describe('Number of notifications to send (0 for 100)').default(50),
|
|
28
|
+
}, async ({ interval, count }, { sendNotification }) => {
|
|
29
|
+
const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
|
|
30
|
+
let counter = 0;
|
|
31
|
+
while (count === 0 || counter < count) {
|
|
32
|
+
counter++;
|
|
33
|
+
try {
|
|
34
|
+
await sendNotification({
|
|
35
|
+
method: "notifications/message",
|
|
36
|
+
params: {
|
|
37
|
+
level: "info",
|
|
38
|
+
data: `Periodic notification #${counter} at ${new Date().toISOString()}`
|
|
39
|
+
}
|
|
40
|
+
});
|
|
52
41
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
console.error("Error sending notification:", error);
|
|
44
|
+
}
|
|
45
|
+
// Wait for the specified interval
|
|
46
|
+
await sleep(interval);
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
content: [
|
|
50
|
+
{
|
|
51
|
+
type: 'text',
|
|
52
|
+
text: `Started sending periodic notifications every ${interval}ms`,
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
};
|
|
56
|
+
});
|
|
57
|
+
return server;
|
|
58
|
+
};
|
|
56
59
|
// Create Express application
|
|
57
60
|
const app = express();
|
|
58
61
|
app.use(express.json());
|
|
@@ -108,6 +111,7 @@ app.all('/mcp', async (req, res) => {
|
|
|
108
111
|
}
|
|
109
112
|
};
|
|
110
113
|
// Connect the transport to the MCP server
|
|
114
|
+
const server = getServer();
|
|
111
115
|
await server.connect(transport);
|
|
112
116
|
}
|
|
113
117
|
else {
|
|
@@ -149,6 +153,7 @@ app.get('/sse', async (req, res) => {
|
|
|
149
153
|
res.on("close", () => {
|
|
150
154
|
delete transports[transport.sessionId];
|
|
151
155
|
});
|
|
156
|
+
const server = getServer();
|
|
152
157
|
await server.connect(transport);
|
|
153
158
|
});
|
|
154
159
|
app.post("/messages", async (req, res) => {
|
|
@@ -172,7 +177,7 @@ app.post("/messages", async (req, res) => {
|
|
|
172
177
|
return;
|
|
173
178
|
}
|
|
174
179
|
if (transport) {
|
|
175
|
-
await transport.handlePostMessage(req, res);
|
|
180
|
+
await transport.handlePostMessage(req, res, req.body);
|
|
176
181
|
}
|
|
177
182
|
else {
|
|
178
183
|
res.status(400).send('No transport found for sessionId');
|
|
@@ -217,7 +222,6 @@ process.on('SIGINT', async () => {
|
|
|
217
222
|
console.error(`Error closing transport for session ${sessionId}:`, error);
|
|
218
223
|
}
|
|
219
224
|
}
|
|
220
|
-
await server.close();
|
|
221
225
|
console.log('Server shutdown complete');
|
|
222
226
|
process.exit(0);
|
|
223
227
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sseAndStreamableHttpCompatibleServer.js","sourceRoot":"","sources":["../../../../src/examples/server/sseAndStreamableHttpCompatibleServer.ts"],"names":[],"mappings":"AAAA,OAAO,OAA8B,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAkB,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAErE;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"sseAndStreamableHttpCompatibleServer.js","sourceRoot":"","sources":["../../../../src/examples/server/sseAndStreamableHttpCompatibleServer.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/server/mcp.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Server, ServerOptions } from "./index.js";
|
|
2
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";
|
|
3
|
+
import { Implementation, CallToolResult, Resource, ListResourcesResult, GetPromptResult, ReadResourceResult, ServerRequest, ServerNotification, ToolAnnotations } 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";
|
|
@@ -64,13 +64,30 @@ export declare class McpServer {
|
|
|
64
64
|
*/
|
|
65
65
|
tool(name: string, description: string, cb: ToolCallback): RegisteredTool;
|
|
66
66
|
/**
|
|
67
|
-
* Registers a tool
|
|
67
|
+
* Registers a tool taking either a parameter schema for validation or annotations for additional metadata.
|
|
68
|
+
* This unified overload handles both `tool(name, paramsSchema, cb)` and `tool(name, annotations, cb)` cases.
|
|
69
|
+
*
|
|
70
|
+
* Note: We use a union type for the second parameter because TypeScript cannot reliably disambiguate
|
|
71
|
+
* between ToolAnnotations and ZodRawShape during overload resolution, as both are plain object types.
|
|
72
|
+
*/
|
|
73
|
+
tool<Args extends ZodRawShape>(name: string, paramsSchemaOrAnnotations: Args | ToolAnnotations, cb: ToolCallback<Args>): RegisteredTool;
|
|
74
|
+
/**
|
|
75
|
+
* Registers a tool `name` (with a description) taking either parameter schema or annotations.
|
|
76
|
+
* This unified overload handles both `tool(name, description, paramsSchema, cb)` and
|
|
77
|
+
* `tool(name, description, annotations, cb)` cases.
|
|
78
|
+
*
|
|
79
|
+
* Note: We use a union type for the third parameter because TypeScript cannot reliably disambiguate
|
|
80
|
+
* between ToolAnnotations and ZodRawShape during overload resolution, as both are plain object types.
|
|
81
|
+
*/
|
|
82
|
+
tool<Args extends ZodRawShape>(name: string, description: string, paramsSchemaOrAnnotations: Args | ToolAnnotations, cb: ToolCallback<Args>): RegisteredTool;
|
|
83
|
+
/**
|
|
84
|
+
* Registers a tool with both parameter schema and annotations.
|
|
68
85
|
*/
|
|
69
|
-
tool<Args extends ZodRawShape>(name: string, paramsSchema: Args, cb: ToolCallback<Args>): RegisteredTool;
|
|
86
|
+
tool<Args extends ZodRawShape>(name: string, paramsSchema: Args, annotations: ToolAnnotations, cb: ToolCallback<Args>): RegisteredTool;
|
|
70
87
|
/**
|
|
71
|
-
* Registers a tool
|
|
88
|
+
* Registers a tool with description, parameter schema, and annotations.
|
|
72
89
|
*/
|
|
73
|
-
tool<Args extends ZodRawShape>(name: string, description: string, paramsSchema: Args, cb: ToolCallback<Args>): RegisteredTool;
|
|
90
|
+
tool<Args extends ZodRawShape>(name: string, description: string, paramsSchema: Args, annotations: ToolAnnotations, cb: ToolCallback<Args>): RegisteredTool;
|
|
74
91
|
/**
|
|
75
92
|
* Registers a zero-argument prompt `name`, which will run the given function when the client calls it.
|
|
76
93
|
*/
|
|
@@ -150,6 +167,7 @@ export type ToolCallback<Args extends undefined | ZodRawShape = undefined> = Arg
|
|
|
150
167
|
export type RegisteredTool = {
|
|
151
168
|
description?: string;
|
|
152
169
|
inputSchema?: AnyZodObject;
|
|
170
|
+
annotations?: ToolAnnotations;
|
|
153
171
|
callback: ToolCallback<undefined | ZodRawShape>;
|
|
154
172
|
enabled: boolean;
|
|
155
173
|
enable(): void;
|
|
@@ -159,6 +177,7 @@ export type RegisteredTool = {
|
|
|
159
177
|
description?: string;
|
|
160
178
|
paramsSchema?: Args;
|
|
161
179
|
callback?: ToolCallback<Args>;
|
|
180
|
+
annotations?: ToolAnnotations;
|
|
162
181
|
enabled?: boolean;
|
|
163
182
|
}): void;
|
|
164
183
|
remove(): void;
|
|
@@ -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,EACX,SAAS,EAET,YAAY,EACZ,UAAU,EACV,OAAO,EACP,UAAU,EACV,WAAW,EACZ,MAAM,KAAK,CAAC;AACb,OAAO,EACL,cAAc,EAGd,cAAc,EAOd,QAAQ,EACR,mBAAmB,EAYnB,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,kBAAkB,
|
|
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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Server } from "./index.js";
|
|
2
2
|
import { zodToJsonSchema } from "zod-to-json-schema";
|
|
3
|
-
import { z, } from "zod";
|
|
3
|
+
import { z, ZodType, } from "zod";
|
|
4
4
|
import { McpError, ErrorCode, ListResourceTemplatesRequestSchema, ReadResourceRequestSchema, ListToolsRequestSchema, CallToolRequestSchema, ListResourcesRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema, CompleteRequestSchema, } from "../types.js";
|
|
5
5
|
import { Completable } from "./completable.js";
|
|
6
6
|
import { UriTemplate } from "../shared/uriTemplate.js";
|
|
@@ -56,6 +56,7 @@ export class McpServer {
|
|
|
56
56
|
strictUnions: true,
|
|
57
57
|
})
|
|
58
58
|
: EMPTY_OBJECT_JSON_SCHEMA,
|
|
59
|
+
annotations: tool.annotations,
|
|
59
60
|
};
|
|
60
61
|
}),
|
|
61
62
|
}));
|
|
@@ -350,18 +351,45 @@ export class McpServer {
|
|
|
350
351
|
if (this._registeredTools[name]) {
|
|
351
352
|
throw new Error(`Tool ${name} is already registered`);
|
|
352
353
|
}
|
|
354
|
+
// Helper to check if an object is a Zod schema (ZodRawShape)
|
|
355
|
+
const isZodRawShape = (obj) => {
|
|
356
|
+
if (typeof obj !== "object" || obj === null)
|
|
357
|
+
return false;
|
|
358
|
+
// Check that at least one property is a ZodType instance
|
|
359
|
+
return Object.values(obj).some(v => v instanceof ZodType);
|
|
360
|
+
};
|
|
353
361
|
let description;
|
|
354
362
|
if (typeof rest[0] === "string") {
|
|
355
363
|
description = rest.shift();
|
|
356
364
|
}
|
|
357
365
|
let paramsSchema;
|
|
366
|
+
let annotations;
|
|
367
|
+
// Handle the different overload combinations
|
|
358
368
|
if (rest.length > 1) {
|
|
359
|
-
|
|
369
|
+
// We have at least two more args before the callback
|
|
370
|
+
const firstArg = rest[0];
|
|
371
|
+
if (isZodRawShape(firstArg)) {
|
|
372
|
+
// We have a params schema as the first arg
|
|
373
|
+
paramsSchema = rest.shift();
|
|
374
|
+
// Check if the next arg is potentially annotations
|
|
375
|
+
if (rest.length > 1 && typeof rest[0] === "object" && rest[0] !== null && !(isZodRawShape(rest[0]))) {
|
|
376
|
+
// Case: tool(name, paramsSchema, annotations, cb)
|
|
377
|
+
// Or: tool(name, description, paramsSchema, annotations, cb)
|
|
378
|
+
annotations = rest.shift();
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
else if (typeof firstArg === "object" && firstArg !== null) {
|
|
382
|
+
// Not a ZodRawShape, so must be annotations in this position
|
|
383
|
+
// Case: tool(name, annotations, cb)
|
|
384
|
+
// Or: tool(name, description, annotations, cb)
|
|
385
|
+
annotations = rest.shift();
|
|
386
|
+
}
|
|
360
387
|
}
|
|
361
388
|
const cb = rest[0];
|
|
362
389
|
const registeredTool = {
|
|
363
390
|
description,
|
|
364
391
|
inputSchema: paramsSchema === undefined ? undefined : z.object(paramsSchema),
|
|
392
|
+
annotations,
|
|
365
393
|
callback: cb,
|
|
366
394
|
enabled: true,
|
|
367
395
|
disable: () => registeredTool.update({ enabled: false }),
|
|
@@ -379,6 +407,8 @@ export class McpServer {
|
|
|
379
407
|
registeredTool.inputSchema = z.object(updates.paramsSchema);
|
|
380
408
|
if (typeof updates.callback !== "undefined")
|
|
381
409
|
registeredTool.callback = updates.callback;
|
|
410
|
+
if (typeof updates.annotations !== "undefined")
|
|
411
|
+
registeredTool.annotations = updates.annotations;
|
|
382
412
|
if (typeof updates.enabled !== "undefined")
|
|
383
413
|
registeredTool.enabled = updates.enabled;
|
|
384
414
|
this.sendToolListChanged();
|