Skip to content

Commit e1fd94f

Browse files
authored
Merge pull request #23 from yepcode/feature/YEP-3092
YEP-3092 Improve mcp server logs traceability
2 parents 19ebe10 + b2aa118 commit e1fd94f

3 files changed

Lines changed: 36 additions & 17 deletions

File tree

src/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
#!/usr/bin/env node
22

3-
import Logger from "./logger.js";
3+
import DefaultLogger, { type Logger } from "./logger.js";
44
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
55
import YepCodeMcpServer from "./server.js";
66
import { getVersion } from "./utils.js";
77

8-
const logger = new Logger("StdioServer", { logsToStderr: true });
8+
const logger: Logger = new DefaultLogger("StdioServer", { logsToStderr: true });
99

1010
const main = async (): Promise<void> => {
1111
let tools: string[] | undefined;

src/logger.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
import { isObject } from "./utils.js";
22

3-
class Logger {
3+
interface Logger {
4+
error(message: string, error?: Error | undefined): void;
5+
6+
warn(message: string): void;
7+
8+
info(message: string): void;
9+
}
10+
11+
class DefaultLogger implements Logger {
412
private name: string | undefined;
513
private logsToStderr: boolean;
614

@@ -53,4 +61,5 @@ class Logger {
5361
}
5462
}
5563

56-
export default Logger;
64+
export default DefaultLogger;
65+
export type { Logger };

src/server.ts

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import dotenv from "dotenv";
1919
import { ToolCallRequest, ToolHandler } from "./types.js";
2020
import { z } from "zod";
2121
import { getVersion, isEmpty } from "./utils.js";
22-
import Logger from "./logger.js";
22+
import DefaultLogger, { type Logger } from "./logger.js";
2323
import {
2424
GetStorageObjectsSchema,
2525
UploadStorageObjectSchema,
@@ -154,12 +154,14 @@ class YepCodeMcpServer extends Server {
154154
tools = DEFAULT_TOOL_TAGS,
155155
runCodeCleanup = false,
156156
skipCodingRules = false,
157+
externalLogger = undefined,
157158
}: {
158159
logsToStderr?: boolean;
159160
tools?: string[];
160161
runCodeCleanup?: boolean;
161162
skipCodingRules?: boolean;
162-
} = {}
163+
externalLogger?: Logger;
164+
} = {},
163165
) {
164166
super(
165167
{
@@ -184,12 +186,16 @@ class YepCodeMcpServer extends Server {
184186
this.yepCodeRun = new YepCodeRun(config);
185187
this.yepCodeEnv = new YepCodeEnv(config);
186188
this.yepCodeApi = new YepCodeApi(config);
187-
this.logger = new Logger(this.yepCodeApi.getTeamId(), {
188-
logsToStderr,
189-
});
189+
if (externalLogger) {
190+
this.logger = externalLogger;
191+
} else {
192+
this.logger = new DefaultLogger(this.yepCodeApi.getTeamId(), {
193+
logsToStderr,
194+
});
195+
}
190196
this.logger.info("YepCode initialized successfully");
191197
} catch (error) {
192-
this.logger = new Logger("YepCodeMcpServer", {
198+
this.logger = new DefaultLogger("YepCodeMcpServer", {
193199
logsToStderr,
194200
});
195201
this.logger.error("Exception while initializing YepCode", error as Error);
@@ -437,10 +443,12 @@ class YepCodeMcpServer extends Server {
437443
let executionError: string | undefined;
438444
let returnValue: unknown;
439445

440-
this.logger.info("Running code with YepCode", {
441-
codeLength: code.length,
442-
options,
443-
});
446+
this.logger.info(
447+
`Running code with YepCode ${JSON.stringify({
448+
codeLength: code.length,
449+
options,
450+
})}`,
451+
);
444452

445453
const execution = await this.yepCodeRun.run(code, {
446454
removeOnDone: this.runCodeCleanup,
@@ -455,9 +463,11 @@ class YepCodeMcpServer extends Server {
455463
},
456464
onFinish: (value) => {
457465
returnValue = value;
458-
this.logger.info("YepCode execution finished", {
459-
hasReturnValue: value !== undefined,
460-
});
466+
this.logger.info(
467+
`YepCode execution finished ${JSON.stringify({
468+
hasReturnValue: value !== undefined,
469+
})}`,
470+
);
461471
},
462472
});
463473

0 commit comments

Comments
 (0)