* Helper to create and start test HTTP server with MCP setup
(config: TestServerConfig = { sessionIdGenerator: () => randomUUID() })
| 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 |
no test coverage detected
searching dependent graphs…