Skip to content

Commit 521aa84

Browse files
committed
update
1 parent a137a1b commit 521aa84

File tree

3 files changed

+20
-9
lines changed

3 files changed

+20
-9
lines changed

src/server.ts

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,23 +53,29 @@ export class Server {
5353

5454
this.emitServerEvent("start", Date.now() - this.startTime);
5555
};
56+
57+
this.mcpServer.server.onclose = () => {
58+
const closeTime = Date.now();
59+
this.emitServerEvent("stop", Date.now() - closeTime);
60+
};
61+
62+
this.mcpServer.server.onerror = (error: Error) => {
63+
const closeTime = Date.now();
64+
this.emitServerEvent("stop", Date.now() - closeTime, error);
65+
};
5666
}
5767

5868
async close(): Promise<void> {
59-
const closeTime = Date.now();
6069
await this.session.close();
6170
await this.mcpServer.close();
62-
63-
this.emitServerEvent("stop", Date.now() - closeTime);
6471
}
6572

66-
6773
/**
6874
* Emits a server event
6975
* @param command - The server command (e.g., "start", "stop", "register", "deregister")
7076
* @param additionalProperties - Additional properties specific to the event
7177
*/
72-
async emitServerEvent(command: ServerCommand, commandDuration: number): Promise<void> {
78+
emitServerEvent(command: ServerCommand, commandDuration: number, error?: Error) {
7379
const event: ServerEvent = {
7480
timestamp: new Date().toISOString(),
7581
source: "mdbmcp",
@@ -88,9 +94,13 @@ export class Server {
8894
}
8995
if (command === "stop") {
9096
event.properties.runtime_duration_ms = Date.now() - this.startTime;
97+
if (error) {
98+
event.properties.result = "failure";
99+
event.properties.reason = error.message;
100+
}
91101
}
92102

93-
await this.telemetry.emitEvents([event]);
103+
this.telemetry.emitEvents([event]).catch(() => {});
94104
}
95105

96106
private registerTools() {

src/telemetry/telemetry.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Session } from "../session.js";
2-
import { BaseEvent, ServerEvent } from "./types.js";
2+
import { BaseEvent } from "./types.js";
33
import { config } from "../config.js";
44
import logger from "../logger.js";
55
import { mongoLogId } from "mongodb-log-writer";

src/telemetry/types.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* Result type constants for telemetry events
33
*/
44
export type TelemetryResult = "success" | "failure";
5-
export type ServerCommand = "start" | "stop" | "register" | "deregister";
5+
export type ServerCommand = "start" | "stop" | "register" | "deregister";
66

77
/**
88
* Base interface for all events
@@ -53,7 +53,8 @@ export interface ToolEvent extends BaseEvent {
5353
export interface ServerEvent extends BaseEvent {
5454
properties: {
5555
command: ServerCommand;
56+
reason?: string;
5657
startup_time_ms?: number;
5758
runtime_duration_ms?: number;
58-
} & BaseEvent["properties"];
59+
} & BaseEvent["properties"];
5960
}

0 commit comments

Comments
 (0)