server.cpython-311.pyc•5.04 kB
�
    ���gF  �                   �  � d dl Z d dlZd dlZd dlmZ d dlmZmZ d dlZ	dZ
e
�                    �   �         ZdZ
 ej        ej        dej        ��  �          ej        e�  �        Z ee
�  �        Zdd	lmZ dd
lmZ dd	lmZ dd
lmZ ddgeed
�gZd� Zd� Z e�                     �   �         e�  �          e�!                    �   �         e�  �         d� Z"edk    r3e�#                    de
� d��  �          e j$         e"�   �         �  �         dS dS )�    N)�InitializationOptions)�NotificationOptions�Server�	southAsiaz1.0z)%(asctime)s - %(levelname)s - %(message)s)�level�format�stream�   )�handle_list_tools)�handle_call_tool�mcp_southAsia_file_editor�mcp_file_editor)�prefixes�
list_tools�	call_toolc               �   �t   K  � g } t           D ]+}| �                     |d         �   �         � d{V ���  �         �,| S )u4   
    合併所有工具處理器的工具列表
    r   N)�HANDLERS�extend)�tools�handlers     �5F:\Tool-common\southAsia_Tool\src\southasia\server.py�combined_list_toolsr   /   sV   � � � � 
�E�� 4� 4��
���0�7�<�0�2�2�2�2�2�2�2�2�3�3�3�3��L�    c           	   �   �T  K  � t           D ]_}|d         D ]T}| �                    |�  �        r=t          �                    d| � d|� d��  �          |d         | |�  �        � d{V ��c c S �U�`t          �                    d| � d��  �         t          d	         d         | |�  �        � d{V ��S )
u4   
    根據工具名稱調用對應的處理器
    r   u   找到工具 'u   ' 的匹配前綴 '�'r   Nu   未找到工具 'u)   ' 的前綴匹配,使用默認處理器r   )r   �
startswith�logger�info�warning)�name�	argumentsr   �prefixs       r   �combined_call_toolr#   8   s�   � � � �
 � C� C���j�)� 	C� 	C�F����v�&�&� 
C����O�T�O�O�f�O�O�O�P�P�P�1�W�[�1�$�	�B�B�B�B�B�B�B�B�B�B�B�B�B�
C�	C� �N�N�V�t�V�V�V�W�W�W��!��[�)�$�	�:�:�:�:�:�:�:�:�:r   c            
   �   ��  K  � t           �                    dt          � d��  �         t           �                    d�  �         	 t          j        j        �                    �   �         4 �d{V ��\  } }t           �                    d�  �         t          �                    | |t          t          t          t          �
                    t          �   �         i ��  �        ��  �        �  �        � d{V �� ddd�  �        �d{V �� dS # 1 �d{V ��swxY w Y   dS # t          $ rI}t           �
                    dt          |�  �        � ��  �         t          j        d	�  �         Y d}~dS d}~ww xY w)
uU   
    主程式入口點。
    使用標準輸入/輸出串流運行伺服器。
    u
   正在啟動 u    MCP 工具...u   初始化服務...Nu*   服務器啟動成功!等待指令中...)�notification_options�experimental_capabilities)�server_name�server_version�capabilitiesu   服務器啟動失敗:r
   )r   r   �
MCP_TOOL_NAME�mcp�server�stdio�stdio_server�runr   �MCP_TOOL_VERSION�get_capabilitiesr   �	Exception�error�str�sys�exit)�read_stream�write_stream�es      r   �mainr:   M   s�  � � � �
 �K�K�=�
�=�=�=�>�>�>�
�K�K�$�%�%�%���:�#�0�0�2�2� 
	� 
	� 
	� 
	� 
	� 
	� 
	�6Q�{�L��K�K�D�E�E�E��*�*���%� -�#3�!'�!8�!8�-@�-B�-B�24� "9� "� "�� � �� � 
� 
� 
� 
� 
� 
� 
�
	� 
	� 
	� 
	� 
	� 
	� 
	� 
	� 
	� 
	� 
	� 
	� 
	� 
	� 
	� 
	� 
	� 
	� 
	� 
	� 
	� 
	� 
	� 
	���� 
	� 
	� 
	� 
	� 
	� 
	�� � � � ����8��A���8�8�9�9�9��������������������s=   �)D �*B C=�*D �=
D�D �
D�D �
E#�>E�E#�__main__u
   歡迎使用 u    MCP 工具)%�asyncior5   �logging�mcp.server.modelsr   �
mcp.serverr   r   �mcp.server.stdior+   r*   �lower�MCP_TOOL_NAME_LOWERCASEr0   �basicConfig�INFO�stderr�	getLogger�__name__r   r,   �handlers.hello_worldr   �hello_world_list_toolsr   �hello_world_call_tool�handlers.file_editor�file_editor_list_tools�file_editor_call_toolr   r   r#   r   r   r:   r   r/   � r   r   �<module>rO      s�  �� ���� 
�
�
�
� ���� 3� 3� 3� 3� 3� 3� 2� 2� 2� 2� 2� 2� 2� 2� � � � � �
�'�-�-�/�/� �� � �� �
�,�6��:�� � � � 
��	�8�	$�	$�� 
��
�	�	�� N� M� M� M� M� M� K� K� K� K� K� K� M� M� M� M� M� M� K� K� K� K� K� K� 1�2C�D�,�*�� �
��� � �
;� 
;� 
;�  �� � � � �'� (� (� (� �� � � � �%� &� &� &�� � �8 �z�� �
�K�K�:�
�:�:�:�;�;�;��G�K����������� r