({ sendAnalytics } = {})
| 12 | * @returns {Object} - Server instance and transport |
| 13 | */ |
| 14 | export async function startStdioServer({ sendAnalytics } = {}) { |
| 15 | // Create the MCP server instance. |
| 16 | const server = new McpServer({ |
| 17 | name: 'serverless', |
| 18 | version: '1.0.0', |
| 19 | }) |
| 20 | |
| 21 | // Add analytics tracking for tool executions if sendAnalytics function is provided |
| 22 | wrapServerWithAnalytics(server, sendAnalytics) |
| 23 | |
| 24 | // Register all tools on the server |
| 25 | registerTools(server) |
| 26 | |
| 27 | try { |
| 28 | // Set up stdio transport |
| 29 | const transport = new StdioServerTransport() |
| 30 | console.error('Connecting server to transport...') |
| 31 | await server.connect(transport) |
| 32 | console.error('MCP stdio server started and connected to transport.') |
| 33 | |
| 34 | return { |
| 35 | server, |
| 36 | transport, |
| 37 | stop: async () => { |
| 38 | try { |
| 39 | await transport.close() |
| 40 | return true |
| 41 | } catch (error) { |
| 42 | console.error('Error stopping stdio server:', error) |
| 43 | return false |
| 44 | } |
| 45 | }, |
| 46 | } |
| 47 | } catch (error) { |
| 48 | console.error('Error starting MCP stdio server:', error) |
| 49 | throw error |
| 50 | } |
| 51 | } |
no test coverage detected
searching dependent graphs…