Skip to content

Commit d55cfd3

Browse files
ref(mcp): Inline _get_span_config() (#6761)
Remove unnecessary indirection by inlining `_get_span_config()`.
1 parent 73b43a9 commit d55cfd3

1 file changed

Lines changed: 19 additions & 54 deletions

File tree

sentry_sdk/integrations/mcp.py

Lines changed: 19 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -178,33 +178,6 @@ def _get_request_context_data(
178178
return request_id, session_id, mcp_transport
179179

180180

181-
def _get_span_config(
182-
handler_type: str, item_name: str
183-
) -> "tuple[str, str, str, Optional[str]]":
184-
"""
185-
Get span configuration based on handler type.
186-
187-
Returns:
188-
Tuple of (span_data_key, span_name, mcp_method_name, result_data_key)
189-
Note: result_data_key is None for resources
190-
"""
191-
if handler_type == "tool":
192-
span_data_key = SPANDATA.MCP_TOOL_NAME
193-
mcp_method_name = "tools/call"
194-
result_data_key = SPANDATA.MCP_TOOL_RESULT_CONTENT
195-
elif handler_type == "prompt":
196-
span_data_key = SPANDATA.MCP_PROMPT_NAME
197-
mcp_method_name = "prompts/get"
198-
result_data_key = SPANDATA.MCP_PROMPT_RESULT_MESSAGE_CONTENT
199-
else: # resource
200-
span_data_key = SPANDATA.MCP_RESOURCE_URI
201-
mcp_method_name = "resources/read"
202-
result_data_key = None # Resources don't capture result content
203-
204-
span_name = f"{mcp_method_name} {item_name}"
205-
return span_data_key, span_name, mcp_method_name, result_data_key
206-
207-
208181
def _set_span_input_data(
209182
span: "Union[StreamedSpan, Span]",
210183
handler_name: str,
@@ -508,10 +481,6 @@ async def _tool_handler_wrapper(
508481
"tool", original_args, original_kwargs
509482
)
510483

511-
span_data_key, span_name, mcp_method_name, result_data_key = _get_span_config(
512-
"tool", handler_name
513-
)
514-
515484
# Get request ID, session ID, and transport from context
516485
request_id, session_id, mcp_transport = _get_request_context_data(ctx=ctx)
517486

@@ -522,7 +491,7 @@ async def _tool_handler_wrapper(
522491
span_mgr: "Union[Span, StreamedSpan]"
523492
if span_streaming:
524493
span_mgr = sentry_sdk.traces.start_span(
525-
name=span_name,
494+
name=f"tools/call {handler_name}",
526495
attributes={
527496
"sentry.op": OP.MCP_SERVER,
528497
"sentry.origin": MCPIntegration.origin,
@@ -531,7 +500,7 @@ async def _tool_handler_wrapper(
531500
else:
532501
span_mgr = get_start_span_function()(
533502
op=OP.MCP_SERVER,
534-
name=span_name,
503+
name=f"tools/call {handler_name}",
535504
origin=MCPIntegration.origin,
536505
)
537506

@@ -540,8 +509,8 @@ async def _tool_handler_wrapper(
540509
_set_span_input_data(
541510
span,
542511
handler_name,
543-
span_data_key,
544-
mcp_method_name,
512+
SPANDATA.MCP_TOOL_NAME,
513+
"tools/call",
545514
arguments,
546515
request_id,
547516
session_id,
@@ -563,7 +532,9 @@ async def _tool_handler_wrapper(
563532
sentry_sdk.capture_exception(e)
564533
raise
565534

566-
_set_span_output_data(span, result, result_data_key, "tool")
535+
_set_span_output_data(
536+
span, result, SPANDATA.MCP_TOOL_RESULT_CONTENT, "tool"
537+
)
567538

568539
return result
569540

@@ -608,10 +579,6 @@ async def _prompt_handler_wrapper(
608579
"prompt", original_args, original_kwargs
609580
)
610581

611-
span_data_key, span_name, mcp_method_name, result_data_key = _get_span_config(
612-
"prompt", handler_name
613-
)
614-
615582
# Get request ID, session ID, and transport from context
616583
request_id, session_id, mcp_transport = _get_request_context_data(ctx=ctx)
617584

@@ -622,7 +589,7 @@ async def _prompt_handler_wrapper(
622589
span_mgr: "Union[Span, StreamedSpan]"
623590
if span_streaming:
624591
span_mgr = sentry_sdk.traces.start_span(
625-
name=span_name,
592+
name=f"prompts/get {handler_name}",
626593
attributes={
627594
"sentry.op": OP.MCP_SERVER,
628595
"sentry.origin": MCPIntegration.origin,
@@ -631,7 +598,7 @@ async def _prompt_handler_wrapper(
631598
else:
632599
span_mgr = get_start_span_function()(
633600
op=OP.MCP_SERVER,
634-
name=span_name,
601+
name=f"prompts/get {handler_name}",
635602
origin=MCPIntegration.origin,
636603
)
637604

@@ -640,8 +607,8 @@ async def _prompt_handler_wrapper(
640607
_set_span_input_data(
641608
span,
642609
handler_name,
643-
span_data_key,
644-
mcp_method_name,
610+
SPANDATA.MCP_PROMPT_NAME,
611+
"prompts/get",
645612
arguments,
646613
request_id,
647614
session_id,
@@ -661,7 +628,9 @@ async def _prompt_handler_wrapper(
661628
sentry_sdk.capture_exception(e)
662629
raise
663630

664-
_set_span_output_data(span, result, result_data_key, "prompt")
631+
_set_span_output_data(
632+
span, result, SPANDATA.MCP_PROMPT_RESULT_MESSAGE_CONTENT, "prompt"
633+
)
665634

666635
return result
667636

@@ -708,10 +677,6 @@ async def _resource_handler_wrapper(
708677
"resource", original_args, original_kwargs
709678
)
710679

711-
span_data_key, span_name, mcp_method_name, result_data_key = _get_span_config(
712-
"resource", handler_name
713-
)
714-
715680
# Get request ID, session ID, and transport from context
716681
request_id, session_id, mcp_transport = _get_request_context_data(ctx=ctx)
717682

@@ -722,7 +687,7 @@ async def _resource_handler_wrapper(
722687
span_mgr: "Union[Span, StreamedSpan]"
723688
if span_streaming:
724689
span_mgr = sentry_sdk.traces.start_span(
725-
name=span_name,
690+
name=f"resources/read {handler_name}",
726691
attributes={
727692
"sentry.op": OP.MCP_SERVER,
728693
"sentry.origin": MCPIntegration.origin,
@@ -731,7 +696,7 @@ async def _resource_handler_wrapper(
731696
else:
732697
span_mgr = get_start_span_function()(
733698
op=OP.MCP_SERVER,
734-
name=span_name,
699+
name=f"resources/read {handler_name}",
735700
origin=MCPIntegration.origin,
736701
)
737702

@@ -740,8 +705,8 @@ async def _resource_handler_wrapper(
740705
_set_span_input_data(
741706
span,
742707
handler_name,
743-
span_data_key,
744-
mcp_method_name,
708+
SPANDATA.MCP_RESOURCE_URI,
709+
"resources/read",
745710
arguments,
746711
request_id,
747712
session_id,
@@ -780,7 +745,7 @@ async def _resource_handler_wrapper(
780745
sentry_sdk.capture_exception(e)
781746
raise
782747

783-
_set_span_output_data(span, result, result_data_key, "resource")
748+
_set_span_output_data(span, result, None, "resource")
784749

785750
return result
786751

0 commit comments

Comments
 (0)