Skip to content

Commit d1ea22b

Browse files
committed
chore(pdf-server): remove JSONL interaction logging
Remove the withLogging transport wrapper, logInteraction helper, InteractionLogger type, and all log parameter threading that were added for debugging.
1 parent ccd32c3 commit d1ea22b

2 files changed

Lines changed: 11 additions & 79 deletions

File tree

examples/pdf-server/main.ts

Lines changed: 7 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,6 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
1010
import { createMcpExpressApp } from "@modelcontextprotocol/sdk/server/express.js";
1111
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
1212
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
13-
import type {
14-
Transport,
15-
TransportSendOptions,
16-
} from "@modelcontextprotocol/sdk/shared/transport.js";
17-
import type { JSONRPCMessage } from "@modelcontextprotocol/sdk/types.js";
1813
import cors from "cors";
1914
import type { Request, Response } from "express";
2015
import {
@@ -29,56 +24,6 @@ import {
2924
allowedLocalDirs,
3025
} from "./server.js";
3126

32-
// =============================================================================
33-
// JSONL Interaction Logger
34-
// =============================================================================
35-
36-
const LOG_PATH = path.join(import.meta.dirname, "interactions.jsonl");
37-
38-
/** Append a JSONL line to the log file. */
39-
function logInteraction(entry: Record<string, unknown>): void {
40-
const line = JSON.stringify({
41-
timestamp: new Date().toISOString(),
42-
...entry,
43-
});
44-
fs.appendFile(LOG_PATH, line + "\n", (err) => {
45-
if (err) console.error("[pdf-server] Failed to write log:", err.message);
46-
});
47-
}
48-
49-
/**
50-
* Wraps an MCP transport to log every incoming and outgoing JSON-RPC message
51-
* to a JSONL file at `interactions.jsonl` next to this script.
52-
*/
53-
function withLogging<T extends Transport>(transport: T): T {
54-
const originalSend = transport.send.bind(transport);
55-
56-
transport.send = async (
57-
message: JSONRPCMessage,
58-
options?: TransportSendOptions,
59-
): Promise<void> => {
60-
logInteraction({ direction: "server→client", message });
61-
return originalSend(message, options);
62-
};
63-
64-
// Intercept the onmessage setter so we can log before the real handler runs
65-
let realOnMessage = transport.onmessage;
66-
Object.defineProperty(transport, "onmessage", {
67-
get: () => realOnMessage,
68-
set: (handler: typeof transport.onmessage) => {
69-
realOnMessage = handler
70-
? (message, extra) => {
71-
logInteraction({ direction: "client→server", message });
72-
handler(message, extra);
73-
}
74-
: handler;
75-
},
76-
configurable: true,
77-
});
78-
79-
return transport;
80-
}
81-
8227
/**
8328
* Starts an MCP server with Streamable HTTP transport in stateless mode.
8429
*/
@@ -92,11 +37,9 @@ export async function startStreamableHTTPServer(
9237

9338
app.all("/mcp", async (req: Request, res: Response) => {
9439
const server = createServer();
95-
const transport = withLogging(
96-
new StreamableHTTPServerTransport({
97-
sessionIdGenerator: undefined,
98-
}),
99-
);
40+
const transport = new StreamableHTTPServerTransport({
41+
sessionIdGenerator: undefined,
42+
});
10043

10144
res.on("close", () => {
10245
transport.close().catch(() => {});
@@ -143,7 +86,7 @@ export async function startStreamableHTTPServer(
14386
export async function startStdioServer(
14487
createServer: () => McpServer,
14588
): Promise<void> {
146-
await createServer().connect(withLogging(new StdioServerTransport()));
89+
await createServer().connect(new StdioServerTransport());
14790
}
14891

14992
function parseArgs(): { urls: string[]; stdio: boolean } {
@@ -195,15 +138,12 @@ async function main() {
195138
}
196139
}
197140

198-
console.error(
199-
`[pdf-server] Ready (${urls.length} URL(s) configured, logging to ${LOG_PATH})`,
200-
);
141+
console.error(`[pdf-server] Ready (${urls.length} URL(s) configured)`);
201142

202-
const factory = () => createServer(logInteraction);
203143
if (stdio) {
204-
await startStdioServer(factory);
144+
await startStdioServer(createServer);
205145
} else {
206-
await startStreamableHTTPServer(factory);
146+
await startStreamableHTTPServer(createServer);
207147
}
208148
}
209149

examples/pdf-server/server.ts

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -354,23 +354,15 @@ export function createPdfCache(): PdfCache {
354354
// MCP Roots
355355
// =============================================================================
356356

357-
/** Optional structured logger for JSONL interaction logging. */
358-
export type InteractionLogger = (entry: Record<string, unknown>) => void;
359-
360357
/**
361358
* Query the client for roots and update allowedLocalDirs with any file:// roots
362359
* that point to existing directories.
363360
*/
364-
async function refreshRoots(
365-
server: Server,
366-
trigger: "initialized" | "roots/list_changed",
367-
log?: InteractionLogger,
368-
): Promise<void> {
361+
async function refreshRoots(server: Server): Promise<void> {
369362
if (!server.getClientCapabilities()?.roots) return;
370363

371364
try {
372365
const { roots } = await server.listRoots();
373-
log?.({ event: "roots/list", trigger, roots });
374366
allowedLocalDirs.clear();
375367
for (const root of roots) {
376368
if (root.uri.startsWith("file://")) {
@@ -403,17 +395,17 @@ async function refreshRoots(
403395
// MCP Server Factory
404396
// =============================================================================
405397

406-
export function createServer(log?: InteractionLogger): McpServer {
398+
export function createServer(): McpServer {
407399
const server = new McpServer({ name: "PDF Server", version: "2.0.0" });
408400

409401
// Fetch roots on initialization and subscribe to changes
410402
server.server.oninitialized = () => {
411-
refreshRoots(server.server, "initialized", log);
403+
refreshRoots(server.server);
412404
};
413405
server.server.setNotificationHandler(
414406
RootsListChangedNotificationSchema,
415407
async () => {
416-
await refreshRoots(server.server, "roots/list_changed", log);
408+
await refreshRoots(server.server);
417409
},
418410
);
419411

0 commit comments

Comments
 (0)