@@ -15,6 +15,7 @@ import {loadIssueDescriptions} from './issue-descriptions.js';
1515import { logger , saveLogsToFile } from './logger.js' ;
1616import { McpContext } from './McpContext.js' ;
1717import { McpResponse } from './McpResponse.js' ;
18+ import { ClearcutLogger } from './telemetry/clearcut-logger.js' ;
1819import { Mutex } from './Mutex.js' ;
1920import {
2021 McpServer ,
@@ -34,6 +35,10 @@ const VERSION = '0.12.1';
3435export const args = parseArguments ( VERSION ) ;
3536
3637const logFile = args . logFile ? saveLogsToFile ( args . logFile ) : undefined ;
38+ let clearcutLogger : ClearcutLogger | undefined ;
39+ if ( args . usageStatistics ) {
40+ clearcutLogger = new ClearcutLogger ( ) ;
41+ }
3742
3843process . on ( 'unhandledRejection' , ( reason , promise ) => {
3944 logger ( 'Unhandled promise rejection' , promise , reason ) ;
@@ -148,6 +153,8 @@ function registerTool(tool: ToolDefinition): void {
148153 } ,
149154 async ( params ) : Promise < CallToolResult > => {
150155 const guard = await toolMutex . acquire ( ) ;
156+ const startTime = Date . now ( ) ;
157+ let success = false ;
151158 try {
152159 logger ( `${ tool . name } request: ${ JSON . stringify ( params , null , ' ' ) } ` ) ;
153160 const context = await getContext ( ) ;
@@ -170,6 +177,7 @@ function registerTool(tool: ToolDefinition): void {
170177 } = {
171178 content,
172179 } ;
180+ success = true ;
173181 if ( args . experimentalStructuredContent ) {
174182 result . structuredContent = structuredContent as Record <
175183 string ,
@@ -193,6 +201,11 @@ function registerTool(tool: ToolDefinition): void {
193201 isError : true ,
194202 } ;
195203 } finally {
204+ void clearcutLogger ?. logToolInvocation ( {
205+ toolName : tool . name ,
206+ success,
207+ latencyMs : Date . now ( ) - startTime ,
208+ } ) ;
196209 guard . dispose ( ) ;
197210 }
198211 } ,
@@ -207,4 +220,11 @@ await loadIssueDescriptions();
207220const transport = new StdioServerTransport ( ) ;
208221await server . connect ( transport ) ;
209222logger ( 'Chrome DevTools MCP Server connected' ) ;
223+ void clearcutLogger ?. logServerStart ( {
224+ browser_url_present : ! ! args . browserUrl ,
225+ headless : args . headless ,
226+ executable_path_present : ! ! args . executablePath ,
227+ isolated : args . isolated ,
228+ log_file_present : ! ! args . logFile ,
229+ } ) ;
210230logDisclaimers ( ) ;
0 commit comments