
    ChY                        S SK Jr  S SKJr  S SKJrJr  S SKJ	r	  S SK
Jr  S SKJr  S SKJrJr  S SKJrJr  \(       a  S S	KJr  S S
KJr  \" \5      r " S S5      rg)    )annotations)Callable)TYPE_CHECKINGAny)	ToolError)Tool)
get_logger)LifespanContextTRequestT)IconToolAnnotations)Context)ServerSessionTc                      \ rS rSrSr SSS.   SS jjjrSS jrSS jr      S               SS jjrSS	 jr	  S         SS
 jjr
Srg)ToolManager   zManages FastMCP tools.N)toolsc                   0 U l         Ubd  U H^  nU(       a<  UR                  U R                   ;   a"  [        R                  SUR                   35        X0R                   UR                  '   M`     Xl        g )NTool already exists: )_toolsnameloggerwarningwarn_on_duplicate_tools)selfr   r   tools       _/home/james-whalen/.local/lib/python3.13/site-packages/mcp/server/fastmcp/tools/tool_manager.py__init__ToolManager.__init__   s]     (**tyyDKK/GNN%:499+#FG)-DII& 
 (?$    c                8    U R                   R                  U5      $ )zGet tool by name.)r   getr   r   s     r   get_toolToolManager.get_tool%   s    {{t$$r    c                H    [        U R                  R                  5       5      $ )zList all registered tools.)listr   values)r   s    r   
list_toolsToolManager.list_tools)   s    DKK&&())r    c           
     ,   [         R                  " UUUUUUUS9nU R                  R                  UR                  5      n	U	(       a5  U R
                  (       a"  [        R                  SUR                   35        U	$ XR                  UR                  '   U$ )zAdd a tool to the server.)r   titledescriptionr   iconsstructured_outputr   )r   from_functionr   r"   r   r   r   r   )
r   fnr   r,   r-   r   r.   r/   r   existings
             r   add_toolToolManager.add_tool-   s     !!##/
 ;;??499-++!6tyykBCO!%DIIr    c                X    XR                   ;  a  [        SU 35      eU R                   U	 g)zRemove a tool by name.Unknown tool: N)r   r   r#   s     r   remove_toolToolManager.remove_toolI   s*    {{"nTF344KKr    c                   #    U R                  U5      nU(       d  [        SU 35      eUR                  X#US9I Sh  vN $  N7f)z#Call a tool by name with arguments.r6   )contextconvert_resultN)r$   r   run)r   r   	argumentsr:   r;   r   s         r   	call_toolToolManager.call_toolO   sC      }}T"nTF344XXiXXXXXs   :AAA)r   r   )T)r   boolr   zlist[Tool] | None)r   strreturnzTool | None)rB   z
list[Tool])NNNNNN)r1   zCallable[..., Any]r   
str | Noner,   rC   r-   rC   r   zToolAnnotations | Noner.   zlist[Icon] | Noner/   zbool | NonerB   r   )r   rA   rB   None)NF)
r   rA   r=   zdict[str, Any]r:   z:Context[ServerSessionT, LifespanContextT, RequestT] | Noner;   r@   rB   r   )__name__
__module____qualname____firstlineno____doc__r   r$   r)   r3   r7   r>   __static_attributes__ r    r   r   r      s      )-? $(	?!%? !	?%*   "&.2#')-  	
   , ! ' 
8 OS$YY "Y L	Y
 Y 
Y Yr    r   N)
__future__r   _annotationscollections.abcr   typingr   r   mcp.server.fastmcp.exceptionsr   mcp.server.fastmcp.tools.baser   $mcp.server.fastmcp.utilities.loggingr	   mcp.shared.contextr
   r   	mcp.typesr   r   mcp.server.fastmcp.serverr   mcp.server.sessionr   rE   r   r   rK   r    r   <module>rW      s>    2 $ % 3 . ; 9 +11	H	HY HYr    