Skip to main content
Glama

OpenAI MCP Server

base.cpython-312.pyc8.93 kB
� �6�gZ� �&�dZddlZddlZddlZddlZddlmZmZmZm Z m Z m Z m Z ddl Z ddlmZmZmZej$e�ZGd�de�ZGd�de�ZGd �d e�ZGd �d �Z dd ededeeefdedef d�Zdedee ddfd�Zy)zBase classes for tools.�N)�Dict�List�Any�Callable�Optional�Type�Union)� BaseModel�Field� validatorc�R�eZdZUdZeed<eed<eed<dZeed<Gd�d�Zy ) � ToolParameterzDefinition of a tool parameter.�name� description�typeF�requiredc��eZdZdZdZy)�ToolParameter.Config�Pydantic config.�forbidN��__name__� __module__� __qualname__�__doc__�extra���K/Users/agent/claude-code-reverse/python-agent/claude_code/lib/tools/base.py�Configr� ����rr N) rrrr�str�__annotations__r�boolr rrrrrs)��)� �I��� �I��H�d���rrc�~�eZdZUdZeed<eed<eed<eed<dZeed<dZ eed <d Z e eed <Gd �d �Z y )� ToolResultzResult of a tool execution.� tool_call_idr�result�execution_timer� token_usage�success�statusN�errorc��eZdZdZdZy)�ToolResult.ConfigrrNrrrrr r/)r!rr ) rrrrr"r#�floatr*�intr,r-rr rrrr&r&sG��%��� �I� �K����K����F�C���E�8�C�=���rr&c��eZdZUdZeed<eed<eeefed<eed<dZ e ed<dZ eed <Gd �d �Z d eeefd e fd�Zy)�ToolzBase class for all tools.rr� parameters�functionF�needs_permission�general�categoryc��eZdZdZdZdZy)� Tool.ConfigrTrN)rrrr�arbitrary_types_allowedrrrrr r:8s���"&���rr � tool_call�returnc ��|jdi�jdd�}|jdi�jdd�}|jdd�} tj|�}tj�} |jdi|��}tj�|z } t|t�s t|�}t ||j|| d��S#tj$rI}tj d|���t ||jd |��d d t|�� �cYd }~Sd }~wwxYw#t$rv}tj�|z } tjd|j�d|���t ||jdt|���| d t|�� �cYd }~Sd }~wwxYw)z�Execute the tool with the given parameters. Args: tool_call: Dictionary containing tool call information Returns: ToolResult with execution result r5r�� argumentsz{}�id�unknownzFailed to parse arguments: z"Error: Failed to parse arguments: rr-)r'rr(r)r,r-Nr+)r'rr(r)r,zError executing tool z: zError: r)�get�json�loads�JSONDecodeError�loggerr-r&rr"�timer5� isinstance� Exception� exception) �selfr<� function_name� arguments_strr'r@�e� start_timer(r)s r�executez Tool.execute=s���"� � �j�"�5�9�9�&�"�E� �!� � �j�"�5�9�9�+�t�L� � �}�}�T�9�5� � �� � �=�1�I��Y�Y�[� � �"�T�]�]�/�Y�/�F�!�Y�Y�[�:�5�N��f�c�*��V����)��Y�Y��-� � � ��+�#�#� � �L�L�6�q�c�:� ;��)��Y�Y�;�A�3�?� ���!�f� � �� ��8� �!�Y�Y�[�:�5�N� � � �4�T�Y�Y�K�r�!��E� F��)��Y�Y� ��Q���)�-���!�f� � �� �s>�C �AD?� D<�3>D7�1D<�7D<�? F>�A+F9�3F>�9F>N)rrrrr"r#rrrr6r$r8r r&rQrrrr3r3.s^��#� �I����S�#�X�����"��d�"��H�c���� 7��c�3�h��7�J�7rr3c�j�eZdZdZd�Zdeddfd�Zdedeefd�Z de efd �Z de e ee ffd �Zy) � ToolRegistryzRegistry for tools.c��i|_y)zInitialize the tool registry.N)�tools�rLs r�__init__zToolRegistry.__init__zs ��&(�� r�toolr=Nc���|j|jvrtd|j�d���||j|j<tj d|j���y)z�Register a tool. Args: tool: Tool instance to register Raises: ValueError: If a tool with the same name is already registered zTool z is already registeredzRegistered tool: N)rrU� ValueErrorrG�debug)rLrXs r� register_toolzToolRegistry.register_tool~sW�� �9�9�� � � "��u�T�Y�Y�K�/E�F�G� G� $�� � �4�9�9��� � �(���� �4�5rrc�8�|jj|�S)z�Get a tool by name. Args: name: Name of the tool Returns: Tool instance or None if not found )rUrC)rLrs r�get_toolzToolRegistry.get_tool�s���z�z�~�~�d�#�#rc�H�t|jj��S)zeGet all registered tools. Returns: List of all registered tools )�listrU�valuesrVs r� get_all_toolszToolRegistry.get_all_tools�s�� �D�J�J�%�%�'�(�(rc��g}|jj�D]8}|jd|j|j|j d�d���:|S)z�Get OpenAI-compatible schemas for all tools. Returns: List of tool schemas for OpenAI function calling r5)rrr4)rr5)rUra�appendrrr4)rL�schemasrXs r�get_tool_schemaszToolRegistry.get_tool_schemas�s\�� ���J�J�%�%�'� �D� �N�N�"� �I�I�#'�#3�#3�"&�/�/��� � ��r)rrrrrWr3r\r"rr^rrbrrrfrrrrSrSws]���)� 6�$� 6�4� 6� $�S� $�X�d�^� $�)�t�D�z�)��$�t�C��H�~�"6�rrSrrr4r6r8c�<������dtdtf�����fd� }|S)aVDecorator to register a function as a tool. Args: name: Name of the tool description: Description of the tool parameters: Parameter schema for the tool needs_permission: Whether the tool needs user permission category: Category of the tool Returns: Decorator function �funcr=c�"�������d�|_|S)N)rrr4r6r8)� _tool_info)rhr8rrr6r4s �����r� decoratorztool.<locals>.decorator�s$����&�$� 0� �  ���� r)r)rrr4r6r8rks````` rrXrX�s#��� �� �X� � � �r�registry� functionsr=c ��|D]L}t|d�s�|j}t|d|d|d||d|d��}|j|��Ny) z�Create and register tools from functions with _tool_info. Args: registry: Tool registry to register tools with functions: List of functions to create tools from rjrrr4r6r8)rrr4r5r6r8N)�hasattrrjr3r\)rlrmrh�inforXs r�create_tools_from_functionsrq�sk��� )�� �4�� &��?�?�D���&�\� ��/�� �-��!%�&8�!9��j�)� �D� � "� "�4� (� )r)Fr7)r�abc�inspectrH�logging�typingrrrrrrr rD�pydanticr r r � getLoggerrrGrr&r3rSr"r$rXrqrrr�<module>rxs���� �� ��C�C�C� �0�0� �� � �8� $�� �I� � �� � F�9�F�R9�9�z:C��s����$�s�C�x�.����36��6)�,�)�4��>�)�VZ�)r

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/arthurcolle/openai-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server