Skip to content

Commit 9603e1b

Browse files
feng-95nirga
andauthored
fix(mcp): MCP Instrumentation: streamablehttp_client Parameter Corruption (#3199)
Co-authored-by: Nir Gazit <[email protected]>
1 parent 1c455b6 commit 9603e1b

File tree

1 file changed

+20
-6
lines changed
  • packages/opentelemetry-instrumentation-mcp/opentelemetry/instrumentation/mcp

1 file changed

+20
-6
lines changed

packages/opentelemetry-instrumentation-mcp/opentelemetry/instrumentation/mcp/instrumentation.py

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from contextlib import asynccontextmanager
22
from dataclasses import dataclass
3-
from typing import Any, AsyncGenerator, Callable, Collection, Tuple, cast
3+
from typing import Any, AsyncGenerator, Callable, Collection, Tuple, cast, Union
44
import json
55
import logging
66
import traceback
@@ -124,16 +124,30 @@ def _transport_wrapper(self, tracer):
124124
async def traced_method(
125125
wrapped: Callable[..., Any], instance: Any, args: Any, kwargs: Any
126126
) -> AsyncGenerator[
127-
Tuple["InstrumentedStreamReader", "InstrumentedStreamWriter"], None
127+
Union[
128+
Tuple[InstrumentedStreamReader, InstrumentedStreamWriter],
129+
Tuple[InstrumentedStreamReader, InstrumentedStreamWriter, Any]
130+
],
131+
None
128132
]:
129133
async with wrapped(*args, **kwargs) as result:
130134
try:
131135
read_stream, write_stream = result
136+
yield InstrumentedStreamReader(
137+
read_stream, tracer
138+
), InstrumentedStreamWriter(write_stream, tracer)
132139
except ValueError:
133-
read_stream, write_stream, _ = result
134-
yield InstrumentedStreamReader(
135-
read_stream, tracer
136-
), InstrumentedStreamWriter(write_stream, tracer)
140+
try:
141+
read_stream, write_stream, get_session_id_callback = result
142+
yield InstrumentedStreamReader(
143+
read_stream, tracer
144+
), InstrumentedStreamWriter(write_stream, tracer), get_session_id_callback
145+
except Exception as e:
146+
logging.warning(f"mcp instrumentation _transport_wrapper exception: {e}")
147+
yield result
148+
except Exception as e:
149+
logging.warning(f"mcp instrumentation transport_wrapper exception: {e}")
150+
yield result
137151

138152
return traced_method
139153

0 commit comments

Comments
 (0)