@modelcontextprotocol/sdk 1.25.3 → 1.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/cjs/client/auth-extensions.d.ts +12 -0
  2. package/dist/cjs/client/auth-extensions.d.ts.map +1 -1
  3. package/dist/cjs/client/auth-extensions.js +6 -3
  4. package/dist/cjs/client/auth-extensions.js.map +1 -1
  5. package/dist/cjs/examples/server/elicitationFormExample.js +250 -244
  6. package/dist/cjs/examples/server/elicitationFormExample.js.map +1 -1
  7. package/dist/cjs/examples/server/honoWebStandardStreamableHttp.js +31 -27
  8. package/dist/cjs/examples/server/honoWebStandardStreamableHttp.js.map +1 -1
  9. package/dist/cjs/examples/server/ssePollingExample.js +58 -53
  10. package/dist/cjs/examples/server/ssePollingExample.js.map +1 -1
  11. package/dist/cjs/examples/server/standaloneSseWithGetStreamableHttp.js +33 -21
  12. package/dist/cjs/examples/server/standaloneSseWithGetStreamableHttp.js.map +1 -1
  13. package/dist/cjs/server/webStandardStreamableHttp.d.ts +1 -0
  14. package/dist/cjs/server/webStandardStreamableHttp.d.ts.map +1 -1
  15. package/dist/cjs/server/webStandardStreamableHttp.js +7 -0
  16. package/dist/cjs/server/webStandardStreamableHttp.js.map +1 -1
  17. package/dist/cjs/shared/protocol.d.ts.map +1 -1
  18. package/dist/cjs/shared/protocol.js +13 -0
  19. package/dist/cjs/shared/protocol.js.map +1 -1
  20. package/dist/esm/client/auth-extensions.d.ts +12 -0
  21. package/dist/esm/client/auth-extensions.d.ts.map +1 -1
  22. package/dist/esm/client/auth-extensions.js +6 -3
  23. package/dist/esm/client/auth-extensions.js.map +1 -1
  24. package/dist/esm/examples/server/elicitationFormExample.js +250 -244
  25. package/dist/esm/examples/server/elicitationFormExample.js.map +1 -1
  26. package/dist/esm/examples/server/honoWebStandardStreamableHttp.js +31 -27
  27. package/dist/esm/examples/server/honoWebStandardStreamableHttp.js.map +1 -1
  28. package/dist/esm/examples/server/ssePollingExample.js +58 -53
  29. package/dist/esm/examples/server/ssePollingExample.js.map +1 -1
  30. package/dist/esm/examples/server/standaloneSseWithGetStreamableHttp.js +33 -21
  31. package/dist/esm/examples/server/standaloneSseWithGetStreamableHttp.js.map +1 -1
  32. package/dist/esm/server/webStandardStreamableHttp.d.ts +1 -0
  33. package/dist/esm/server/webStandardStreamableHttp.d.ts.map +1 -1
  34. package/dist/esm/server/webStandardStreamableHttp.js +7 -0
  35. package/dist/esm/server/webStandardStreamableHttp.js.map +1 -1
  36. package/dist/esm/shared/protocol.d.ts.map +1 -1
  37. package/dist/esm/shared/protocol.js +13 -0
  38. package/dist/esm/shared/protocol.js.map +1 -1
  39. package/package.json +9 -5
@@ -38,6 +38,10 @@ export interface ClientCredentialsProviderOptions {
38
38
  * Optional client name for metadata.
39
39
  */
40
40
  clientName?: string;
41
+ /**
42
+ * Space-separated scopes values requested by the client.
43
+ */
44
+ scope?: string;
41
45
  }
42
46
  /**
43
47
  * OAuth provider for client_credentials grant with client_secret_basic authentication.
@@ -96,6 +100,10 @@ export interface PrivateKeyJwtProviderOptions {
96
100
  * Optional JWT lifetime in seconds (default: 300).
97
101
  */
98
102
  jwtLifetimeSeconds?: number;
103
+ /**
104
+ * Space-separated scopes values requested by the client.
105
+ */
106
+ scope?: string;
99
107
  }
100
108
  /**
101
109
  * OAuth provider for client_credentials grant with private_key_jwt authentication.
@@ -150,6 +158,10 @@ export interface StaticPrivateKeyJwtProviderOptions {
150
158
  * Optional client name for metadata.
151
159
  */
152
160
  clientName?: string;
161
+ /**
162
+ * Space-separated scopes values requested by the client.
163
+ */
164
+ scope?: string;
153
165
  }
154
166
  /**
155
167
  * OAuth provider for client_credentials grant with a static private_key_jwt assertion.
@@ -1 +1 @@
1
- {"version":3,"file":"auth-extensions.d.ts","sourceRoot":"","sources":["../../../src/client/auth-extensions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth-extensions.d.ts","sourceRoot":"","sources":["../../../src/client/auth-extensions.ts"],"names":[],"mappings":"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"}
@@ -125,7 +125,8 @@ class ClientCredentialsProvider {
125
125
  client_name: options.clientName ?? 'client-credentials-client',
126
126
  redirect_uris: [],
127
127
  grant_types: ['client_credentials'],
128
- token_endpoint_auth_method: 'client_secret_basic'
128
+ token_endpoint_auth_method: 'client_secret_basic',
129
+ scope: options.scope
129
130
  };
130
131
  }
131
132
  get redirectUrl() {
@@ -189,7 +190,8 @@ class PrivateKeyJwtProvider {
189
190
  client_name: options.clientName ?? 'private-key-jwt-client',
190
191
  redirect_uris: [],
191
192
  grant_types: ['client_credentials'],
192
- token_endpoint_auth_method: 'private_key_jwt'
193
+ token_endpoint_auth_method: 'private_key_jwt',
194
+ scope: options.scope
193
195
  };
194
196
  this.addClientAuthentication = createPrivateKeyJwtAuth({
195
197
  issuer: options.clientId,
@@ -250,7 +252,8 @@ class StaticPrivateKeyJwtProvider {
250
252
  client_name: options.clientName ?? 'static-private-key-jwt-client',
251
253
  redirect_uris: [],
252
254
  grant_types: ['client_credentials'],
253
- token_endpoint_auth_method: 'private_key_jwt'
255
+ token_endpoint_auth_method: 'private_key_jwt',
256
+ scope: options.scope
254
257
  };
255
258
  const assertion = options.jwtBearerAssertion;
256
259
  this.addClientAuthentication = async (_headers, params) => {
@@ -1 +1 @@
1
- {"version":3,"file":"auth-extensions.js","sourceRoot":"","sources":["../../../src/client/auth-extensions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth-extensions.js","sourceRoot":"","sources":["../../../src/client/auth-extensions.ts"],"names":[],"mappings":"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"}
@@ -13,284 +13,289 @@ const mcp_js_1 = require("../../server/mcp.js");
13
13
  const streamableHttp_js_1 = require("../../server/streamableHttp.js");
14
14
  const types_js_1 = require("../../types.js");
15
15
  const express_js_1 = require("../../server/express.js");
16
- // Create MCP server - it will automatically use AjvJsonSchemaValidator with sensible defaults
17
- // The validator supports format validation (email, date, etc.) if ajv-formats is installed
18
- const mcpServer = new mcp_js_1.McpServer({
19
- name: 'form-elicitation-example-server',
20
- version: '1.0.0'
21
- }, {
22
- capabilities: {}
23
- });
24
- /**
25
- * Example 1: Simple user registration tool
26
- * Collects username, email, and password from the user
27
- */
28
- mcpServer.registerTool('register_user', {
29
- description: 'Register a new user account by collecting their information',
30
- inputSchema: {}
31
- }, async () => {
32
- try {
33
- // Request user information through form elicitation
34
- const result = await mcpServer.server.elicitInput({
35
- mode: 'form',
36
- message: 'Please provide your registration information:',
37
- requestedSchema: {
38
- type: 'object',
39
- properties: {
40
- username: {
41
- type: 'string',
42
- title: 'Username',
43
- description: 'Your desired username (3-20 characters)',
44
- minLength: 3,
45
- maxLength: 20
46
- },
47
- email: {
48
- type: 'string',
49
- title: 'Email',
50
- description: 'Your email address',
51
- format: 'email'
52
- },
53
- password: {
54
- type: 'string',
55
- title: 'Password',
56
- description: 'Your password (min 8 characters)',
57
- minLength: 8
16
+ // Factory to create a new MCP server per session.
17
+ // Each session needs its own server+transport pair to avoid cross-session contamination.
18
+ const getServer = () => {
19
+ // Create MCP server - it will automatically use AjvJsonSchemaValidator with sensible defaults
20
+ // The validator supports format validation (email, date, etc.) if ajv-formats is installed
21
+ const mcpServer = new mcp_js_1.McpServer({
22
+ name: 'form-elicitation-example-server',
23
+ version: '1.0.0'
24
+ }, {
25
+ capabilities: {}
26
+ });
27
+ /**
28
+ * Example 1: Simple user registration tool
29
+ * Collects username, email, and password from the user
30
+ */
31
+ mcpServer.registerTool('register_user', {
32
+ description: 'Register a new user account by collecting their information',
33
+ inputSchema: {}
34
+ }, async () => {
35
+ try {
36
+ // Request user information through form elicitation
37
+ const result = await mcpServer.server.elicitInput({
38
+ mode: 'form',
39
+ message: 'Please provide your registration information:',
40
+ requestedSchema: {
41
+ type: 'object',
42
+ properties: {
43
+ username: {
44
+ type: 'string',
45
+ title: 'Username',
46
+ description: 'Your desired username (3-20 characters)',
47
+ minLength: 3,
48
+ maxLength: 20
49
+ },
50
+ email: {
51
+ type: 'string',
52
+ title: 'Email',
53
+ description: 'Your email address',
54
+ format: 'email'
55
+ },
56
+ password: {
57
+ type: 'string',
58
+ title: 'Password',
59
+ description: 'Your password (min 8 characters)',
60
+ minLength: 8
61
+ },
62
+ newsletter: {
63
+ type: 'boolean',
64
+ title: 'Newsletter',
65
+ description: 'Subscribe to newsletter?',
66
+ default: false
67
+ }
58
68
  },
59
- newsletter: {
60
- type: 'boolean',
61
- title: 'Newsletter',
62
- description: 'Subscribe to newsletter?',
63
- default: false
64
- }
65
- },
66
- required: ['username', 'email', 'password']
69
+ required: ['username', 'email', 'password']
70
+ }
71
+ });
72
+ // Handle the different possible actions
73
+ if (result.action === 'accept' && result.content) {
74
+ const { username, email, newsletter } = result.content;
75
+ return {
76
+ content: [
77
+ {
78
+ type: 'text',
79
+ text: `Registration successful!\n\nUsername: ${username}\nEmail: ${email}\nNewsletter: ${newsletter ? 'Yes' : 'No'}`
80
+ }
81
+ ]
82
+ };
83
+ }
84
+ else if (result.action === 'decline') {
85
+ return {
86
+ content: [
87
+ {
88
+ type: 'text',
89
+ text: 'Registration cancelled by user.'
90
+ }
91
+ ]
92
+ };
67
93
  }
68
- });
69
- // Handle the different possible actions
70
- if (result.action === 'accept' && result.content) {
71
- const { username, email, newsletter } = result.content;
94
+ else {
95
+ return {
96
+ content: [
97
+ {
98
+ type: 'text',
99
+ text: 'Registration was cancelled.'
100
+ }
101
+ ]
102
+ };
103
+ }
104
+ }
105
+ catch (error) {
72
106
  return {
73
107
  content: [
74
108
  {
75
109
  type: 'text',
76
- text: `Registration successful!\n\nUsername: ${username}\nEmail: ${email}\nNewsletter: ${newsletter ? 'Yes' : 'No'}`
110
+ text: `Registration failed: ${error instanceof Error ? error.message : String(error)}`
77
111
  }
78
- ]
112
+ ],
113
+ isError: true
79
114
  };
80
115
  }
81
- else if (result.action === 'decline') {
116
+ });
117
+ /**
118
+ * Example 2: Multi-step workflow with multiple form elicitation requests
119
+ * Demonstrates how to collect information in multiple steps
120
+ */
121
+ mcpServer.registerTool('create_event', {
122
+ description: 'Create a calendar event by collecting event details',
123
+ inputSchema: {}
124
+ }, async () => {
125
+ try {
126
+ // Step 1: Collect basic event information
127
+ const basicInfo = await mcpServer.server.elicitInput({
128
+ mode: 'form',
129
+ message: 'Step 1: Enter basic event information',
130
+ requestedSchema: {
131
+ type: 'object',
132
+ properties: {
133
+ title: {
134
+ type: 'string',
135
+ title: 'Event Title',
136
+ description: 'Name of the event',
137
+ minLength: 1
138
+ },
139
+ description: {
140
+ type: 'string',
141
+ title: 'Description',
142
+ description: 'Event description (optional)'
143
+ }
144
+ },
145
+ required: ['title']
146
+ }
147
+ });
148
+ if (basicInfo.action !== 'accept' || !basicInfo.content) {
149
+ return {
150
+ content: [{ type: 'text', text: 'Event creation cancelled.' }]
151
+ };
152
+ }
153
+ // Step 2: Collect date and time
154
+ const dateTime = await mcpServer.server.elicitInput({
155
+ mode: 'form',
156
+ message: 'Step 2: Enter date and time',
157
+ requestedSchema: {
158
+ type: 'object',
159
+ properties: {
160
+ date: {
161
+ type: 'string',
162
+ title: 'Date',
163
+ description: 'Event date',
164
+ format: 'date'
165
+ },
166
+ startTime: {
167
+ type: 'string',
168
+ title: 'Start Time',
169
+ description: 'Event start time (HH:MM)'
170
+ },
171
+ duration: {
172
+ type: 'integer',
173
+ title: 'Duration',
174
+ description: 'Duration in minutes',
175
+ minimum: 15,
176
+ maximum: 480
177
+ }
178
+ },
179
+ required: ['date', 'startTime', 'duration']
180
+ }
181
+ });
182
+ if (dateTime.action !== 'accept' || !dateTime.content) {
183
+ return {
184
+ content: [{ type: 'text', text: 'Event creation cancelled.' }]
185
+ };
186
+ }
187
+ // Combine all collected information
188
+ const event = {
189
+ ...basicInfo.content,
190
+ ...dateTime.content
191
+ };
82
192
  return {
83
193
  content: [
84
194
  {
85
195
  type: 'text',
86
- text: 'Registration cancelled by user.'
196
+ text: `Event created successfully!\n\n${JSON.stringify(event, null, 2)}`
87
197
  }
88
198
  ]
89
199
  };
90
200
  }
91
- else {
201
+ catch (error) {
92
202
  return {
93
203
  content: [
94
204
  {
95
205
  type: 'text',
96
- text: 'Registration was cancelled.'
206
+ text: `Event creation failed: ${error instanceof Error ? error.message : String(error)}`
97
207
  }
98
- ]
208
+ ],
209
+ isError: true
99
210
  };
100
211
  }
101
- }
102
- catch (error) {
103
- return {
104
- content: [
105
- {
106
- type: 'text',
107
- text: `Registration failed: ${error instanceof Error ? error.message : String(error)}`
108
- }
109
- ],
110
- isError: true
111
- };
112
- }
113
- });
114
- /**
115
- * Example 2: Multi-step workflow with multiple form elicitation requests
116
- * Demonstrates how to collect information in multiple steps
117
- */
118
- mcpServer.registerTool('create_event', {
119
- description: 'Create a calendar event by collecting event details',
120
- inputSchema: {}
121
- }, async () => {
122
- try {
123
- // Step 1: Collect basic event information
124
- const basicInfo = await mcpServer.server.elicitInput({
125
- mode: 'form',
126
- message: 'Step 1: Enter basic event information',
127
- requestedSchema: {
128
- type: 'object',
129
- properties: {
130
- title: {
131
- type: 'string',
132
- title: 'Event Title',
133
- description: 'Name of the event',
134
- minLength: 1
212
+ });
213
+ /**
214
+ * Example 3: Collecting address information
215
+ * Demonstrates validation with patterns and optional fields
216
+ */
217
+ mcpServer.registerTool('update_shipping_address', {
218
+ description: 'Update shipping address with validation',
219
+ inputSchema: {}
220
+ }, async () => {
221
+ try {
222
+ const result = await mcpServer.server.elicitInput({
223
+ mode: 'form',
224
+ message: 'Please provide your shipping address:',
225
+ requestedSchema: {
226
+ type: 'object',
227
+ properties: {
228
+ name: {
229
+ type: 'string',
230
+ title: 'Full Name',
231
+ description: 'Recipient name',
232
+ minLength: 1
233
+ },
234
+ street: {
235
+ type: 'string',
236
+ title: 'Street Address',
237
+ minLength: 1
238
+ },
239
+ city: {
240
+ type: 'string',
241
+ title: 'City',
242
+ minLength: 1
243
+ },
244
+ state: {
245
+ type: 'string',
246
+ title: 'State/Province',
247
+ minLength: 2,
248
+ maxLength: 2
249
+ },
250
+ zipCode: {
251
+ type: 'string',
252
+ title: 'ZIP/Postal Code',
253
+ description: '5-digit ZIP code'
254
+ },
255
+ phone: {
256
+ type: 'string',
257
+ title: 'Phone Number (optional)',
258
+ description: 'Contact phone number'
259
+ }
135
260
  },
136
- description: {
137
- type: 'string',
138
- title: 'Description',
139
- description: 'Event description (optional)'
140
- }
141
- },
142
- required: ['title']
261
+ required: ['name', 'street', 'city', 'state', 'zipCode']
262
+ }
263
+ });
264
+ if (result.action === 'accept' && result.content) {
265
+ return {
266
+ content: [
267
+ {
268
+ type: 'text',
269
+ text: `Address updated successfully!\n\n${JSON.stringify(result.content, null, 2)}`
270
+ }
271
+ ]
272
+ };
143
273
  }
144
- });
145
- if (basicInfo.action !== 'accept' || !basicInfo.content) {
146
- return {
147
- content: [{ type: 'text', text: 'Event creation cancelled.' }]
148
- };
149
- }
150
- // Step 2: Collect date and time
151
- const dateTime = await mcpServer.server.elicitInput({
152
- mode: 'form',
153
- message: 'Step 2: Enter date and time',
154
- requestedSchema: {
155
- type: 'object',
156
- properties: {
157
- date: {
158
- type: 'string',
159
- title: 'Date',
160
- description: 'Event date',
161
- format: 'date'
162
- },
163
- startTime: {
164
- type: 'string',
165
- title: 'Start Time',
166
- description: 'Event start time (HH:MM)'
167
- },
168
- duration: {
169
- type: 'integer',
170
- title: 'Duration',
171
- description: 'Duration in minutes',
172
- minimum: 15,
173
- maximum: 480
174
- }
175
- },
176
- required: ['date', 'startTime', 'duration']
274
+ else if (result.action === 'decline') {
275
+ return {
276
+ content: [{ type: 'text', text: 'Address update cancelled by user.' }]
277
+ };
177
278
  }
178
- });
179
- if (dateTime.action !== 'accept' || !dateTime.content) {
180
- return {
181
- content: [{ type: 'text', text: 'Event creation cancelled.' }]
182
- };
183
- }
184
- // Combine all collected information
185
- const event = {
186
- ...basicInfo.content,
187
- ...dateTime.content
188
- };
189
- return {
190
- content: [
191
- {
192
- type: 'text',
193
- text: `Event created successfully!\n\n${JSON.stringify(event, null, 2)}`
194
- }
195
- ]
196
- };
197
- }
198
- catch (error) {
199
- return {
200
- content: [
201
- {
202
- type: 'text',
203
- text: `Event creation failed: ${error instanceof Error ? error.message : String(error)}`
204
- }
205
- ],
206
- isError: true
207
- };
208
- }
209
- });
210
- /**
211
- * Example 3: Collecting address information
212
- * Demonstrates validation with patterns and optional fields
213
- */
214
- mcpServer.registerTool('update_shipping_address', {
215
- description: 'Update shipping address with validation',
216
- inputSchema: {}
217
- }, async () => {
218
- try {
219
- const result = await mcpServer.server.elicitInput({
220
- mode: 'form',
221
- message: 'Please provide your shipping address:',
222
- requestedSchema: {
223
- type: 'object',
224
- properties: {
225
- name: {
226
- type: 'string',
227
- title: 'Full Name',
228
- description: 'Recipient name',
229
- minLength: 1
230
- },
231
- street: {
232
- type: 'string',
233
- title: 'Street Address',
234
- minLength: 1
235
- },
236
- city: {
237
- type: 'string',
238
- title: 'City',
239
- minLength: 1
240
- },
241
- state: {
242
- type: 'string',
243
- title: 'State/Province',
244
- minLength: 2,
245
- maxLength: 2
246
- },
247
- zipCode: {
248
- type: 'string',
249
- title: 'ZIP/Postal Code',
250
- description: '5-digit ZIP code'
251
- },
252
- phone: {
253
- type: 'string',
254
- title: 'Phone Number (optional)',
255
- description: 'Contact phone number'
256
- }
257
- },
258
- required: ['name', 'street', 'city', 'state', 'zipCode']
279
+ else {
280
+ return {
281
+ content: [{ type: 'text', text: 'Address update was cancelled.' }]
282
+ };
259
283
  }
260
- });
261
- if (result.action === 'accept' && result.content) {
284
+ }
285
+ catch (error) {
262
286
  return {
263
287
  content: [
264
288
  {
265
289
  type: 'text',
266
- text: `Address updated successfully!\n\n${JSON.stringify(result.content, null, 2)}`
290
+ text: `Address update failed: ${error instanceof Error ? error.message : String(error)}`
267
291
  }
268
- ]
292
+ ],
293
+ isError: true
269
294
  };
270
295
  }
271
- else if (result.action === 'decline') {
272
- return {
273
- content: [{ type: 'text', text: 'Address update cancelled by user.' }]
274
- };
275
- }
276
- else {
277
- return {
278
- content: [{ type: 'text', text: 'Address update was cancelled.' }]
279
- };
280
- }
281
- }
282
- catch (error) {
283
- return {
284
- content: [
285
- {
286
- type: 'text',
287
- text: `Address update failed: ${error instanceof Error ? error.message : String(error)}`
288
- }
289
- ],
290
- isError: true
291
- };
292
- }
293
- });
296
+ });
297
+ return mcpServer;
298
+ };
294
299
  async function main() {
295
300
  const PORT = process.env.PORT ? parseInt(process.env.PORT, 10) : 3000;
296
301
  const app = (0, express_js_1.createMcpExpressApp)();
@@ -326,7 +331,8 @@ async function main() {
326
331
  delete transports[sid];
327
332
  }
328
333
  };
329
- // Connect the transport to the MCP server BEFORE handling the request
334
+ // Create a new server per session and connect it to the transport
335
+ const mcpServer = getServer();
330
336
  await mcpServer.connect(transport);
331
337
  await transport.handleRequest(req, res, req.body);
332
338
  return;