summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoragarwalravikant <[email protected]>2025-08-20 19:52:22 +0530
committerGitHub <[email protected]>2025-08-20 14:22:22 +0000
commit6b843ca3a81fa6cc98f3080d1686a367cd7679c0 (patch)
tree48a359e85d563d252e5a509a36d73847dc585a98
parenta773d0887cf05c6b01bd3340bf8d424feddaa0e8 (diff)
Changes to add MCP tool count, and MCP tool name as dimension (#6631)
Co-authored-by: Ravikant Agarwal <[email protected]> Co-authored-by: Bryan Morgan <[email protected]>
-rw-r--r--packages/core/src/config/config.test.ts5
-rw-r--r--packages/core/src/config/config.ts3
-rw-r--r--packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts14
-rw-r--r--packages/core/src/telemetry/clearcut-logger/event-metadata-key.ts9
-rw-r--r--packages/core/src/telemetry/loggers.test.ts4
-rw-r--r--packages/core/src/telemetry/loggers.ts3
-rw-r--r--packages/core/src/telemetry/types.ts18
7 files changed, 51 insertions, 5 deletions
diff --git a/packages/core/src/config/config.test.ts b/packages/core/src/config/config.test.ts
index 3fb71ae8..91f91729 100644
--- a/packages/core/src/config/config.test.ts
+++ b/packages/core/src/config/config.test.ts
@@ -488,11 +488,12 @@ describe('Server Config (config.ts)', () => {
},
);
- it('logs the session start event', () => {
- new Config({
+ it('logs the session start event', async () => {
+ const config = new Config({
...baseParams,
usageStatisticsEnabled: true,
});
+ await config.initialize();
expect(
ClearcutLogger.prototype.logStartSessionEvent,
diff --git a/packages/core/src/config/config.ts b/packages/core/src/config/config.ts
index 39e885e2..349a0f83 100644
--- a/packages/core/src/config/config.ts
+++ b/packages/core/src/config/config.ts
@@ -346,8 +346,6 @@ export class Config {
if (this.telemetrySettings.enabled) {
initializeTelemetry(this);
}
-
- logCliConfiguration(this, new StartSessionEvent(this));
}
/**
@@ -365,6 +363,7 @@ export class Config {
}
this.promptRegistry = new PromptRegistry();
this.toolRegistry = await this.createToolRegistry();
+ logCliConfiguration(this, new StartSessionEvent(this, this.toolRegistry));
}
async refreshAuth(authMethod: AuthType) {
diff --git a/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts b/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts
index 5663273d..32dcf926 100644
--- a/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts
+++ b/packages/core/src/telemetry/clearcut-logger/clearcut-logger.ts
@@ -382,6 +382,20 @@ export class ClearcutLogger {
EventMetadataKey.GEMINI_CLI_START_SESSION_TELEMETRY_LOG_USER_PROMPTS_ENABLED,
value: event.telemetry_log_user_prompts_enabled.toString(),
},
+ {
+ gemini_cli_key:
+ EventMetadataKey.GEMINI_CLI_START_SESSION_MCP_SERVERS_COUNT,
+ value: event.mcp_servers_count ? event.mcp_servers_count : '',
+ },
+ {
+ gemini_cli_key:
+ EventMetadataKey.GEMINI_CLI_START_SESSION_MCP_TOOLS_COUNT,
+ value: event.mcp_tools_count ? event.mcp_tools_count : '',
+ },
+ {
+ gemini_cli_key: EventMetadataKey.GEMINI_CLI_START_SESSION_MCP_TOOLS,
+ value: event.mcp_tools ? event.mcp_tools : '',
+ },
];
this.sessionData = data;
diff --git a/packages/core/src/telemetry/clearcut-logger/event-metadata-key.ts b/packages/core/src/telemetry/clearcut-logger/event-metadata-key.ts
index 34c8d9b0..a9c39758 100644
--- a/packages/core/src/telemetry/clearcut-logger/event-metadata-key.ts
+++ b/packages/core/src/telemetry/clearcut-logger/event-metadata-key.ts
@@ -237,4 +237,13 @@ export enum EventMetadataKey {
// Logs tool type whether it is mcp or native.
GEMINI_CLI_TOOL_TYPE = 62,
+
+ // Logs count of MCP servers in Start Session Event
+ GEMINI_CLI_START_SESSION_MCP_SERVERS_COUNT = 63,
+
+ // Logs count of MCP tools in Start Session Event
+ GEMINI_CLI_START_SESSION_MCP_TOOLS_COUNT = 64,
+
+ // Logs name of MCP tools as comma seperated string
+ GEMINI_CLI_START_SESSION_MCP_TOOLS = 65,
}
diff --git a/packages/core/src/telemetry/loggers.test.ts b/packages/core/src/telemetry/loggers.test.ts
index 8097b4a4..d52cb600 100644
--- a/packages/core/src/telemetry/loggers.test.ts
+++ b/packages/core/src/telemetry/loggers.test.ts
@@ -63,6 +63,7 @@ describe('loggers', () => {
};
beforeEach(() => {
+ vi.clearAllMocks();
vi.spyOn(sdk, 'isTelemetrySdkInitialized').mockReturnValue(true);
vi.spyOn(logs, 'getLogger').mockReturnValue(mockLogger);
vi.spyOn(uiTelemetry.uiTelemetryService, 'addEvent').mockImplementation(
@@ -161,6 +162,9 @@ describe('loggers', () => {
file_filtering_respect_git_ignore: true,
debug_mode: true,
mcp_servers: 'test-server',
+ mcp_servers_count: '1',
+ mcp_tools: undefined,
+ mcp_tools_count: undefined,
},
});
});
diff --git a/packages/core/src/telemetry/loggers.ts b/packages/core/src/telemetry/loggers.ts
index 9b9faf79..564e23b2 100644
--- a/packages/core/src/telemetry/loggers.ts
+++ b/packages/core/src/telemetry/loggers.ts
@@ -79,6 +79,9 @@ export function logCliConfiguration(
file_filtering_respect_git_ignore: event.file_filtering_respect_git_ignore,
debug_mode: event.debug_enabled,
mcp_servers: event.mcp_servers,
+ mcp_servers_count: event.mcp_servers_count,
+ mcp_tools: event.mcp_tools,
+ mcp_tools_count: event.mcp_tools_count,
};
const logger = logs.getLogger(SERVICE_NAME);
diff --git a/packages/core/src/telemetry/types.ts b/packages/core/src/telemetry/types.ts
index 0a49ca02..8b1b5d68 100644
--- a/packages/core/src/telemetry/types.ts
+++ b/packages/core/src/telemetry/types.ts
@@ -14,6 +14,7 @@ import {
getDecisionFromOutcome,
ToolCallDecision,
} from './tool-call-decision.js';
+import { ToolRegistry } from '../tools/tool-registry.js';
export interface BaseTelemetryEvent {
'event.name': string;
@@ -38,8 +39,11 @@ export class StartSessionEvent implements BaseTelemetryEvent {
telemetry_enabled: boolean;
telemetry_log_user_prompts_enabled: boolean;
file_filtering_respect_git_ignore: boolean;
+ mcp_servers_count?: string;
+ mcp_tools_count?: string;
+ mcp_tools?: string;
- constructor(config: Config) {
+ constructor(config: Config, toolRegistry?: ToolRegistry) {
const generatorConfig = config.getContentGeneratorConfig();
const mcpServers = config.getMcpServers();
@@ -66,6 +70,18 @@ export class StartSessionEvent implements BaseTelemetryEvent {
config.getTelemetryLogPromptsEnabled();
this.file_filtering_respect_git_ignore =
config.getFileFilteringRespectGitIgnore();
+ this.mcp_servers_count = mcpServers
+ ? Object.keys(mcpServers).length.toString()
+ : '';
+ if (toolRegistry) {
+ const mcpTools = toolRegistry
+ .getAllTools()
+ .filter((tool) => tool instanceof DiscoveredMCPTool);
+ this.mcp_tools_count = mcpTools.length.toString();
+ this.mcp_tools = mcpTools
+ .map((tool) => (tool as DiscoveredMCPTool).name)
+ .join(',');
+ }
}
}