Skip to main content
Glama

NetBrain MCP

by NorthLaneMS
tool_manager.cpython-312.pyc8.89 kB
� b�'h����ddlmZmZmZmZmZmZmZmZddl Z ddl m Z ddl m Z ddlmZddlZddlZGd�dej$�Zej(ej*dej,ej.� �g� �ej0j2D]-Zeeej,�s�ej9ed���/ej:d �ZGd �d e �Ze Gd�d��Z Gd�d�Z!e!�Z"y)�)�Dict�List�Callable�Any�Optional�Union�TypeVar�GenericN)�Enum)� dataclass)�wrapsc�*��eZdZd�fd� Z�fd�Z�xZS)� JsonFormatterc�(��t�|�|||�y�N)�super�__init__)�self�fmt�datefmt�style� __class__s ��F:\NetBrainMCP\tool_manager.pyrzJsonFormatter.__init__ s��� ����g�u�-�c�f��t�|�|�}|jdd��jd�S)Nzutf-8�replace)�errors)r�format�encode�decode)r�record� log_recordrs �rrzJsonFormatter.formats2����W�^�F�+� �� � ��� �;�B�B�7�K�Kr)NN�%)�__name__� __module__� __qualname__rr� __classcell__)rs@rrr s���.�L�Lrrz4%(asctime)s - %(name)s - %(levelname)s - %(message)s)�stream)�levelr�handlers� tool_managerc�(�eZdZdZdZdZdZdZdZdZ y) � ToolCategoryu工具分类枚举�general�network_device� configuration�topology� diagnostic�securityN) r$r%r&�__doc__�GENERAL�NETWORK_DEVICE� CONFIGURATION�TOPOLOGY� DIAGNOSTIC�SECURITY�rrr-r-"s#����G�%�N�#�M��H��J��Hrr-c�b�eZdZUdZeed<eed<eed<eed<eeeee ffed<eed<y) �ToolInfou工具信息数据类�name�func� description�category� parameters� return_typeN) r$r%r&r4�str�__annotations__rr-rrr;rrr=r=+s9��� �I� �N������S�$�s�C�x�.�(�)�)��rr=c ��eZdZdZd�Zddej fdeedeedede fd�Z d deede e ee ffd �Zdedeefd �Zdede fd �Zy) � ToolManageru0工具管理器,负责工具的注册和调用c�z�i|_tD�cic]}|g��c}|_tj d�ycc}w)Nu工具管理器初始化完成)�toolsr-� categories�logger�info)r�cats rrzToolManager.__init__8s6��*,�� �MY�9Z�\�c�#�r�'�\�9Z���� � �4�5��:[s� 8Nr>r@rA�returnc�8�����dtdtf����fd� }|S)u1 工具注册装饰器 Args: name: 工具名称,默认使用函数名 description: 工具描述,默认使用函数文档字符串 category: 工具分类,默认为通用类 Returns: 装饰器函数 r?rNc�|��� ��xs �j� � xs�jxsd}tj��}i}|jj �D]�\}}|j tjjk7r |j nt}|jtjjk(rdn |j}t|�||jtjjk(d�||<��|jtjjk7rt|j�nd}t� �|� ||��} | �j� <�j � j#� �t$j'd� �d� j(�d��t+���� fd��} | S) Nu 无描述)�type�default�requiredr)r>r?r@rArBrC�工具 'u' 已注册到类别 '�'c ���tjd���� �|i|��}|S#t$r*}tjd��dt |�����d}~wwxYw)Nu调用工具: rT�' 执行错误: )rKrL� Exception�errorrD)�args�kwargs�result�er?� tool_names ��r�wrapperz=ToolManager.register_tool.<locals>.decorator.<locals>.wrapperts`���� � �n�Y�K�8�9��!�4�2�6�2�F�!�M�� ���L�L�8�I�;�6F�s�1�v�h�!O�P����s� %� A�%A�A)r$r4�inspect� signaturerB�items� annotation� Parameter�emptyrrRrD�return_annotation� Signaturer=rIrJ�appendrKrL�valuer )r?�tool_description�sig�params� param_name�param� param_type� param_defaultrC� tool_infor_r^rAr@r>rs` @����r� decoratorz,ToolManager.register_tool.<locals>.decoratorLs�����-�� � �I� +�I�d�l�l�I�k� ��#�#�D�)�C��F�%(�^�^�%9�%9�%;�!� �E�16�1A�1A�W�EV�EV�E\�E\�1\�U�-�-�be� �(-� � ��9J�9J�9P�9P�(P��V[�Vc�Vc� �� �O�,� %� � ��1B�1B�1H�1H� H�&��z�"�&<�9<�8M�8M�QX�Qb�Qb�Qh�Qh�8h�#�c�3�3�4�ns�K�!���,�!�!�'� �I�%.�D�J�J�y� !� �O�O�H� %� ,� ,�Y� 7� �K�K�(�9�+�-C�H�N�N�CS�ST�U� V� �4�[� �� ��Nr)r)rr>r@rArrs```` r� register_toolzToolManager.register_tool=s$���2 �H�2 ��2 �2 �h�rc �l�g}|r|jj|g�}n|jj�}|D]s}|jj|�}|s�!|j |j |j |jj|j|jd���u|S)u� 列出已注册的工具 Args: category: 可选的工具分类过滤器 Returns: 工具信息列表 )r>r@rArBrC) rJ�getrI�keysrhr>r@rArirBrC)rrAr\� tool_namesr>�tools r� list_toolszToolManager.list_tools�s����� ����,�,�X�r�:�J������*�J��D��:�:�>�>�$�'�D��� � � �I�I�#'�#3�#3� $� � � 3� 3�"&�/�/�#'�#3�#3� ���� rc�8�|jj|�S)u� 获取工具信息 Args: name: 工具名称 Returns: 工具信息或None )rIru)rr>s r�get_toolzToolManager.get_tool�s���z�z�~�~�d�#�#rc ��|j|�}|std|�d���tjd|��� |j|i|��S#t $r*}tj d|�dt|�����d}~wwxYw)u 执行工具 Args: name: 工具名称 args: 位置参数 kwargs: 关键字参数 Returns: 工具执行结果 Raises: ValueError: 如果工具不存在 rTu ' 不存在u执行工具: rWN)r{� ValueErrorrKrLr?rXrYrD)rr>rZr[rxr]s r� execute_toolzToolManager.execute_tool�s����}�}�T�"����x��v�[�9�:� :�� � �n�T�F�+�,� ��4�9�9�d�-�f�-� -��� � �L�L�8�D�6�)9�#�a�&��B� C� �� �s�A� B�%A<�<Br)r$r%r&r4rr-r5rrDrrsrrrryr=r{r~r;rrrGrG5s���:�6� -1�37�/;�/C�/C�C�$�S�M�C�#+�C�=�C�!-�C�IQ�C�J�8�L�#9��T�$�s�TW�x�.�EY��< $�S� $�X�h�%7� $����#�rrG)#�typingrrrrrrr r r`�enumr � dataclassesr � functoolsr �logging�sys� Formatterr� basicConfig�INFO� StreamHandler�stdout�rootr*�handler� isinstance� setFormatter� getLoggerrKr-r=rGr+r;rr�<module>r�s���O�O�O���!��� �L�G�%�%�L����� �,�,� A�����S�Z�Z�0����|�|�$�$�G��'�7�0�0�1����]�+a�b�c�%� �� � �>� *���4�� ��� ��O�O�d�}� 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/NorthLaneMS/NetBrain_MCP'

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