MCPcopy
hub / github.com/ChromeDevTools/chrome-devtools-mcp / createMcpServer

Function createMcpServer

src/index.ts:32–192  ·  view source on GitHub ↗
(
  serverArgs: ReturnType<typeof parseArguments>,
  options: {
    logFile?: fs.WriteStream;
  },
)

Source from the content-addressed store, hash-verified

30export {buildFlag} from './ToolHandler.js';
31
32export async function createMcpServer(
33 serverArgs: ReturnType<typeof parseArguments>,
34 options: {
35 logFile?: fs.WriteStream;
36 },
37) {
38 if (serverArgs.usageStatistics) {
39 ClearcutLogger.initialize({
40 persistence: new FilePersistence(),
41 logFile: serverArgs.logFile,
42 appVersion: VERSION,
43 clearcutEndpoint: serverArgs.clearcutEndpoint,
44 clearcutForceFlushIntervalMs: serverArgs.clearcutForceFlushIntervalMs,
45 clearcutIncludePidHeader: serverArgs.clearcutIncludePidHeader,
46 });
47 }
48
49 const server = new McpServer(
50 {
51 name: 'chrome_devtools',
52 title: 'Chrome DevTools MCP server',
53 version: VERSION,
54 },
55 {capabilities: {logging: {}}},
56 );
57 server.server.setRequestHandler(SetLevelRequestSchema, () => {
58 return {};
59 });
60
61 const updateRoots = async () => {
62 if (!server.server.getClientCapabilities()?.roots) {
63 return;
64 }
65 try {
66 const roots = await server.server.request(
67 {method: 'roots/list'},
68 ListRootsResultSchema,
69 );
70 context?.setRoots(roots.roots);
71 } catch (e) {
72 logger?.('Failed to list roots', e);
73 }
74 };
75
76 server.server.oninitialized = () => {
77 const clientName = server.server.getClientVersion()?.name;
78 if (clientName) {
79 ClearcutLogger.get()?.setClientName(clientName);
80 }
81 if (server.server.getClientCapabilities()?.roots) {
82 void updateRoots();
83 server.server.setNotificationHandler(
84 RootsListChangedNotificationSchema,
85 () => {
86 void updateRoots();
87 },
88 );
89 }

Callers 1

Calls 7

updateRootsFunction · 0.85
createToolsFunction · 0.85
registerToolFunction · 0.85
loadIssueDescriptionsFunction · 0.85
setClientNameMethod · 0.80
initializeMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected