Skip to content

Commit 7c9257c

Browse files
authored
refactor: make Server class framework-agnostic by moving express to separate module (#1223)
1 parent 401a189 commit 7c9257c

16 files changed

+93
-92
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();

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

src/examples/server/simpleStreamableHttp.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { McpServer } from '../../server/mcp.js';
55
import { StreamableHTTPServerTransport } from '../../server/streamableHttp.js';
66
import { getOAuthProtectedResourceMetadataUrl, mcpAuthMetadataRouter } from '../../server/auth/router.js';
77
import { requireBearerAuth } from '../../server/auth/middleware/bearerAuth.js';
8-
import { createMcpExpressApp } from '../../server/index.js';
8+
import { createMcpExpressApp } from '../../server/express.js';
99
import {
1010
CallToolResult,
1111
ElicitResultSchema,

src/examples/server/simpleTaskInteractive.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111

1212
import { Request, Response } from 'express';
1313
import { randomUUID } from 'node:crypto';
14-
import { createMcpExpressApp, Server } from '../../server/index.js';
14+
import { Server } from '../../server/index.js';
15+
import { createMcpExpressApp } from '../../server/express.js';
1516
import { StreamableHTTPServerTransport } from '../../server/streamableHttp.js';
1617
import {
1718
CallToolResult,

src/examples/server/sseAndStreamableHttpCompatibleServer.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { SSEServerTransport } from '../../server/sse.js';
66
import * as z from 'zod/v4';
77
import { CallToolResult, isInitializeRequest } from '../../types.js';
88
import { InMemoryEventStore } from '../shared/inMemoryEventStore.js';
9-
import { createMcpExpressApp } from '../../server/index.js';
9+
import { createMcpExpressApp } from '../../server/express.js';
1010

1111
/**
1212
* This example server demonstrates backwards compatibility with both:

src/examples/server/ssePollingExample.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import { Request, Response } from 'express';
1616
import { randomUUID } from 'node:crypto';
1717
import { McpServer } from '../../server/mcp.js';
18-
import { createMcpExpressApp } from '../../server/index.js';
18+
import { createMcpExpressApp } from '../../server/express.js';
1919
import { StreamableHTTPServerTransport } from '../../server/streamableHttp.js';
2020
import { CallToolResult } from '../../types.js';
2121
import { InMemoryEventStore } from '../shared/inMemoryEventStore.js';

0 commit comments

Comments
 (0)