MCPcopy Create free account
hub / github.com/modelcontextprotocol/typescript-sdk / getServer

Function getServer

src/examples/server/ssePollingExample.ts:26–109  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

24// Factory to create a new MCP server per session.
25// Each session needs its own server+transport pair to avoid cross-session contamination.
26const getServer = () => {
27 const server = new McpServer(
28 {
29 name: 'sse-polling-example',
30 version: '1.0.0'
31 },
32 {
33 capabilities: { logging: {} }
34 }
35 );
36
37 // Register a long-running tool that demonstrates server-initiated disconnect
38 server.tool(
39 'long-task',
40 'A long-running task that sends progress updates. Server will disconnect mid-task to demonstrate polling.',
41 {},
42 async (_args, extra): Promise<CallToolResult> => {
43 const sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));
44
45 console.log(`[${extra.sessionId}] Starting long-task...`);
46
47 // Send first progress notification
48 await server.sendLoggingMessage(
49 {
50 level: 'info',
51 data: 'Progress: 25% - Starting work...'
52 },
53 extra.sessionId
54 );
55 await sleep(1000);
56
57 // Send second progress notification
58 await server.sendLoggingMessage(
59 {
60 level: 'info',
61 data: 'Progress: 50% - Halfway there...'
62 },
63 extra.sessionId
64 );
65 await sleep(1000);
66
67 // Server decides to disconnect the client to free resources
68 // Client will reconnect via GET with Last-Event-ID after the transport's retryInterval
69 // Use extra.closeSSEStream callback - available when eventStore is configured
70 if (extra.closeSSEStream) {
71 console.log(`[${extra.sessionId}] Closing SSE stream to trigger client polling...`);
72 extra.closeSSEStream();
73 }
74
75 // Continue processing while client is disconnected
76 // Events are stored in eventStore and will be replayed on reconnect
77 await sleep(500);
78 await server.sendLoggingMessage(
79 {
80 level: 'info',
81 data: 'Progress: 75% - Almost done (sent while client disconnected)...'
82 },
83 extra.sessionId

Callers 1

Calls 4

toolMethod · 0.95
sendLoggingMessageMethod · 0.95
sleepFunction · 0.70
closeSSEStreamMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…