Skip to content

Commit d19681c

Browse files
Transport logging
1 parent 7784776 commit d19681c

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

src/utils/json-http-transport.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import {
88
} from '@modelcontextprotocol/sdk/types.js';
99
import { IncomingMessage, ServerResponse } from 'node:http';
1010

11+
import { logger } from './logger';
12+
1113
type RequestId = number | string;
1214

1315
type ConnectionContext = {
@@ -50,6 +52,7 @@ export class JsonHTTPServerTransport implements Transport {
5052
} catch {
5153
// ignore
5254
}
55+
logger.info('SSE connection terminated during transport close');
5356
this.sse = undefined;
5457
}
5558
this.connections.forEach((ctx) => {
@@ -144,11 +147,13 @@ export class JsonHTTPServerTransport implements Transport {
144147
res,
145148
keepalive,
146149
};
150+
logger.info({ headers: req.headers }, 'SSE connection established');
147151

148152
res.on('close', () => {
149153
try {
150154
clearInterval(keepalive);
151155
} finally {
156+
logger.info('SSE connection closed by client');
152157
this.sse = undefined;
153158
}
154159
});
@@ -166,6 +171,13 @@ export class JsonHTTPServerTransport implements Transport {
166171
id: null,
167172
}),
168173
);
174+
logger.warn(
175+
{
176+
method: req.method,
177+
headers: req.headers,
178+
},
179+
'Rejected non-POST HTTP request',
180+
);
169181
return;
170182
}
171183

@@ -185,6 +197,7 @@ export class JsonHTTPServerTransport implements Transport {
185197
id: null,
186198
}),
187199
);
200+
logger.warn({ headers: req.headers }, 'Rejected POST due to unacceptable Accept header');
188201
return;
189202
}
190203

@@ -201,6 +214,7 @@ export class JsonHTTPServerTransport implements Transport {
201214
id: null,
202215
}),
203216
);
217+
logger.warn({ headers: req.headers }, 'Rejected POST due to unsupported Content-Type');
204218
return;
205219
}
206220

@@ -230,6 +244,7 @@ export class JsonHTTPServerTransport implements Transport {
230244
authInfo: req.auth,
231245
});
232246
}
247+
logger.info('Accepted POST without requests (notifications only)');
233248
return;
234249
}
235250

@@ -246,6 +261,7 @@ export class JsonHTTPServerTransport implements Transport {
246261
authInfo: req.auth,
247262
});
248263
}
264+
logger.info('POST handled with SSE active: responded 202 and streaming via SSE');
249265
return;
250266
}
251267

@@ -271,6 +287,7 @@ export class JsonHTTPServerTransport implements Transport {
271287
authInfo: req.auth,
272288
});
273289
}
290+
logger.info({ requestIds: orderedIds }, 'POST handled with JSON response mode');
274291
} catch (error) {
275292
this.onerror?.(error as Error);
276293
res.writeHead(400);
@@ -285,6 +302,7 @@ export class JsonHTTPServerTransport implements Transport {
285302
id: null,
286303
}),
287304
);
305+
logger.error(error as Error, 'HTTP request handling parse/validation error');
288306
}
289307
}
290308
}

0 commit comments

Comments
 (0)