diff --git a/src/common/atlas/apiClient.ts b/src/common/atlas/apiClient.ts index f71e1162..2cda1ffc 100644 --- a/src/common/atlas/apiClient.ts +++ b/src/common/atlas/apiClient.ts @@ -4,8 +4,6 @@ import { AccessToken, ClientCredentials } from "simple-oauth2"; import { ApiClientError } from "./apiClientError.js"; import { paths, operations } from "./openapi.js"; import { BaseEvent } from "../../telemetry/types.js"; -import { mongoLogId } from "mongodb-log-writer"; -import logger from "../../logger.js"; import { packageInfo } from "../../packageInfo.js"; const ATLAS_API_VERSION = "2025-03-12"; @@ -98,11 +96,6 @@ export class ApiClient { } public hasCredentials(): boolean { - logger.info( - mongoLogId(1_000_000), - "api-client", - `Checking if API client has credentials: ${!!(this.oauth2Client && this.accessToken)}` - ); return !!(this.oauth2Client && this.accessToken); } diff --git a/src/telemetry/constants.ts b/src/telemetry/constants.ts index dfccbe75..7ae139b5 100644 --- a/src/telemetry/constants.ts +++ b/src/telemetry/constants.ts @@ -1,10 +1,10 @@ import { getMachineIdSync } from "native-machine-id"; import { packageInfo } from "../packageInfo.js"; - +import { type CommonStaticProperties } from "./types.js"; /** * Machine-specific metadata formatted for telemetry */ -export const MACHINE_METADATA = { +export const MACHINE_METADATA: CommonStaticProperties = { device_id: getMachineIdSync(), mcp_server_version: packageInfo.version, mcp_server_name: packageInfo.mcpServerName, diff --git a/src/telemetry/telemetry.ts b/src/telemetry/telemetry.ts index b823b503..518fc0d0 100644 --- a/src/telemetry/telemetry.ts +++ b/src/telemetry/telemetry.ts @@ -1,5 +1,5 @@ import { Session } from "../session.js"; -import { BaseEvent } from "./types.js"; +import { BaseEvent, CommonProperties } from "./types.js"; import { config } from "../config.js"; import logger from "../logger.js"; import { mongoLogId } from "mongodb-log-writer"; @@ -12,19 +12,6 @@ type EventResult = { error?: Error; }; -type CommonProperties = { - device_id?: string; - mcp_server_version: string; - mcp_server_name: string; - mcp_client_version?: string; - mcp_client_name?: string; - platform: string; - arch: string; - os_type: string; - os_version?: string; - session_id?: string; -}; - export class Telemetry { private readonly commonProperties: CommonProperties; @@ -88,6 +75,8 @@ export class Telemetry { mcp_client_version: this.session.agentRunner?.version, mcp_client_name: this.session.agentRunner?.name, session_id: this.session.sessionId, + config_atlas_auth: this.session.apiClient.hasCredentials() ? "true" : "false", + config_connection_string: config.connectionString ? "true" : "false", }; } diff --git a/src/telemetry/types.ts b/src/telemetry/types.ts index 863904fd..bd1ef2a1 100644 --- a/src/telemetry/types.ts +++ b/src/telemetry/types.ts @@ -3,6 +3,7 @@ */ export type TelemetryResult = "success" | "failure"; export type ServerCommand = "start" | "stop"; +export type TelemetryBoolSet = "true" | "false"; /** * Base interface for all events @@ -14,21 +15,11 @@ export interface Event { } export interface BaseEvent extends Event { - properties: { - device_id?: string; - mcp_server_version: string; - mcp_server_name: string; - mcp_client_version?: string; - mcp_client_name?: string; - platform: string; - arch: string; - os_type: string; + properties: CommonProperties & { component: string; duration_ms: number; result: TelemetryResult; category: string; - os_version?: string; - session_id?: string; } & Event["properties"]; } @@ -58,3 +49,27 @@ export interface ServerEvent extends BaseEvent { runtime_duration_ms?: number; } & BaseEvent["properties"]; } + +/** + * Interface for static properties, they can be fetched once and reused. + */ +export type CommonStaticProperties = { + device_id?: string; + mcp_server_version: string; + mcp_server_name: string; + platform: string; + arch: string; + os_type: string; + os_version?: string; +}; + +/** + * Common properties for all events that might change. + */ +export type CommonProperties = { + mcp_client_version?: string; + mcp_client_name?: string; + config_atlas_auth?: TelemetryBoolSet; + config_connection_string?: TelemetryBoolSet; + session_id?: string; +} & CommonStaticProperties;