MCPcopy Index your code
hub / github.com/BrowserMCP/mcp / createServerWithTools

Function createServerWithTools

src/server.ts:21–92  ·  view source on GitHub ↗
(options: Options)

Source from the content-addressed store, hash-verified

19};
20
21export async function createServerWithTools(options: Options): Promise<Server> {
22 const { name, version, tools, resources } = options;
23 const context = new Context();
24 const server = new Server(
25 { name, version },
26 {
27 capabilities: {
28 tools: {},
29 resources: {},
30 },
31 },
32 );
33
34 const wss = await createWebSocketServer();
35 wss.on("connection", (websocket) => {
36 // Close any existing connections
37 if (context.hasWs()) {
38 context.ws.close();
39 }
40 context.ws = websocket;
41 });
42
43 server.setRequestHandler(ListToolsRequestSchema, async () => {
44 return { tools: tools.map((tool) => tool.schema) };
45 });
46
47 server.setRequestHandler(ListResourcesRequestSchema, async () => {
48 return { resources: resources.map((resource) => resource.schema) };
49 });
50
51 server.setRequestHandler(CallToolRequestSchema, async (request) => {
52 const tool = tools.find((tool) => tool.schema.name === request.params.name);
53 if (!tool) {
54 return {
55 content: [
56 { type: "text", text: `Tool "${request.params.name}" not found` },
57 ],
58 isError: true,
59 };
60 }
61
62 try {
63 const result = await tool.handle(context, request.params.arguments);
64 return result;
65 } catch (error) {
66 return {
67 content: [{ type: "text", text: String(error) }],
68 isError: true,
69 };
70 }
71 });
72
73 server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
74 const resource = resources.find(
75 (resource) => resource.schema.uri === request.params.uri,
76 );
77 if (!resource) {
78 return { contents: [] };

Callers 1

createServerFunction · 0.90

Calls 3

hasWsMethod · 0.95
closeMethod · 0.95
createWebSocketServerFunction · 0.90

Tested by

no test coverage detected