@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.
Files changed (144) hide show
  1. package/README.md +321 -28
  2. package/dist/cjs/client/index.d.ts.map +1 -1
  3. package/dist/cjs/client/index.js +5 -0
  4. package/dist/cjs/client/index.js.map +1 -1
  5. package/dist/cjs/client/streamableHttp.d.ts +124 -0
  6. package/dist/cjs/client/streamableHttp.d.ts.map +1 -0
  7. package/dist/cjs/client/streamableHttp.js +353 -0
  8. package/dist/cjs/client/streamableHttp.js.map +1 -0
  9. package/dist/cjs/examples/client/simpleStreamableHttp.d.ts +2 -0
  10. package/dist/cjs/examples/client/simpleStreamableHttp.d.ts.map +1 -0
  11. package/dist/cjs/examples/client/simpleStreamableHttp.js +448 -0
  12. package/dist/cjs/examples/client/simpleStreamableHttp.js.map +1 -0
  13. package/dist/cjs/examples/client/streamableHttpWithSseFallbackClient.d.ts +2 -0
  14. package/dist/cjs/examples/client/streamableHttpWithSseFallbackClient.d.ts.map +1 -0
  15. package/dist/cjs/examples/client/streamableHttpWithSseFallbackClient.js +168 -0
  16. package/dist/cjs/examples/client/streamableHttpWithSseFallbackClient.js.map +1 -0
  17. package/dist/cjs/examples/server/jsonResponseStreamableHttp.d.ts +2 -0
  18. package/dist/cjs/examples/server/jsonResponseStreamableHttp.d.ts.map +1 -0
  19. package/dist/cjs/examples/server/jsonResponseStreamableHttp.js +139 -0
  20. package/dist/cjs/examples/server/jsonResponseStreamableHttp.js.map +1 -0
  21. package/dist/cjs/examples/server/simpleSseServer.d.ts +2 -0
  22. package/dist/cjs/examples/server/simpleSseServer.d.ts.map +1 -0
  23. package/dist/cjs/examples/server/simpleSseServer.js +148 -0
  24. package/dist/cjs/examples/server/simpleSseServer.js.map +1 -0
  25. package/dist/cjs/examples/server/simpleStatelessStreamableHttp.d.ts +2 -0
  26. package/dist/cjs/examples/server/simpleStatelessStreamableHttp.d.ts.map +1 -0
  27. package/dist/cjs/examples/server/simpleStatelessStreamableHttp.js +149 -0
  28. package/dist/cjs/examples/server/simpleStatelessStreamableHttp.js.map +1 -0
  29. package/dist/cjs/examples/server/simpleStreamableHttp.d.ts +2 -0
  30. package/dist/cjs/examples/server/simpleStreamableHttp.d.ts.map +1 -0
  31. package/dist/cjs/examples/server/simpleStreamableHttp.js +250 -0
  32. package/dist/cjs/examples/server/simpleStreamableHttp.js.map +1 -0
  33. package/dist/cjs/examples/server/sseAndStreamableHttpCompatibleServer.d.ts +2 -0
  34. package/dist/cjs/examples/server/sseAndStreamableHttpCompatibleServer.d.ts.map +1 -0
  35. package/dist/cjs/examples/server/sseAndStreamableHttpCompatibleServer.js +229 -0
  36. package/dist/cjs/examples/server/sseAndStreamableHttpCompatibleServer.js.map +1 -0
  37. package/dist/cjs/examples/server/standaloneSseWithGetStreamableHttp.d.ts +2 -0
  38. package/dist/cjs/examples/server/standaloneSseWithGetStreamableHttp.d.ts.map +1 -0
  39. package/dist/cjs/examples/server/standaloneSseWithGetStreamableHttp.js +112 -0
  40. package/dist/cjs/examples/server/standaloneSseWithGetStreamableHttp.js.map +1 -0
  41. package/dist/cjs/examples/shared/inMemoryEventStore.d.ts +31 -0
  42. package/dist/cjs/examples/shared/inMemoryEventStore.d.ts.map +1 -0
  43. package/dist/cjs/examples/shared/inMemoryEventStore.js +69 -0
  44. package/dist/cjs/examples/shared/inMemoryEventStore.js.map +1 -0
  45. package/dist/cjs/inMemory.d.ts +13 -3
  46. package/dist/cjs/inMemory.d.ts.map +1 -1
  47. package/dist/cjs/inMemory.js +9 -7
  48. package/dist/cjs/inMemory.js.map +1 -1
  49. package/dist/cjs/server/auth/types.d.ts +5 -0
  50. package/dist/cjs/server/auth/types.d.ts.map +1 -1
  51. package/dist/cjs/server/mcp.d.ts +100 -19
  52. package/dist/cjs/server/mcp.d.ts.map +1 -1
  53. package/dist/cjs/server/mcp.js +154 -12
  54. package/dist/cjs/server/mcp.js.map +1 -1
  55. package/dist/cjs/server/sse.d.ts +10 -3
  56. package/dist/cjs/server/sse.d.ts.map +1 -1
  57. package/dist/cjs/server/sse.js +13 -4
  58. package/dist/cjs/server/sse.js.map +1 -1
  59. package/dist/cjs/server/streamableHttp.d.ts +146 -0
  60. package/dist/cjs/server/streamableHttp.d.ts.map +1 -0
  61. package/dist/cjs/server/streamableHttp.js +538 -0
  62. package/dist/cjs/server/streamableHttp.js.map +1 -0
  63. package/dist/cjs/shared/protocol.d.ts +31 -5
  64. package/dist/cjs/shared/protocol.d.ts.map +1 -1
  65. package/dist/cjs/shared/protocol.js +23 -15
  66. package/dist/cjs/shared/protocol.js.map +1 -1
  67. package/dist/cjs/shared/transport.d.ts +32 -3
  68. package/dist/cjs/shared/transport.d.ts.map +1 -1
  69. package/dist/cjs/types.d.ts +6 -0
  70. package/dist/cjs/types.d.ts.map +1 -1
  71. package/dist/cjs/types.js +14 -2
  72. package/dist/cjs/types.js.map +1 -1
  73. package/dist/esm/client/index.d.ts.map +1 -1
  74. package/dist/esm/client/index.js +5 -0
  75. package/dist/esm/client/index.js.map +1 -1
  76. package/dist/esm/client/streamableHttp.d.ts +124 -0
  77. package/dist/esm/client/streamableHttp.d.ts.map +1 -0
  78. package/dist/esm/client/streamableHttp.js +348 -0
  79. package/dist/esm/client/streamableHttp.js.map +1 -0
  80. package/dist/esm/examples/client/simpleStreamableHttp.d.ts +2 -0
  81. package/dist/esm/examples/client/simpleStreamableHttp.d.ts.map +1 -0
  82. package/dist/esm/examples/client/simpleStreamableHttp.js +446 -0
  83. package/dist/esm/examples/client/simpleStreamableHttp.js.map +1 -0
  84. package/dist/esm/examples/client/streamableHttpWithSseFallbackClient.d.ts +2 -0
  85. package/dist/esm/examples/client/streamableHttpWithSseFallbackClient.d.ts.map +1 -0
  86. package/dist/esm/examples/client/streamableHttpWithSseFallbackClient.js +166 -0
  87. package/dist/esm/examples/client/streamableHttpWithSseFallbackClient.js.map +1 -0
  88. package/dist/esm/examples/server/jsonResponseStreamableHttp.d.ts +2 -0
  89. package/dist/esm/examples/server/jsonResponseStreamableHttp.d.ts.map +1 -0
  90. package/dist/esm/examples/server/jsonResponseStreamableHttp.js +134 -0
  91. package/dist/esm/examples/server/jsonResponseStreamableHttp.js.map +1 -0
  92. package/dist/esm/examples/server/simpleSseServer.d.ts +2 -0
  93. package/dist/esm/examples/server/simpleSseServer.d.ts.map +1 -0
  94. package/dist/esm/examples/server/simpleSseServer.js +143 -0
  95. package/dist/esm/examples/server/simpleSseServer.js.map +1 -0
  96. package/dist/esm/examples/server/simpleStatelessStreamableHttp.d.ts +2 -0
  97. package/dist/esm/examples/server/simpleStatelessStreamableHttp.d.ts.map +1 -0
  98. package/dist/esm/examples/server/simpleStatelessStreamableHttp.js +144 -0
  99. package/dist/esm/examples/server/simpleStatelessStreamableHttp.js.map +1 -0
  100. package/dist/esm/examples/server/simpleStreamableHttp.d.ts +2 -0
  101. package/dist/esm/examples/server/simpleStreamableHttp.d.ts.map +1 -0
  102. package/dist/esm/examples/server/simpleStreamableHttp.js +245 -0
  103. package/dist/esm/examples/server/simpleStreamableHttp.js.map +1 -0
  104. package/dist/esm/examples/server/sseAndStreamableHttpCompatibleServer.d.ts +2 -0
  105. package/dist/esm/examples/server/sseAndStreamableHttpCompatibleServer.d.ts.map +1 -0
  106. package/dist/esm/examples/server/sseAndStreamableHttpCompatibleServer.js +224 -0
  107. package/dist/esm/examples/server/sseAndStreamableHttpCompatibleServer.js.map +1 -0
  108. package/dist/esm/examples/server/standaloneSseWithGetStreamableHttp.d.ts +2 -0
  109. package/dist/esm/examples/server/standaloneSseWithGetStreamableHttp.d.ts.map +1 -0
  110. package/dist/esm/examples/server/standaloneSseWithGetStreamableHttp.js +107 -0
  111. package/dist/esm/examples/server/standaloneSseWithGetStreamableHttp.js.map +1 -0
  112. package/dist/esm/examples/shared/inMemoryEventStore.d.ts +31 -0
  113. package/dist/esm/examples/shared/inMemoryEventStore.d.ts.map +1 -0
  114. package/dist/esm/examples/shared/inMemoryEventStore.js +65 -0
  115. package/dist/esm/examples/shared/inMemoryEventStore.js.map +1 -0
  116. package/dist/esm/inMemory.d.ts +13 -3
  117. package/dist/esm/inMemory.d.ts.map +1 -1
  118. package/dist/esm/inMemory.js +9 -7
  119. package/dist/esm/inMemory.js.map +1 -1
  120. package/dist/esm/server/auth/types.d.ts +5 -0
  121. package/dist/esm/server/auth/types.d.ts.map +1 -1
  122. package/dist/esm/server/mcp.d.ts +100 -19
  123. package/dist/esm/server/mcp.d.ts.map +1 -1
  124. package/dist/esm/server/mcp.js +154 -12
  125. package/dist/esm/server/mcp.js.map +1 -1
  126. package/dist/esm/server/sse.d.ts +10 -3
  127. package/dist/esm/server/sse.d.ts.map +1 -1
  128. package/dist/esm/server/sse.js +13 -4
  129. package/dist/esm/server/sse.js.map +1 -1
  130. package/dist/esm/server/streamableHttp.d.ts +146 -0
  131. package/dist/esm/server/streamableHttp.d.ts.map +1 -0
  132. package/dist/esm/server/streamableHttp.js +531 -0
  133. package/dist/esm/server/streamableHttp.js.map +1 -0
  134. package/dist/esm/shared/protocol.d.ts +31 -5
  135. package/dist/esm/shared/protocol.d.ts.map +1 -1
  136. package/dist/esm/shared/protocol.js +24 -16
  137. package/dist/esm/shared/protocol.js.map +1 -1
  138. package/dist/esm/shared/transport.d.ts +32 -3
  139. package/dist/esm/shared/transport.d.ts.map +1 -1
  140. package/dist/esm/types.d.ts +6 -0
  141. package/dist/esm/types.d.ts.map +1 -1
  142. package/dist/esm/types.js +6 -0
  143. package/dist/esm/types.js.map +1 -1
  144. package/package.json +1 -1
package/README.md CHANGED
@@ -12,7 +12,7 @@
12
12
  - [Prompts](#prompts)
13
13
  - [Running Your Server](#running-your-server)
14
14
  - [stdio](#stdio)
15
- - [HTTP with SSE](#http-with-sse)
15
+ - [Streamable HTTP](#streamable-http)
16
16
  - [Testing and Debugging](#testing-and-debugging)
17
17
  - [Examples](#examples)
18
18
  - [Echo Server](#echo-server)
@@ -22,6 +22,7 @@
22
22
  - [Writing MCP Clients](#writing-mcp-clients)
23
23
  - [Server Capabilities](#server-capabilities)
24
24
  - [Proxy OAuth Server](#proxy-authorization-requests-upstream)
25
+ - [Backwards Compatibility](#backwards-compatibility)
25
26
 
26
27
  ## Overview
27
28
 
@@ -29,7 +30,7 @@ The Model Context Protocol allows applications to provide context for LLMs in a
29
30
 
30
31
  - Build MCP clients that can connect to any MCP server
31
32
  - Create MCP servers that expose resources, prompts and tools
32
- - Use standard transports like stdio and SSE
33
+ - Use standard transports like stdio and Streamable HTTP
33
34
  - Handle all MCP protocol messages and lifecycle events
34
35
 
35
36
  ## Installation
@@ -207,50 +208,180 @@ const transport = new StdioServerTransport();
207
208
  await server.connect(transport);
208
209
  ```
209
210
 
210
- ### HTTP with SSE
211
+ ### Streamable HTTP
211
212
 
212
- For remote servers, start a web server with a Server-Sent Events (SSE) endpoint, and a separate endpoint for the client to send its messages to:
213
+ For remote servers, set up a Streamable HTTP transport that handles both client requests and server-to-client notifications.
214
+
215
+ #### With Session Management
216
+
217
+ In some cases, servers need to be stateful. This is achieved by [session management](https://modelcontextprotocol.io/specification/2025-03-26/basic/transports#session-management).
213
218
 
214
219
  ```typescript
215
- import express, { Request, Response } from "express";
220
+ import express from "express";
221
+ import { randomUUID } from "node:crypto";
216
222
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
217
- import { SSEServerTransport } from "@modelcontextprotocol/sdk/server/sse.js";
223
+ import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
224
+ import { InMemoryEventStore } from "@modelcontextprotocol/sdk/inMemory.js";
218
225
 
219
- const server = new McpServer({
220
- name: "example-server",
221
- version: "1.0.0"
226
+
227
+ const app = express();
228
+ app.use(express.json());
229
+
230
+ // Map to store transports by session ID
231
+ const transports: { [sessionId: string]: StreamableHTTPServerTransport } = {};
232
+
233
+ // Handle POST requests for client-to-server communication
234
+ app.post('/mcp', async (req, res) => {
235
+ // Check for existing session ID
236
+ const sessionId = req.headers['mcp-session-id'] as string | undefined;
237
+ let transport: StreamableHTTPServerTransport;
238
+
239
+ if (sessionId && transports[sessionId]) {
240
+ // Reuse existing transport
241
+ transport = transports[sessionId];
242
+ } else if (!sessionId && isInitializeRequest(req.body)) {
243
+ // New initialization request
244
+ const eventStore = new InMemoryEventStore();
245
+ transport = new StreamableHTTPServerTransport({
246
+ sessionIdGenerator: () => randomUUID(),
247
+ eventStore, // Enable resumability
248
+ onsessioninitialized: (sessionId) => {
249
+ // Store the transport by session ID
250
+ transports[sessionId] = transport;
251
+ }
252
+ });
253
+
254
+ // Clean up transport when closed
255
+ transport.onclose = () => {
256
+ if (transport.sessionId) {
257
+ delete transports[transport.sessionId];
258
+ }
259
+ };
260
+ const server = new McpServer({
261
+ name: "example-server",
262
+ version: "1.0.0"
263
+ });
264
+
265
+ // ... set up server resources, tools, and prompts ...
266
+
267
+ // Connect to the MCP server
268
+ await server.connect(transport);
269
+ } else {
270
+ // Invalid request
271
+ res.status(400).json({
272
+ jsonrpc: '2.0',
273
+ error: {
274
+ code: -32000,
275
+ message: 'Bad Request: No valid session ID provided',
276
+ },
277
+ id: null,
278
+ });
279
+ return;
280
+ }
281
+
282
+ // Handle the request
283
+ await transport.handleRequest(req, res, req.body);
222
284
  });
223
285
 
224
- // ... set up server resources, tools, and prompts ...
286
+ // Reusable handler for GET and DELETE requests
287
+ const handleSessionRequest = async (req: express.Request, res: express.Response) => {
288
+ const sessionId = req.headers['mcp-session-id'] as string | undefined;
289
+ if (!sessionId || !transports[sessionId]) {
290
+ res.status(400).send('Invalid or missing session ID');
291
+ return;
292
+ }
293
+
294
+ const transport = transports[sessionId];
295
+ await transport.handleRequest(req, res);
296
+ };
297
+
298
+ // Handle GET requests for server-to-client notifications via SSE
299
+ app.get('/mcp', handleSessionRequest);
300
+
301
+ // Handle DELETE requests for session termination
302
+ app.delete('/mcp', handleSessionRequest);
225
303
 
304
+ app.listen(3000);
305
+ ```
306
+
307
+ #### Without Session Management (Stateless)
308
+
309
+ For simpler use cases where session management isn't needed:
310
+
311
+ ```typescript
226
312
  const app = express();
313
+ app.use(express.json());
227
314
 
228
- // to support multiple simultaneous connections we have a lookup object from
229
- // sessionId to transport
230
- const transports: {[sessionId: string]: SSEServerTransport} = {};
315
+ const transport: StreamableHTTPServerTransport = new StreamableHTTPServerTransport({
316
+ sessionIdGenerator: undefined, // set to undefined for stateless servers
317
+ });
231
318
 
232
- app.get("/sse", async (_: Request, res: Response) => {
233
- const transport = new SSEServerTransport('/messages', res);
234
- transports[transport.sessionId] = transport;
235
- res.on("close", () => {
236
- delete transports[transport.sessionId];
237
- });
319
+ // Setup routes for the server
320
+ const setupServer = async () => {
238
321
  await server.connect(transport);
239
- });
322
+ };
240
323
 
241
- app.post("/messages", async (req: Request, res: Response) => {
242
- const sessionId = req.query.sessionId as string;
243
- const transport = transports[sessionId];
244
- if (transport) {
245
- await transport.handlePostMessage(req, res);
246
- } else {
247
- res.status(400).send('No transport found for sessionId');
324
+ app.post('/mcp', async (req: Request, res: Response) => {
325
+ console.log('Received MCP request:', req.body);
326
+ try {
327
+ await transport.handleRequest(req, res, req.body);
328
+ } catch (error) {
329
+ console.error('Error handling MCP request:', error);
330
+ if (!res.headersSent) {
331
+ res.status(500).json({
332
+ jsonrpc: '2.0',
333
+ error: {
334
+ code: -32603,
335
+ message: 'Internal server error',
336
+ },
337
+ id: null,
338
+ });
339
+ }
248
340
  }
249
341
  });
250
342
 
251
- app.listen(3001);
343
+ app.get('/mcp', async (req: Request, res: Response) => {
344
+ console.log('Received GET MCP request');
345
+ res.writeHead(405).end(JSON.stringify({
346
+ jsonrpc: "2.0",
347
+ error: {
348
+ code: -32000,
349
+ message: "Method not allowed."
350
+ },
351
+ id: null
352
+ }));
353
+ });
354
+
355
+ app.delete('/mcp', async (req: Request, res: Response) => {
356
+ console.log('Received DELETE MCP request');
357
+ res.writeHead(405).end(JSON.stringify({
358
+ jsonrpc: "2.0",
359
+ error: {
360
+ code: -32000,
361
+ message: "Method not allowed."
362
+ },
363
+ id: null
364
+ }));
365
+ });
366
+
367
+ // Start the server
368
+ const PORT = 3000;
369
+ setupServer().then(() => {
370
+ app.listen(PORT, () => {
371
+ console.log(`MCP Streamable HTTP Server listening on port ${PORT}`);
372
+ });
373
+ }).catch(error => {
374
+ console.error('Failed to set up the server:', error);
375
+ process.exit(1);
376
+ });
377
+
252
378
  ```
253
379
 
380
+ This stateless approach is useful for:
381
+ - Simple API wrappers
382
+ - RESTful scenarios where each request is independent
383
+ - Horizontally scaled deployments without shared session state
384
+
254
385
  ### Testing and Debugging
255
386
 
256
387
  To test your server, you can use the [MCP Inspector](https://github.com/modelcontextprotocol/inspector). See its README for more information.
@@ -380,6 +511,68 @@ server.tool(
380
511
 
381
512
  ## Advanced Usage
382
513
 
514
+ ### Dynamic Servers
515
+
516
+ If you want to offer an initial set of tools/prompts/resources, but later add additional ones based on user action or external state change, you can add/update/remove them _after_ the Server is connected. This will automatically emit the corresponding `listChanged` notificaions:
517
+
518
+ ```ts
519
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
520
+ import { z } from "zod";
521
+
522
+ const server = new McpServer({
523
+ name: "Dynamic Example",
524
+ version: "1.0.0"
525
+ });
526
+
527
+ const listMessageTool = server.tool(
528
+ "listMessages",
529
+ { channel: z.string() },
530
+ async ({ channel }) => ({
531
+ content: [{ type: "text", text: await listMessages(channel) }]
532
+ })
533
+ );
534
+
535
+ const putMessageTool = server.tool(
536
+ "putMessage",
537
+ { channel: z.string(), message: z.string() },
538
+ async ({ channel, message }) => ({
539
+ content: [{ type: "text", text: await putMessage(channel, string) }]
540
+ })
541
+ );
542
+ // Until we upgrade auth, `putMessage` is disabled (won't show up in listTools)
543
+ putMessageTool.disable()
544
+
545
+ const upgradeAuthTool = server.tool(
546
+ "upgradeAuth",
547
+ { permission: z.enum(["write', vadmin"])},
548
+ // Any mutations here will automatically emit `listChanged` notifications
549
+ async ({ permission }) => {
550
+ const { ok, err, previous } = await upgradeAuthAndStoreToken(permission)
551
+ if (!ok) return {content: [{ type: "text", text: `Error: ${err}` }]}
552
+
553
+ // If we previously had read-only access, 'putMessage' is now available
554
+ if (previous === "read") {
555
+ putMessageTool.enable()
556
+ }
557
+
558
+ if (permission === 'write') {
559
+ // If we've just upgraded to 'write' permissions, we can still call 'upgradeAuth'
560
+ // but can only upgrade to 'admin'.
561
+ upgradeAuthTool.update({
562
+ paramSchema: { permission: z.enum(["admin"]) }, // change validation rules
563
+ })
564
+ } else {
565
+ // If we're now an admin, we no longer have anywhere to upgrade to, so fully remove that tool
566
+ upgradeAuthTool.remove()
567
+ }
568
+ }
569
+ )
570
+
571
+ // Connect as normal
572
+ const transport = new StdioServerTransport();
573
+ await server.connect(transport);
574
+ ```
575
+
383
576
  ### Low-Level Server
384
577
 
385
578
  For more control, you can use the low-level Server class directly:
@@ -534,6 +727,106 @@ This setup allows you to:
534
727
  - Provide custom documentation URLs
535
728
  - Maintain control over the OAuth flow while delegating to an external provider
536
729
 
730
+ ### Backwards Compatibility
731
+
732
+ Clients and servers with StreamableHttp tranport can maintain [backwards compatibility](https://modelcontextprotocol.io/specification/2025-03-26/basic/transports#backwards-compatibility) with the deprecated HTTP+SSE transport (from protocol version 2024-11-05) as follows
733
+
734
+ #### Client-Side Compatibility
735
+
736
+ For clients that need to work with both Streamable HTTP and older SSE servers:
737
+
738
+ ```typescript
739
+ import { Client } from "@modelcontextprotocol/sdk/client/index.js";
740
+ import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
741
+ import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
742
+ let client: Client|undefined = undefined
743
+ const baseUrl = new URL(url);
744
+ try {
745
+ client = new Client({
746
+ name: 'streamable-http-client',
747
+ version: '1.0.0'
748
+ });
749
+ const transport = new StreamableHTTPClientTransport(
750
+ new URL(baseUrl)
751
+ );
752
+ await client.connect(transport);
753
+ console.log("Connected using Streamable HTTP transport");
754
+ } catch (error) {
755
+ // If that fails with a 4xx error, try the older SSE transport
756
+ console.log("Streamable HTTP connection failed, falling back to SSE transport");
757
+ client = new Client({
758
+ name: 'sse-client',
759
+ version: '1.0.0'
760
+ });
761
+ const sseTransport = new SSEClientTransport(baseUrl);
762
+ await client.connect(sseTransport);
763
+ console.log("Connected using SSE transport");
764
+ }
765
+ ```
766
+
767
+ #### Server-Side Compatibility
768
+
769
+ For servers that need to support both Streamable HTTP and older clients:
770
+
771
+ ```typescript
772
+ import express from "express";
773
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
774
+ import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
775
+ import { SSEServerTransport } from "@modelcontextprotocol/sdk/server/sse.js";
776
+ import { InMemoryEventStore } from "@modelcontextprotocol/sdk/inMemory.js";
777
+
778
+ const server = new McpServer({
779
+ name: "backwards-compatible-server",
780
+ version: "1.0.0"
781
+ });
782
+
783
+ // ... set up server resources, tools, and prompts ...
784
+
785
+ const app = express();
786
+ app.use(express.json());
787
+
788
+ // Store transports for each session type
789
+ const transports = {
790
+ streamable: {} as Record<string, StreamableHTTPServerTransport>,
791
+ sse: {} as Record<string, SSEServerTransport>
792
+ };
793
+
794
+ // Modern Streamable HTTP endpoint
795
+ app.all('/mcp', async (req, res) => {
796
+ // Handle Streamable HTTP transport for modern clients
797
+ // Implementation as shown in the "With Session Management" example
798
+ // ...
799
+ });
800
+
801
+ // Legacy SSE endpoint for older clients
802
+ app.get('/sse', async (req, res) => {
803
+ // Create SSE transport for legacy clients
804
+ const transport = new SSEServerTransport('/messages', res);
805
+ transports.sse[transport.sessionId] = transport;
806
+
807
+ res.on("close", () => {
808
+ delete transports.sse[transport.sessionId];
809
+ });
810
+
811
+ await server.connect(transport);
812
+ });
813
+
814
+ // Legacy message endpoint for older clients
815
+ app.post('/messages', async (req, res) => {
816
+ const sessionId = req.query.sessionId as string;
817
+ const transport = transports.sse[sessionId];
818
+ if (transport) {
819
+ await transport.handlePostMessage(req, res);
820
+ } else {
821
+ res.status(400).send('No transport found for sessionId');
822
+ }
823
+ });
824
+
825
+ app.listen(3000);
826
+ ```
827
+
828
+ **Note**: The SSE transport is now deprecated in favor of Streamable HTTP. New implementations should use Streamable HTTP, and existing SSE implementations should plan to migrate.
829
+
537
830
  ## Documentation
538
831
 
539
832
  - [Model Context Protocol documentation](https://modelcontextprotocol.io)
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"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"}
@@ -57,6 +57,11 @@ class Client extends protocol_js_1.Protocol {
57
57
  }
58
58
  async connect(transport, options) {
59
59
  await super.connect(transport);
60
+ // When transport sessionId is already set this means we are trying to reconnect.
61
+ // In this case we don't need to initialize again.
62
+ if (transport.sessionId !== undefined) {
63
+ return;
64
+ }
60
65
  try {
61
66
  const result = await this.request({
62
67
  method: "initialize",
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,124 @@
1
+ import { Transport } from "../shared/transport.js";
2
+ import { JSONRPCMessage } from "../types.js";
3
+ import { OAuthClientProvider } from "./auth.js";
4
+ export declare class StreamableHTTPError extends Error {
5
+ readonly code: number | undefined;
6
+ constructor(code: number | undefined, message: string | undefined);
7
+ }
8
+ /**
9
+ * Configuration options for reconnection behavior of the StreamableHTTPClientTransport.
10
+ */
11
+ export interface StreamableHTTPReconnectionOptions {
12
+ /**
13
+ * Maximum backoff time between reconnection attempts in milliseconds.
14
+ * Default is 30000 (30 seconds).
15
+ */
16
+ maxReconnectionDelay: number;
17
+ /**
18
+ * Initial backoff time between reconnection attempts in milliseconds.
19
+ * Default is 1000 (1 second).
20
+ */
21
+ initialReconnectionDelay: number;
22
+ /**
23
+ * The factor by which the reconnection delay increases after each attempt.
24
+ * Default is 1.5.
25
+ */
26
+ reconnectionDelayGrowFactor: number;
27
+ /**
28
+ * Maximum number of reconnection attempts before giving up.
29
+ * Default is 2.
30
+ */
31
+ maxRetries: number;
32
+ }
33
+ /**
34
+ * Configuration options for the `StreamableHTTPClientTransport`.
35
+ */
36
+ export type StreamableHTTPClientTransportOptions = {
37
+ /**
38
+ * An OAuth client provider to use for authentication.
39
+ *
40
+ * When an `authProvider` is specified and the connection is started:
41
+ * 1. The connection is attempted with any existing access token from the `authProvider`.
42
+ * 2. If the access token has expired, the `authProvider` is used to refresh the token.
43
+ * 3. If token refresh fails or no access token exists, and auth is required, `OAuthClientProvider.redirectToAuthorization` is called, and an `UnauthorizedError` will be thrown from `connect`/`start`.
44
+ *
45
+ * After the user has finished authorizing via their user agent, and is redirected back to the MCP client application, call `StreamableHTTPClientTransport.finishAuth` with the authorization code before retrying the connection.
46
+ *
47
+ * If an `authProvider` is not provided, and auth is required, an `UnauthorizedError` will be thrown.
48
+ *
49
+ * `UnauthorizedError` might also be thrown when sending any message over the transport, indicating that the session has expired, and needs to be re-authed and reconnected.
50
+ */
51
+ authProvider?: OAuthClientProvider;
52
+ /**
53
+ * Customizes HTTP requests to the server.
54
+ */
55
+ requestInit?: RequestInit;
56
+ /**
57
+ * Options to configure the reconnection behavior.
58
+ */
59
+ reconnectionOptions?: StreamableHTTPReconnectionOptions;
60
+ /**
61
+ * Session ID for the connection. This is used to identify the session on the server.
62
+ * When not provided and connecting to a server that supports session IDs, the server will generate a new session ID.
63
+ */
64
+ sessionId?: string;
65
+ };
66
+ /**
67
+ * Client transport for Streamable HTTP: this implements the MCP Streamable HTTP transport specification.
68
+ * It will connect to a server using HTTP POST for sending messages and HTTP GET with Server-Sent Events
69
+ * for receiving messages.
70
+ */
71
+ export declare class StreamableHTTPClientTransport implements Transport {
72
+ private _abortController?;
73
+ private _url;
74
+ private _requestInit?;
75
+ private _authProvider?;
76
+ private _sessionId?;
77
+ private _reconnectionOptions;
78
+ onclose?: () => void;
79
+ onerror?: (error: Error) => void;
80
+ onmessage?: (message: JSONRPCMessage) => void;
81
+ constructor(url: URL, opts?: StreamableHTTPClientTransportOptions);
82
+ private _authThenStart;
83
+ private _commonHeaders;
84
+ private _startOrAuthSse;
85
+ /**
86
+ * Calculates the next reconnection delay using backoff algorithm
87
+ *
88
+ * @param attempt Current reconnection attempt count for the specific stream
89
+ * @returns Time to wait in milliseconds before next reconnection attempt
90
+ */
91
+ private _getNextReconnectionDelay;
92
+ /**
93
+ * Schedule a reconnection attempt with exponential backoff
94
+ *
95
+ * @param lastEventId The ID of the last received event for resumability
96
+ * @param attemptCount Current reconnection attempt count for this specific stream
97
+ */
98
+ private _scheduleReconnection;
99
+ private _handleSseStream;
100
+ start(): Promise<void>;
101
+ /**
102
+ * Call this method after the user has finished authorizing via their user agent and is redirected back to the MCP client application. This will exchange the authorization code for an access token, enabling the next connection attempt to successfully auth.
103
+ */
104
+ finishAuth(authorizationCode: string): Promise<void>;
105
+ close(): Promise<void>;
106
+ send(message: JSONRPCMessage | JSONRPCMessage[], options?: {
107
+ resumptionToken?: string;
108
+ onresumptiontoken?: (token: string) => void;
109
+ }): Promise<void>;
110
+ get sessionId(): string | undefined;
111
+ /**
112
+ * Terminates the current session by sending a DELETE request to the server.
113
+ *
114
+ * Clients that no longer need a particular session
115
+ * (e.g., because the user is leaving the client application) SHOULD send an
116
+ * HTTP DELETE to the MCP endpoint with the Mcp-Session-Id header to explicitly
117
+ * terminate the session.
118
+ *
119
+ * The server MAY respond with HTTP 405 Method Not Allowed, indicating that
120
+ * the server does not allow clients to terminate sessions.
121
+ */
122
+ terminateSession(): Promise<void>;
123
+ }
124
+ //# sourceMappingURL=streamableHttp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamableHttp.d.ts","sourceRoot":"","sources":["../../../src/client/streamableHttp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAkE,cAAc,EAAwB,MAAM,aAAa,CAAC;AACnI,OAAO,EAAoB,mBAAmB,EAAqB,MAAM,WAAW,CAAC;AAWrF,qBAAa,mBAAoB,SAAQ,KAAK;aAE1B,IAAI,EAAE,MAAM,GAAG,SAAS;gBAAxB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxC,OAAO,EAAE,MAAM,GAAG,SAAS;CAI9B;AA2BD;;GAEG;AACH,MAAM,WAAW,iCAAiC;IAChD;;;OAGG;IACH,oBAAoB,EAAE,MAAM,CAAC;IAE7B;;;OAGG;IACH,wBAAwB,EAAE,MAAM,CAAC;IAEjC;;;OAGG;IACH,2BAA2B,EAAE,MAAM,CAAC;IAEpC;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,oCAAoC,GAAG;IACjD;;;;;;;;;;;;;OAaG;IACH,YAAY,CAAC,EAAE,mBAAmB,CAAC;IAEnC;;OAEG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B;;OAEG;IACH,mBAAmB,CAAC,EAAE,iCAAiC,CAAC;IAExD;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;GAIG;AACH,qBAAa,6BAA8B,YAAW,SAAS;IAC7D,OAAO,CAAC,gBAAgB,CAAC,CAAkB;IAC3C,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,YAAY,CAAC,CAAc;IACnC,OAAO,CAAC,aAAa,CAAC,CAAsB;IAC5C,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,oBAAoB,CAAoC;IAEhE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;gBAG5C,GAAG,EAAE,GAAG,EACR,IAAI,CAAC,EAAE,oCAAoC;YAS/B,cAAc;YAoBd,cAAc;YAmBd,eAAe;IA6C7B;;;;;OAKG;IACH,OAAO,CAAC,yBAAyB;IAWjC;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAwB7B,OAAO,CAAC,gBAAgB;IAoElB,KAAK;IAUX;;OAEG;IACG,UAAU,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWpD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAOtB,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,cAAc,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA+F1J,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAElC;IAED;;;;;;;;;;OAUG;IACG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;CAgCxC"}