Skip to content

Commit b522376

Browse files
committed
Maintain legacy resource/operation names for backwards compatibility
1 parent 996320e commit b522376

File tree

3 files changed

+14
-13
lines changed

3 files changed

+14
-13
lines changed

ddtrace/contrib/internal/mcp/patch.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
from ddtrace.internal.logger import get_logger
1818
from ddtrace.internal.utils.formats import asbool
1919
from ddtrace.llmobs._integrations.mcp import CLIENT_TOOL_CALL_OPERATION_NAME
20-
from ddtrace.llmobs._integrations.mcp import REQUEST_RESPONDER_ENTER_OPERATION_NAME
21-
from ddtrace.llmobs._integrations.mcp import REQUEST_RESPONDER_RESPOND_OPERATION_NAME
20+
from ddtrace.llmobs._integrations.mcp import SERVER_REQUEST_OPERATION_NAME
21+
from ddtrace.llmobs._integrations.mcp import SERVER_TOOL_CALL_OPERATION_NAME
2222
from ddtrace.llmobs._integrations.mcp import MCPIntegration
2323
from ddtrace.llmobs._utils import _get_attr
2424
from ddtrace.propagation.http import HTTPPropagator
@@ -231,9 +231,13 @@ def traced_request_responder_enter(mcp, pin: Pin, func, instance, args: tuple, k
231231
if headers:
232232
activate_distributed_headers(pin.tracer, config.mcp, headers)
233233

234+
operation_name = (
235+
SERVER_TOOL_CALL_OPERATION_NAME if isinstance(request_root, CallToolRequest) else SERVER_REQUEST_OPERATION_NAME
236+
)
237+
234238
span = integration.trace(
235239
pin,
236-
REQUEST_RESPONDER_ENTER_OPERATION_NAME,
240+
operation_name,
237241
submit_to_llmobs=True,
238242
span_name="mcp.{}".format(_get_attr(request_root, "method", "unknown")),
239243
)
@@ -263,18 +267,16 @@ async def traced_request_responder_respond(mcp, pin: Pin, func, instance, args:
263267
integration: MCPIntegration = mcp._datadog_integration
264268
span: Optional[Span] = getattr(instance, "_dd_span", None)
265269

266-
result = await func(*args, **kwargs)
267-
268270
if span:
269271
integration.llmobs_set_tags(
270272
span,
271273
args=args,
272274
kwargs=dict(**kwargs, request_responder=instance),
273275
response=None,
274-
operation=REQUEST_RESPONDER_RESPOND_OPERATION_NAME,
276+
operation=SERVER_REQUEST_OPERATION_NAME,
275277
)
276278

277-
return result
279+
return await func(*args, **kwargs)
278280

279281

280282
def patch():

ddtrace/llmobs/_integrations/mcp.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,9 @@
2424
MCP_SPAN_TYPE = "_ml_obs.mcp_span_type"
2525

2626
CLIENT_TOOL_CALL_OPERATION_NAME = "client_tool_call"
27-
REQUEST_RESPONDER_ENTER_OPERATION_NAME = "request_responder"
28-
REQUEST_RESPONDER_RESPOND_OPERATION_NAME = "request_responder_respond"
27+
SERVER_REQUEST_OPERATION_NAME = "server_request"
28+
# This operation is handled the same as server_request but has a different name for legacy reasons
29+
SERVER_TOOL_CALL_OPERATION_NAME = "server_tool_call"
2930

3031

3132
def _find_client_session_root(span: Optional[Span]) -> Optional[Span]:
@@ -90,7 +91,7 @@ def _llmobs_set_tags(
9091
self._llmobs_set_tags_client(span, args, kwargs, response)
9192
elif operation == "initialize":
9293
self._llmobs_set_tags_initialize(span, args, kwargs, response)
93-
elif operation == REQUEST_RESPONDER_RESPOND_OPERATION_NAME:
94+
elif operation == SERVER_REQUEST_OPERATION_NAME or operation == SERVER_TOOL_CALL_OPERATION_NAME:
9495
self._llmobs_set_tags_request_responder_respond(span, args, kwargs, response)
9596
elif operation == "list_tools":
9697
self._llmobs_set_tags_list_tools(span, args, kwargs, response)

tests/contrib/mcp/test_mcp_llmobs.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,7 @@ def _assert_distributed_trace(mock_tracer, llmobs_events, expected_tool_name):
1616

1717
all_spans = [span for trace in traces for span in trace]
1818
client_spans = [span for span in all_spans if span.resource == "client_tool_call"]
19-
server_spans = [
20-
span for span in all_spans if span.name == "mcp.tools/call" and span.resource == "request_responder"
21-
]
19+
server_spans = [span for span in all_spans if span.resource == "server_tool_call"]
2220
client_events = [event for event in llmobs_events if "MCP Client Tool Call" in event["name"]]
2321
server_events = [
2422
event

0 commit comments

Comments
 (0)