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

Function createTestServer

test/server/streamableHttp.test.ts:144–188  ·  view source on GitHub ↗

* Helper to create and start test HTTP server with MCP setup

(config: TestServerConfig = { sessionIdGenerator: () => randomUUID() })

Source from the content-addressed store, hash-verified

142 * Helper to create and start test HTTP server with MCP setup
143 */
144 async function createTestServer(config: TestServerConfig = { sessionIdGenerator: () => randomUUID() }): Promise<{
145 server: Server;
146 transport: StreamableHTTPServerTransport;
147 mcpServer: McpServer;
148 baseUrl: URL;
149 }> {
150 const mcpServer = new McpServer({ name: 'test-server', version: '1.0.0' }, { capabilities: { logging: {} } });
151
152 mcpServer.tool(
153 'greet',
154 'A simple greeting tool',
155 { name: z.string().describe('Name to greet') },
156 async ({ name }): Promise<CallToolResult> => {
157 return { content: [{ type: 'text', text: `Hello, ${name}!` }] };
158 }
159 );
160
161 const transport = new StreamableHTTPServerTransport({
162 sessionIdGenerator: config.sessionIdGenerator,
163 enableJsonResponse: config.enableJsonResponse ?? false,
164 eventStore: config.eventStore,
165 onsessioninitialized: config.onsessioninitialized,
166 onsessionclosed: config.onsessionclosed,
167 retryInterval: config.retryInterval
168 });
169
170 await mcpServer.connect(transport);
171
172 const server = createServer(async (req, res) => {
173 try {
174 if (config.customRequestHandler) {
175 await config.customRequestHandler(req, res);
176 } else {
177 await transport.handleRequest(req, res);
178 }
179 } catch (error) {
180 console.error('Error handling request:', error);
181 if (!res.headersSent) res.writeHead(500).end();
182 }
183 });
184
185 const baseUrl = await listenOnRandomPort(server);
186
187 return { server, transport, mcpServer, baseUrl };
188 }
189
190 /**
191 * Helper to create and start authenticated test HTTP server with MCP setup

Callers 1

Calls 5

toolMethod · 0.95
connectMethod · 0.95
handleRequestMethod · 0.95
createServerFunction · 0.85
listenOnRandomPortFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…