@@ -391,15 +391,6 @@ def _set_span_output_data(
391391# Handler data preparation and wrapping
392392
393393
394- def _is_v2_context (original_args : "tuple[Any, ...]" ) -> bool :
395- """Check if original_args contains a v2 ServerRequestContext as the first element."""
396- return (
397- ServerRequestContext is not None
398- and bool (original_args )
399- and isinstance (original_args [0 ], ServerRequestContext )
400- )
401-
402-
403394def _extract_handler_data_from_params (
404395 handler_type : str ,
405396 params : "Any" ,
@@ -477,50 +468,6 @@ def _extract_handler_data_from_args(
477468 return handler_name , arguments
478469
479470
480- def _prepare_handler_data (
481- handler_type : str ,
482- original_args : "tuple[Any, ...]" ,
483- original_kwargs : "Optional[dict[str, Any]]" = None ,
484- params : "Optional[Any]" = None ,
485- ) -> "tuple[str, dict[str, Any], str, str, str, Optional[str]]" :
486- """
487- Prepare common handler data for both v1 and v2 MCP SDK.
488-
489- Args:
490- handler_type: "tool", "prompt", or "resource"
491- original_args: Original positional args (v1 path)
492- original_kwargs: Original keyword args (v1 path)
493- params: Typed params object from v2 ServerRequestContext path
494-
495- Returns:
496- Tuple of (handler_name, arguments, span_data_key, span_name, mcp_method_name, result_data_key)
497- """
498- if params is not None :
499- handler_name , arguments = _extract_handler_data_from_params (
500- handler_type , params
501- )
502- elif _is_v2_context (original_args ):
503- handler_name = "unknown"
504- arguments = {}
505- else :
506- handler_name , arguments = _extract_handler_data_from_args (
507- handler_type , original_args , original_kwargs
508- )
509-
510- span_data_key , span_name , mcp_method_name , result_data_key = _get_span_config (
511- handler_type , handler_name
512- )
513-
514- return (
515- handler_name ,
516- arguments ,
517- span_data_key ,
518- span_name ,
519- mcp_method_name ,
520- result_data_key ,
521- )
522-
523-
524471async def _tool_handler_wrapper (
525472 func : "Callable[..., Awaitable[Union[CallToolResult, InputRequiredResult]]]" ,
526473 original_args : "tuple[Any, ...]" ,
@@ -550,16 +497,20 @@ async def _tool_handler_wrapper(
550497 and isinstance (original_args [0 ], ServerRequestContext )
551498 ):
552499 ctx = original_args [0 ]
553- params = original_args [1 ] if len (original_args ) > 1 else None
500+ if len (original_args ) > 1 :
501+ params = original_args [1 ]
502+ handler_name , arguments = _extract_handler_data_from_params ("tool" , params )
503+ else :
504+ handler_name = "unknown"
505+ arguments = {}
506+ else :
507+ handler_name , arguments = _extract_handler_data_from_args (
508+ "tool" , original_args , original_kwargs
509+ )
554510
555- (
556- handler_name ,
557- arguments ,
558- span_data_key ,
559- span_name ,
560- mcp_method_name ,
561- result_data_key ,
562- ) = _prepare_handler_data ("tool" , original_args , original_kwargs , params = params )
511+ span_data_key , span_name , mcp_method_name , result_data_key = _get_span_config (
512+ "tool" , handler_name
513+ )
563514
564515 # Get request ID, session ID, and transport from context
565516 request_id , session_id , mcp_transport = _get_request_context_data (ctx = ctx )
@@ -639,23 +590,27 @@ async def _prompt_handler_wrapper(
639590
640591 # Detect v1 vs v2: MCP SDK v2 passes (ServerRequestContext, params) to handlers
641592 ctx : "Optional[Any]" = None
642- params : "Optional[Any]" = None
643593 if (
644594 ServerRequestContext is not None
645595 and original_args
646596 and isinstance (original_args [0 ], ServerRequestContext )
647597 ):
648598 ctx = original_args [0 ]
649- params = original_args [1 ] if len (original_args ) > 1 else None
599+ if len (original_args ) > 1 :
600+ handler_name , arguments = _extract_handler_data_from_params (
601+ "prompt" , original_args [1 ]
602+ )
603+ else :
604+ handler_name = "unknown"
605+ arguments = {}
606+ else :
607+ handler_name , arguments = _extract_handler_data_from_args (
608+ "prompt" , original_args , original_kwargs
609+ )
650610
651- (
652- handler_name ,
653- arguments ,
654- span_data_key ,
655- span_name ,
656- mcp_method_name ,
657- result_data_key ,
658- ) = _prepare_handler_data ("prompt" , original_args , original_kwargs , params = params )
611+ span_data_key , span_name , mcp_method_name , result_data_key = _get_span_config (
612+ "prompt" , handler_name
613+ )
659614
660615 # Get request ID, session ID, and transport from context
661616 request_id , session_id , mcp_transport = _get_request_context_data (ctx = ctx )
@@ -740,16 +695,22 @@ async def _resource_handler_wrapper(
740695 and isinstance (original_args [0 ], ServerRequestContext )
741696 ):
742697 ctx = original_args [0 ]
743- params = original_args [1 ] if len (original_args ) > 1 else None
744-
745- (
746- handler_name ,
747- arguments ,
748- span_data_key ,
749- span_name ,
750- mcp_method_name ,
751- result_data_key ,
752- ) = _prepare_handler_data ("resource" , original_args , original_kwargs , params = params )
698+ if len (original_args ) > 1 :
699+ params = original_args [1 ]
700+ handler_name , arguments = _extract_handler_data_from_params (
701+ "resource" , params
702+ )
703+ else :
704+ handler_name = "unknown"
705+ arguments = {}
706+ else :
707+ handler_name , arguments = _extract_handler_data_from_args (
708+ "resource" , original_args , original_kwargs
709+ )
710+
711+ span_data_key , span_name , mcp_method_name , result_data_key = _get_span_config (
712+ "resource" , handler_name
713+ )
753714
754715 # Get request ID, session ID, and transport from context
755716 request_id , session_id , mcp_transport = _get_request_context_data (ctx = ctx )
0 commit comments