@@ -45,25 +45,16 @@ import type {
45
45
* @returns Transport type mapping for span attributes
46
46
*/
47
47
export function getTransportTypes ( transport : MCPTransport ) : { mcpTransport : string ; networkTransport : string } {
48
- // Handle undefined transport gracefully while preserving type detection
49
48
if ( ! transport ?. constructor ) {
50
49
return { mcpTransport : 'unknown' , networkTransport : 'unknown' } ;
51
50
}
52
- const transportName = transport . constructor . name ?. toLowerCase ( ) || '' ;
51
+ const transportName = transport . constructor . name ?. toLowerCase ( ) || 'unknown' ;
52
+ const networkTransport = transportName === 'stdio' ? 'pipe' : 'tcp' ;
53
53
54
- if ( transportName . includes ( 'stdio' ) ) {
55
- return { mcpTransport : 'stdio' , networkTransport : 'pipe' } ;
56
- }
57
-
58
- if ( transportName . includes ( 'streamablehttp' ) || transportName . includes ( 'streamable' ) ) {
59
- return { mcpTransport : 'http' , networkTransport : 'tcp' } ;
60
- }
61
-
62
- if ( transportName . includes ( 'sse' ) ) {
63
- return { mcpTransport : 'sse' , networkTransport : 'tcp' } ;
64
- }
65
-
66
- return { mcpTransport : 'unknown' , networkTransport : 'unknown' } ;
54
+ return {
55
+ mcpTransport : transportName ,
56
+ networkTransport,
57
+ } ;
67
58
}
68
59
69
60
/**
@@ -264,17 +255,13 @@ export function extractClientInfo(extra: ExtraHandlerData): {
264
255
* @param transport - MCP transport instance
265
256
* @param extra - Optional extra handler data
266
257
* @returns Transport attributes for span instrumentation
258
+ * @note sessionId may be undefined during initial setup - session should be established by client during initialize flow
267
259
*/
268
260
export function buildTransportAttributes (
269
261
transport : MCPTransport ,
270
262
extra ?: ExtraHandlerData ,
271
263
) : Record < string , string | number > {
272
- // Gracefully handle undefined sessionId during MCP initialization
273
- // Respects client-provided sessions and waits for proper session establishment
274
264
const sessionId = transport && 'sessionId' in transport ? transport . sessionId : undefined ;
275
-
276
- // Note: sessionId may be undefined during initial setup - this is expected behavior
277
- // The actual session should be established by the client during the initialize flow
278
265
const clientInfo = extra ? extractClientInfo ( extra ) : { } ;
279
266
const { mcpTransport, networkTransport } = getTransportTypes ( transport ) ;
280
267
const clientAttributes = getClientAttributes ( transport ) ;
0 commit comments