Skip to content

Commit 807b2ca

Browse files
committed
address comment: fix telemetry init
1 parent 6dd1f79 commit 807b2ca

File tree

4 files changed

+19
-17
lines changed

4 files changed

+19
-17
lines changed

src/server.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,17 @@ import logger, { initializeLogger } from "./logger.js";
77
import { mongoLogId } from "mongodb-log-writer";
88
import config from "./config.js";
99
import { ObjectId } from "mongodb";
10+
import { Telemetry } from "./telemetry/telemetry.js";
1011

1112
export class Server {
1213
public readonly session: Session;
1314
private readonly mcpServer: McpServer;
15+
private readonly telemetry: Telemetry;
1416

1517
constructor({ mcpServer, session }: { mcpServer: McpServer; session: Session }) {
1618
this.mcpServer = mcpServer;
1719
this.session = session;
20+
this.telemetry = new Telemetry(session);
1821
}
1922

2023
async connect(transport: Transport) {
@@ -45,7 +48,7 @@ export class Server {
4548

4649
private registerTools() {
4750
for (const tool of [...AtlasTools, ...MongoDbTools]) {
48-
new tool(this.session).register(this.mcpServer);
51+
new tool(this.session, this.telemetry).register(this.mcpServer);
4952
}
5053
}
5154

src/tools/atlas/atlasTool.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
import { ToolBase, ToolCategory } from "../tool.js";
22
import { Session } from "../../session.js";
33
import config from "../../config.js";
4+
import { Telemetry } from "../../telemetry/telemetry.js";
45

56
export abstract class AtlasToolBase extends ToolBase {
6-
constructor(protected readonly session: Session) {
7-
super(session);
7+
constructor(
8+
protected readonly session: Session,
9+
telemetry: Telemetry
10+
) {
11+
super(session, telemetry);
812
}
913

1014
protected category: ToolCategory = "atlas";

src/tools/mongodb/mongodbTool.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,16 @@ import { NodeDriverServiceProvider } from "@mongosh/service-provider-node-driver
55
import { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
66
import { ErrorCodes, MongoDBError } from "../../errors.js";
77
import config from "../../config.js";
8+
import { Telemetry } from "../../telemetry/telemetry.js";
89

910
export const DbOperationArgs = {
1011
database: z.string().describe("Database name"),
1112
collection: z.string().describe("Collection name"),
1213
};
1314

1415
export abstract class MongoDBToolBase extends ToolBase {
15-
constructor(session: Session) {
16-
super(session);
16+
constructor(session: Session, telemetry: Telemetry) {
17+
super(session, telemetry);
1718
}
1819

1920
protected category: ToolCategory = "mongodb";

src/tools/tool.ts

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import { z, type ZodRawShape, type ZodNever } from "zod";
22
import type { McpServer, ToolCallback } from "@modelcontextprotocol/sdk/server/mcp.js";
3-
import type { CallToolResult, Tool } from "@modelcontextprotocol/sdk/types.js";
3+
import type { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
44
import { Session } from "../session.js";
55
import logger from "../logger.js";
66
import { mongoLogId } from "mongodb-log-writer";
77
import config from "../config.js";
88
import { Telemetry } from "../telemetry/telemetry.js";
9-
import { type ToolEvent, type TelemetryResult } from "../telemetry/types.js";
9+
import { type ToolEvent } from "../telemetry/types.js";
1010

1111
export type ToolArgs<Args extends ZodRawShape> = z.objectOutputType<Args, ZodNever>;
1212

@@ -24,13 +24,12 @@ export abstract class ToolBase {
2424

2525
protected abstract argsShape: ZodRawShape;
2626

27-
private readonly telemetry: Telemetry;
28-
2927
protected abstract execute(...args: Parameters<ToolCallback<typeof this.argsShape>>): Promise<CallToolResult>;
3028

31-
protected constructor(protected session: Session) {
32-
this.telemetry = new Telemetry(session);
33-
}
29+
protected constructor(
30+
protected session: Session,
31+
protected readonly telemetry: Telemetry
32+
) {}
3433

3534
/**
3635
* Creates and emits a tool telemetry event
@@ -40,11 +39,6 @@ export abstract class ToolBase {
4039
*/
4140
private async emitToolEvent(startTime: number, result: CallToolResult): Promise<void> {
4241
const duration = Date.now() - startTime;
43-
logger.info(
44-
mongoLogId(1_000_007),
45-
"tool",
46-
`Tool ${this.name} executed in ${duration}ms with result: ${result}`
47-
);
4842
const event: ToolEvent = {
4943
timestamp: new Date().toISOString(),
5044
source: "mdbmcp",

0 commit comments

Comments
 (0)