Skip to content

Commit a944132

Browse files
authored
Merge branch 'main' into feat-list-changed-client
2 parents d2d0107 + 0a374fc commit a944132

20 files changed

+505
-717
lines changed

docs/server.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ For more detailed patterns (stateless vs stateful, JSON response mode, CORS, DNS
7171
MCP servers running on localhost are vulnerable to DNS rebinding attacks. Use `createMcpExpressApp()` to create an Express app with DNS rebinding protection enabled by default:
7272

7373
```typescript
74-
import { createMcpExpressApp } from '@modelcontextprotocol/sdk/server/index.js';
74+
import { createMcpExpressApp } from '@modelcontextprotocol/sdk/server/express.js';
7575

7676
// Protection auto-enabled (default host is 127.0.0.1)
7777
const app = createMcpExpressApp();

package-lock.json

Lines changed: 403 additions & 623 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@modelcontextprotocol/sdk",
3-
"version": "1.24.1",
3+
"version": "1.24.2",
44
"description": "Model Context Protocol implementation for TypeScript",
55
"license": "MIT",
66
"author": "Anthropic, PBC (https://anthropic.com)",
@@ -133,7 +133,7 @@
133133
"supertest": "^7.0.0",
134134
"tsx": "^4.16.5",
135135
"typescript": "^5.5.4",
136-
"typescript-eslint": "^8.0.0",
136+
"typescript-eslint": "^8.48.1",
137137
"vitest": "^4.0.8",
138138
"ws": "^8.18.0"
139139
},

src/client/sse.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,9 @@ export class SSEClientTransport implements Transport {
281281

282282
throw new Error(`Error POSTing to endpoint (HTTP ${response.status}): ${text}`);
283283
}
284+
285+
// Release connection - POST responses don't have content we need
286+
await response.body?.cancel();
284287
} catch (error) {
285288
this.onerror?.(error as Error);
286289
throw error;

src/client/streamableHttp.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -592,8 +592,12 @@ export class StreamableHTTPClientTransport implements Transport {
592592
this.onmessage?.(msg);
593593
}
594594
} else {
595+
await response.body?.cancel();
595596
throw new StreamableHTTPError(-1, `Unexpected content type: ${contentType}`);
596597
}
598+
} else {
599+
// No requests in message but got 200 OK - still need to release connection
600+
await response.body?.cancel();
597601
}
598602
} catch (error) {
599603
this.onerror?.(error as Error);

src/examples/server/elicitationFormExample.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { type Request, type Response } from 'express';
1212
import { McpServer } from '../../server/mcp.js';
1313
import { StreamableHTTPServerTransport } from '../../server/streamableHttp.js';
1414
import { isInitializeRequest } from '../../types.js';
15-
import { createMcpExpressApp } from '../../server/index.js';
15+
import { createMcpExpressApp } from '../../server/express.js';
1616

1717
// Create MCP server - it will automatically use AjvJsonSchemaValidator with sensible defaults
1818
// The validator supports format validation (email, date, etc.) if ajv-formats is installed

src/examples/server/elicitationUrlExample.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import express, { Request, Response } from 'express';
1111
import { randomUUID } from 'node:crypto';
1212
import { z } from 'zod';
1313
import { McpServer } from '../../server/mcp.js';
14-
import { createMcpExpressApp } from '../../server/index.js';
14+
import { createMcpExpressApp } from '../../server/express.js';
1515
import { StreamableHTTPServerTransport } from '../../server/streamableHttp.js';
1616
import { getOAuthProtectedResourceMetadataUrl, mcpAuthMetadataRouter } from '../../server/auth/router.js';
1717
import { requireBearerAuth } from '../../server/auth/middleware/bearerAuth.js';

src/examples/server/jsonResponseStreamableHttp.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { McpServer } from '../../server/mcp.js';
44
import { StreamableHTTPServerTransport } from '../../server/streamableHttp.js';
55
import * as z from 'zod/v4';
66
import { CallToolResult, isInitializeRequest } from '../../types.js';
7-
import { createMcpExpressApp } from '../../server/index.js';
7+
import { createMcpExpressApp } from '../../server/express.js';
88

99
// Create an MCP server with implementation details
1010
const getServer = () => {

src/examples/server/simpleSseServer.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { McpServer } from '../../server/mcp.js';
33
import { SSEServerTransport } from '../../server/sse.js';
44
import * as z from 'zod/v4';
55
import { CallToolResult } from '../../types.js';
6-
import { createMcpExpressApp } from '../../server/index.js';
6+
import { createMcpExpressApp } from '../../server/express.js';
77

88
/**
99
* This example server demonstrates the deprecated HTTP+SSE transport

src/examples/server/simpleStatelessStreamableHttp.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { McpServer } from '../../server/mcp.js';
33
import { StreamableHTTPServerTransport } from '../../server/streamableHttp.js';
44
import * as z from 'zod/v4';
55
import { CallToolResult, GetPromptResult, ReadResourceResult } from '../../types.js';
6-
import { createMcpExpressApp } from '../../server/index.js';
6+
import { createMcpExpressApp } from '../../server/express.js';
77

88
const getServer = () => {
99
// Create an MCP server with implementation details

0 commit comments

Comments
 (0)