(
library: Library,
version: string,
options: {
additionalLibraries?: Library[];
registerAdditionalTools?: (server: McpServer) => void | Promise<void>;
} = {}
)
| 7 | import {z} from 'zod'; |
| 8 | |
| 9 | export async function startServer( |
| 10 | library: Library, |
| 11 | version: string, |
| 12 | options: { |
| 13 | additionalLibraries?: Library[]; |
| 14 | registerAdditionalTools?: (server: McpServer) => void | Promise<void>; |
| 15 | } = {} |
| 16 | ) { |
| 17 | const server = new McpServer({ |
| 18 | name: library === 's2' ? 's2-docs-server' : 'react-aria-docs-server', |
| 19 | version |
| 20 | }); |
| 21 | |
| 22 | const libraries: Library[] = [library, ...(options.additionalLibraries ?? [])]; |
| 23 | for (const lib of libraries) { |
| 24 | await registerLibraryDocsTools(server, lib); |
| 25 | } |
| 26 | |
| 27 | if (options.registerAdditionalTools) { |
| 28 | await options.registerAdditionalTools(server); |
| 29 | } |
| 30 | |
| 31 | const transport = new StdioServerTransport(); |
| 32 | await server.connect(transport); |
| 33 | } |
| 34 | |
| 35 | async function registerLibraryDocsTools(server: McpServer, library: Library) { |
| 36 | // Build page index at startup. |
nothing calls this directly
no test coverage detected