Skip to main content
Glama

NetBrain MCP

by NorthLaneMS
template_system.cpython-312.pyc26.4 kB
� �s&hP���dZddlmZmZmZmZmZmZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlmZmZmZej$ej&dej(e j*��g��ej,d�ZeGd �d ��ZeGd �d e��ZeGd �de��ZeGd�de��ZeGd�d��ZGd�d�Ze�Z dGdedeeefdeeefdeeeeffd�Z ejCdd��dHdedede"defd ��Z#ejC�d!ed"edeefd#��Z$ejCd$d%��dId&eeefd'ed(edeefd)��Z%ejCd*d+��dGd&eeefd,ed-edeefd.��Z&ejCd/d0��dGd&eeefd1ed2edefd3��Z'ejCd4d5�� dJd6ed7e(d8ed9eed:ed;edefd<��Z)ejCd=d>��d?eeeefd@eeeefdeefdA��Z*ejCdBdC�� dId&eeefd,edDedEedef dF��Z+y)Ku� NetBrain MCP 提示模板系统 此模块提供了符合MCP协议的提示模板系统,支持: 1. 模板注册和管理 2. 带有占位符的模板渲染 3. 支持字符串和结构化消息格式 4. 与资源系统集成 �)�Dict�List�Any�Optional�Union�CallableN)� dataclass�asdict�fieldz4%(asctime)s - %(name)s - %(levelname)s - %(message)s)�stream)�level�format�handlers� mcp_templatesc�&�eZdZUdZeed<eed<y)�Messageu基础消息类�role�contentN)�__name__� __module__� __qualname__�__doc__�str�__annotations__���!F:\NetBrainMCP\template_system.pyrrs��� �I� �Lrrc�(��eZdZdZdef�fd� Z�xZS)� UserMessageu 用户消息rc�(��t�|�d|��y)N�user�rr��super�__init__��selfr� __class__s �rr%zUserMessage.__init__)s��� ���f�g��6r�rrrrrr%� __classcell__�r(s@rrr&s����7��7�7rrc�(��eZdZdZdef�fd� Z�xZS)�AssistantMessageu 助手消息rc�(��t�|�d|��y)N� assistantr"r#r&s �rr%zAssistantMessage.__init__0s��� ���k�7��;rr)r+s@rr-r--s����<��<�<rr-c�(��eZdZdZdef�fd� Z�xZS)� SystemMessageu 系统消息rc�(��t�|�d|��y)N�systemr"r#r&s �rr%zSystemMessage.__init__7s��� ���h���8rr)r+s@rr1r14s����9��9�9rr1c�\�eZdZUdZeed<eed<eed<ee��Z e e ee fed<y)�PromptTemplateu 提示模板�name� description�fn)�default_factory� argumentsN) rrrrrrrr �listr:rrrrrrr5r5;s1��� �I����L�&+�D�&A�I�t�D��c��N�#�Arr5c ��eZdZdZd�Zddedefd�Zdedeefd�Z dded e ee fdee ee effd �Zde e ee ffd �Zd �Zd �Zy)�TemplateManageru高级提示模板管理器c���i|_tjjtj�d�|_tjj |j �sB tj|j �tjd|j ���tjd�y#t$r+}tjdt|����Yd}~�Ed}~wwxYw)N� templatesu已创建模板目录: u无法创建模板目录: u模板管理器初始化完成) r?�os�path�join�getcwd� templates_dir�exists�makedirs�logger�info� Exception�warningr)r'�es rr%zTemplateManager.__init__Gs������ �W�W�\�\�"�)�)�+�{�C����w�w�~�~�d�0�0�1� F�� � �D�.�.�/�� � �5�d�6H�6H�5I�J�K� � � �4�5��� F����!;�C��F�8�D�E�E�� F�s�)AC� C4� !C/�/C4Nr6r7c��������fd�}|S)u� 注册模板装饰器 Args: name: 模板名称(可选,默认使用函数名) description: 模板描述(可选) Returns: 装饰器函数 c���� xs |j}� xs|jxsdj�}|�jvrtj d|�d��ddl}|j|�}g}|jj�D]�\}}|dvr� d}|jrGd|�d�} tj| |j�} | r| jd�j�}|j|jjk(} |j!||| d ����t#||||� ��j|<tj%d |���|S) N�u模板已存在: u,将被覆盖r)r'�clsz:param z:\s*(.*?)(?:\n|$)�)r6r7�required)r6r7r8r:u已注册模板: )rr�stripr?rGrJ�inspect� signature� parameters�items�re�search�group�default� Parameter�empty�appendr5rH)�func� template_name�template_descriptionrS�sig�args� param_name�param� param_desc�pattern�matchrQr7r6r's ���r� decoratorz4TemplateManager.register_template.<locals>.decorator`sO���!�1�D�M�M�M�$/�#N�4�<�<�3E�2�2L�2L�2N� �����.����!2�=�/��Q�R� ��#�#�D�)�C��D�%(�^�^�%9�%9�%;�!� �E���0��� ��<�<�!(�� �4E�F�G��I�I�g�t�|�|�<�E��%*�[�[��^�%9�%9�%;� �!�=�=�G�,=�,=�,C�,C�C��� � �&�#-� (���!&<�,-;�"�0��� -�D�N�N�=� )� �K�K�+�M�?�;� <��Krr)r'r6r7rhs``` r�register_templatez!TemplateManager.register_templateUs���/ �b�r�returnc�8�|jj|�S)u� 获取模板 Args: name: 模板名称 Returns: 模板对象或None )r?�get)r'r6s r� get_templatezTemplateManager.get_template�s���~�~�!�!�$�'�'rr:c �4�|xsi}|j|�}|stjd|���y |jdi|��}tj d|���|S#t $r.}tj d|�dt|����Yd}~yd}~wwxYw)u� 渲染模板 Args: name: 模板名称 arguments: 模板参数 Returns: 渲染后的模板内容(字符串或消息列表) u模板不存在: Nu已渲染模板: u渲染模板失败: � , 错误: r)rmrGrJr8rHrI�errorr)r'r6r:�template�resultrKs r�render_templatezTemplateManager.render_template�s����O�� ��$�$�T�*��� �N�N�.�t�f�5� 6�� � �X�[�[�-�9�-�F� �K�K�+�D�6�2� 3��M��� � �L�L�/��v�Z��A��x�H� I��� �s�+A � B�)$B�Bc��|jj�D�cgc]&}|j|j|jd���(c}Scc}w)u] 列出所有可用模板 Returns: 模板列表 �r6r7r:)r?�valuesr6r7r:)r'rqs r�list_templateszTemplateManager.list_templates�sU��!�N�N�1�1�3�  � 4�� !� � �'�3�3�%�/�/� � 4�  � �� s�+A c�� |jj�D]�\}}|j|j|jd�}t j j|j|�d��}t|dd��5}tj||dd��d d d ���tjd |j���y #1swY��xYw#t$r+}tjd t!|����Yd }~y d }~wwxYw) u保存模板到文件ru�.json�w�utf-8��encodingF�)� ensure_ascii�indentNu已保存所有模板到: u保存模板失败: )r?rVr6r7r:r@rArBrD�open�json�dumprGrHrIrpr)r'r6rq� template_data� file_path�frKs r�save_templateszTemplateManager.save_templates�s��� :�"&�.�.�"6�"6�"8���h�%�M�M�#+�#7�#7�!)�!3�!3�!� � �G�G�L�L��);�);��v�U�^�L� ��)�S�7�;�q��I�I�m�Q�U�1�M�<�;�#9� �K�K�4�T�5G�5G�4H�I� J�<�;��� :� �L�L�/��A��x�8� 9� 9�� :�s0�A?C�C�,C�C � C� D�!D�Dc��tjj|j�s#tj d|j���y tj |j�D]�}|jd�s�tjj|j|�}t|dd��5}tj|�}ddd�tjdd�����tjd �y#1swY�<xYw#t$r+}tjd t|����Yd}~yd}~wwxYw) u从文件加载模板u模板目录不存在: Nry�rr{r|u已加载模板元数据: r6u已加载所有模板u加载模板失败: )r@rArErDrGrJ�listdir�endswithrBr�r��loadrHrIrpr)r'�filenamer�r�r�rKs r�load_templateszTemplateManager.load_templates�s����w�w�~�~�d�0�0�1� �N�N�4�T�5G�5G�4H�I� J� � :��J�J�t�'9�'9�:���$�$�W�-� "��� � �T�-?�-?�� J�I��i��w�?�1�(,� � �!� � �@��K�K�"<�]�6�=R�<S� T�U�;� �K�K�/� 1� @�?��� :� �L�L�/��A��x�8� 9� 9�� :�s6�3D�8D�:D �:D� D �D� E � !E�E �NN�N)rrrrr%rrirr5rmrrrrrrsrwr�r�rrrr=r=Ds���%� 6�<�c�<�s�<�| (�� (��.�)A� (��C��D��c��N��h�W\�]`�bf�gn�bo�]o�Wp�Nq��6 ��T�#�s�(�^� 4� � :�(:rr=r_�context� resource_urisrjc ��K�|� ddlm}|j �}|j �D]$\}} |j|��d{���}|||<�&tj||�S#t$rtj d�YywxYw7�E#t$r6}tj d|�dt|����d|��||<Yd}~��d}~wwxYw�w)uA 渲染包含资源引用的模板 Args: template_name: 模板名称 context: 渲染上下文 resource_uris: 资源URI映射,格式为 {context_key: resource_uri} resource_manager: 资源管理器实例(可选) Returns: 渲染后的模板内容 Nr)�resource_manageru无法导入资源管理器u获取资源失败: rou错误: 无法加载资源 ) � mcp_resourcesr�� ImportErrorrGrp�copyrV� get_resourcerIr�template_managerrs) r_r�r�r��extended_context� context_key�uri�resource_contentrKs r�render_template_with_resourcesr��s�����$�� � 6� �|�|�~��)�/�/�1�� �S� P�%5�%B�%B�3�%G�G� �,<� �[� )� 2� � +� +�M�;K� L�L��#� � �L�L�6� 7�� �� H��� P� �L�L�/��u�J�s�1�v�h�G� H�.I�#��,O� �[� )�� P�sb�C�A)�&C�B�B � B�C�)B �C� B � C� B� C�,C �C� C�C�network_diagnosisu网络诊断提示模板)r6r7� device_name�issue_description�verbosec�&�d|�d|�d�}|r|dz }|S)u� 创建网络诊断提示 :param device_name: 设备名称 :param issue_description: 问题描述 :param verbose: 是否生成详细输出 u 请针对设备 u7 的以下问题进行诊断: 问题描述: u? 请提供可能的根本原因和解决方案。 u� 请详细说明诊断思路和解决步骤,包括: 1. 初步分析和可能原因 2. 建议的排查命令 3. 可能的解决方案,按优先级排序 4. 预防此类问题的最佳实践 r)r�r�r�� base_prompts r�network_diagnosis_promptr�$s?��� �M�"�$�%�&��K��� � � � �r� device_type�purposec�r�td|�d|�d��}td|�d|�d��}td|�d��}|||gS) u� 创建设备配置会话 :param device_type: 设备类型(路由器/交换机/防火墙) :param purpose: 配置目的(新设备/更新/安全强化) u6你是一名网络工程师,正在帮助配置一台u ,目的是u。u 我需要为u 配置一台u$,请提供配置步骤和命令。u我很乐意帮助您配置uV。让我们开始: 首先,让我了解一下您的网络环境和具体需求...)r1rr-)r�r��system_message� user_message�assistant_messages r�device_configurationr�Dsr��#� @�� �\�Za�Yb�be�f��N�� �w�i�|�K�=�8\�]��L�)� %�k�]�3J� K��� �L�*;� <�<r�device_diagnosisu网络设备诊断模板� device_info�interfaces_info�logsc���d|jdd��d|jdd��d�}d|jd d ��d |jd d ��d |jdd ��d|jdd ��d|jdd ��d|jdd ��d|jdd ��d�}d|�d�}|r |d|�d�z }|r |d|�d�z }|dz }t|�t|�gS)u� 网络设备诊断提示模板,用于分析设备状态和接口信息 :param device_info: 设备基本信息对象 :param interfaces_info: 接口详细信息 :param logs: 设备日志信息 u3你是一位专业的网络工程师,负责诊断�vendoru 未知厂商u的r�u 网络设备u�。 请根据提供的设备信息、接口状态和日志,进行专业分析并提供诊断报告。 诊断需要包括: 1. 设备基本状态总结 2. 接口状态分析 3. 潜在问题识别 4. 具体解决方案建议 5. 后续优化建议u 设备基本信息: - 名称: r6�N/A� - IP地址: � ip_address� - 型号: �model� - 操作系统: � os_versionu - 状态: �statusu - 位置: �locationu - 描述: r7� u3请帮我诊断以下网络设备的状态: � u 接口信息: u 设备日志: uF 请提供详细的诊断报告,包括问题分析和解决方案。)rlr1r)r�r�r�� system_prompt�device_details� user_prompts r�device_diagnosis_templater�]s���L�K�O�O�\d�ft�Lu�Kv�vy�{F�{J�{J�KX�Zh�{i�zj�j��M� � �?�?�6�5� )� *�+ � �_�_�\�5� 1� 2�3 � �?�?�7�E� *� +�,�����u�5�6�7 � �?�?�8�U� +� ,�- � �?�?�:�u� -� .�/ � �?�?�=�%� 0� 1�2� �N������K� ������� � �  ������� � � �I�I�K� �m�$��K� � �r� config_reviewu网络设备配置审查模板�config_content� focus_areac ��|jdd�j�}d|vrd}nd|vrd}nd|vrd}n d |vrd }nd }d |�d �}d|jdd��d|jdd��d|jdd��d|jdd��d� }d|�d|�d�}|r |d|�d�z }|dz }t|�t|�gS)u 网络配置审查提示模板,用于审查设备配置并提供改进建议 :param device_info: 设备基本信息对象 :param config_content: 设备配置内容 :param focus_area: 审查重点领域(安全/性能/路由/其他) r�rN�ciscou"思科IOS/IOS-XE/NX-OS配置专家�huaweiu华为VRP配置专家�juniperuJuniper JUNOS配置专家�h3cuH3C Comware配置专家u!多厂商网络设备配置专家u 你是一名u!,拥有多年网络配置审查经验。 请对提供的设备配置进行全面审查并提供专业的改进建议。 审查需要包括: 1. 总体配置评估 2. 配置最佳实践符合度 3. 安全风险识别 4. 潜在性能优化点 5. 具体改进建议(包括命令示例)u 设备信息: - 名称: r6r�r�r�r�r�� - 厂商: r�u-请审查以下网络设备的配置: u 配置内容: ``` � ``` u 特别关注以下方面: uR 请提供详细的配置审查报告,包括问题分析和具体改进建议。)rl�lowerr1r)r�r�r�r��vendor_expertiser�r�r�s r�config_review_templater��sI���_�_�X�r� *� 0� 0� 2�F��&��?�� �V� �2�� �f� �6�� �&��4��>��$�%5�$6�7.�1�M� � �?�?�6�5� )� *�+ � �?�?�7�E� *� +�,�����u�5�6�7 � �?�?�8�U� +� ,�-� �N�������� �K����%�,�'�� � ��U�U�K� �m�$��K� � �r�route_analysisu网络路由分析模板� routes_output�target_networkc ���d|jdd��d|jdd��d|jdd��d|jd d��d |jd d��d |�d � }|r |d|�d�z }|S)u� 路由分析提示模板,用于分析路由表并提供优化建议 :param device_info: 设备基本信息对象 :param routes_output: 路由表输出 :param target_network: 目标网络(可选) u1 # 路由分析任务 ## 设备信息 - 名称: r6r�r�r�u - 设备类型: r�r�r�r�r�u ## 路由表 ``` u� ``` 请作为网络工程师分析上述路由表,包括: 1. 默认路由检查 2. 路由类型分布(静态/动态)统计 3. 路由协议使用情况 4. 潜在的路由问题识别 5. 路由优化建议 u* ## 特定网络分析 请特别分析到 uM 的路由路径,包括下一跳、出接口、管理距离和度量值。 �rl)r�r�r��prompts r�route_analysis_templater��s��� � �?�?�6�5� )� *�+ � �_�_�\�5� 1� 2�3������6�7�8 � �?�?�8�U� +� ,�-�����u�5�6�7��� ��F�.���"�#�$�� �� �Mr� vlan_configuVLAN配置生成模板� device_vendor�vlan_id� vlan_name� interfacesr�� vlan_purposec ���|j�}d|�d|�d|�d|�d|�d|�d� }|r |d|�d �z }|r|d |�d �z }|D] }|d |�d �z }� |r |d |�d �z }|d|�d�z }|S)uS VLAN配置生成提示模板 :param device_vendor: 设备厂商(cisco/huawei/h3c/juniper等) :param vlan_id: VLAN ID :param vlan_name: VLAN名称 :param interfaces: 要添加到VLAN的接口列表 :param ip_address: VLAN接口IP地址(可选) :param vlan_purpose: VLAN用途描述(可选) z # z (VLAN u) 配置生成 请为u设备生成配置VLAN u1的完整命令序列,包括: 1. 创建VLAN u 2. 设置VLAN名称为"z" u3. VLAN用途:r�u ## 需要添加到VLAN u 的接口: z- u ## 配置VLAN接口IP地址:u 请提供适用于u�设备的完整配置命令,包括进入配置模式和退出保存的完整步骤。如果有多种方式,请提供最佳实践方案。 )r�) r�r�r�r�r�r�r�r�� interfaces r�vlan_config_templater�s���.� � � "�F�� �+�W�W�I���o�,�W�I�6��i��!�{�#� �F���$�\�N�"�5�5����-�g�Y�n�E�E��#�I� ��9�+�R�(� (�F�$���4�Z�L��C�C�� �� �/�"���F� �Mr�network_topologyu网络拓扑分析模板�devices� connectionsc���d}t|d�D]Y\}}||�d|jdd��d|jdd��d |jd d��d |jd d��d � z }�[d}t|d�D]a\}}|jdd�}|jdd�}|jdd�} |jdd�} ||�d|�d| �d|�d| �d� z }�cd} d|�d|�d�} t| �t| �gS)us 网络拓扑分析提示模板 :param devices: 设备列表 :param connections: 连接列表 u设备清单: rPz. r6�Unknownz (r�r�z) - r�z - r�r�u连接清单: � source_device� target_device�source_interface�target_interfacez) <--> z) u[你是一名网络拓扑专家,擅长分析网络设计和提供优化建议。 请分析提供的网络拓扑信息,包括设备和连接,然后: 1. 识别网络架构模式(例如核心-汇聚-接入、叶脊等) 2. 评估当前拓扑的优缺点 3. 识别潜在的单点故障 4. 提供拓扑优化建议 5. 讨论可扩展性考虑u5请分析以下网络拓扑并提供专业评估: r�uY 请提供详细的拓扑分析报告,包括架构评估、风险点和优化建议。)� enumeraterlr1r) r�r�� devices_text�i�device�connections_text�conn�source�target�src_if�tgt_ifr�r�s r�network_topology_templater�<s���%�L��w��*� ��6��1�#�R�� � �6�9� =�>�b����L�Z_�A`�@a�ae�fl�fp�fp�q~�AF�gG�fH�HK�LR�LV�LV�W_�af�Lg�Kh�hj�k� k� �+�)���[�!�,���4����/�9�5�����/�9�5�����,�e�4�����,�e�4���q�c��F�8�2�f�X�W�V�H�B�v�h�c�R�R�� -��M�� �����X� [�K� �m�$��K� � �r�network_securityu网络安全评估模板� acl_content�security_focusc ���d|jdd��d|jdd��d|jdd��d|jd d��d |�d � }|r |d |�d �z }|r |d |�d�z }|dz }|S)u� 网络安全评估提示模板 :param device_info: 设备基本信息 :param config_content: 设备配置内容 :param acl_content: 访问控制列表内容(可选) :param security_focus: 安全评估重点(可选) u1 # 网络安全评估 ## 设备信息 - 名称: r6r�u - 类型: r�r�r�r�r�u ## 设备配置 ``` r�u ## 访问控制列表 ``` u ## 评估重点 r�uy 请作为网络安全专家,评估上述配置的安全性,包括: 1. 安全风险识别和严重级别评估 2. 是否符合网络安全最佳实践 3. 身份验证和访问控制评估 4. 加密和安全协议使用情况 5. 详细的安全强化建议(带具体命令) 6. 安全监控和审计建议 请提供全面的安全评估报告和具体改进措施。 r�)r�r�r�r�r�s r�network_security_templater�ks���$ � �?�?�6�5� )� *�+ � �?�?�=�%� 0� 1�2 � �?�?�8�U� +� ,�-�����u�5�6�7���� �F���� � ��� ��������� ��  � � �F� �Mrr�)Fr�)NNN),r�typingrrrrrr�logging�sysr�r@�datetimerW� dataclassesr r r � basicConfig�INFO� StreamHandler�stdout� getLoggerrGrrr-r1r5r=r�rr�ri�boolr�r�r�r�r��intr�r�r�rrr�<module>rs(���>�=�� � � �� �0�0����� �,�,� A�����S�Z�Z�0��� �� � �?� +�� ��� ��  �7�'�7� �7�  �<�w�<� �<�  �9�G�9� �9�  �B�B� �B�m:�m:�b#�$��� 'M��'M� �#�s�(�^�'M���S��>�'M�  �3��W� � �� 'M�V�#�#� �*�$���#��#��PT��ad�� ��8�#�#�%�=�c�=�C�=�D��M�=�&�=�0�#�#� �*�$��5�4��S��>�5�C�5�^a�5�mq�ry�mz�5� �5�p�#�#� �0�$��<��S�#�X��<��<�Y\�<�hl�mt�hu�<� �<�~�#�#� �*�$��%��c�3�h��%��%�]`�%�lo�%� �%�P�#�#� �(�$��!��� -��-� �-��-��S� � -� � -� � -� �-� �-�`�#�#� �*�$��(�t�D��c��N�';�(�$�t�TW�Y\�T\�~�J^�(�cg�ho�cp�(� �(�V�#�#� �*�$���� 8��c�3�h��8��8��8�� 8�  � 8� �8r

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