sap_server.cpython-311.pyc•6.17 kB
�
�h �
� � d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZm Z d dl
mZmZm
Z
G d� d� � Zeded eeeef fd
�� � Z ededg�
� � Ze� � � ddede
eeef de
e d e fd�� � Zd� Zedk r ej e� � � � dS dS )� N)�asynccontextmanager)�FastMCP)�TextContent�ToolCallResult)�Any�Dict�Optionalc �p � e Zd Zddefd�Zdedeeef fd�Zdedeeef deeef fd �Zd
S )�
SAPService�config.json�config_filec �� � | � |� � | _ | j d d | _ | j d d | _ t j d�� � | _ d S )N�sap_api�base_url�clientg >@)�timeout)�load_config�configr r �httpx�AsyncClient�session)�selfr
s �
sap_server.py�__init__zSAPService.__init__ sV � ��&�&�{�3�3�����I�.�z�:��
��k�)�,�X�6����(��6�6�6����� � file_path�returnc �~ � t |d� � 5 }t j |� � cd d d � � S # 1 swxY w Y d S )N�r)�open�json�load)r r �fs r r zSAPService.load_config s~ � �
�)�S�
!�
!� �Q��9�Q�<�<� � � � � � � � � � � � ���� � � � � � s �2�6�6�
function_name�
parametersc � �B K � | j � d| j � �}||d�}| j d � d� � }| j d � d� � } |r(|r&| j � ||||f�� � � d{V ��}n"| j � ||�� � � d{V ��}|� � � |� � � S # t j $ r}d d
|j
j � �icY d}~S d}~wt $ r}d dt |� � � �icY d}~S d}~ww xY w)u+ 异步调用SAP RFC函数(新版实现)z?sap-client=)�FUNCTION� PARAMETERr �username�password)r! �authN)r! �erroru SAP API错误: u 网络请求失败: )r r r �getr �post�raise_for_statusr! r �HTTPStatusError�response�status_code� Exception�str) r r$ r% �url�payloadr) r* r1 �es r �call_sap_functionzSAPService.call_sap_function s� � � � ���9�9�D�K�9�9��,�:�F�F�� �;�y�)�-�-�j�9�9���;�y�)�-�-�j�9�9�� >��
F�H�
F�!%��!2�!2�3�W�H�V^�K_�!2�!`�!`�`�`�`�`�`�`���!%��!2�!2�3�W�!2�!E�!E�E�E�E�E�E�E���%�%�'�'�'��=�=�?�?�"���$� I� I� I��G�q�z�/E�G�G�H�H�H�H�H�H�H������ >� >� >��<�C��F�F�<�<�=�=�=�=�=�=�=����� >���s1 �A3C �D�C3�-D�3
D� D�D�DN)r ) �__name__�
__module__�__qualname__r4 r r r r r8 � r r r r
s� � � � � � �7� 7�C� 7� 7� 7� 7� �S� �T�#�s�(�^� � � � �>�S� >�d�3�PS�8�n� >�Y]�^a�cf�^f�Yg� >� >� >� >� >� >r r �mcpr c � K � t � � } d|iW V � |j � � � � d{V �� dS # |j � � � � d{V �� w xY w)u- 管理SAP连接池和资源初始化[3](@ref)�sap_serviceN)r r �aclose)r= r? s r �lifespanrA , s� � � � � �,�,�K�+��k�*�*�*�*�*��!�(�(�*�*�*�*�*�*�*�*�*�*�*��k�!�(�(�*�*�*�*�*�*�*�*�*�*���s �: �!AzSAP-MCP-Serverr )�namerA �dependenciesr$ r% �ctxc � �� K � |�i }|r
|j d n
t � � }|� | |� � � d{V ��}t t dt j |d�� � �� � g�� � S )u�
Call SAP functions via RESTful API
Parameters:
function_name (str): SAP函数名称 (e.g. BAPI_PO_CREATE)
parameters (dict): 函数参数字典 (默认: {})
Nr? �text� )�indent)�typerF )�content)�lifespan_contextr r8 r r r! �dumps)r$ r% rD r? �results r r8 r8 = s� � � � � � ��
� :=�N�#�&�}�5�5�*�,�,�K��0�0��
�K�K�
K�
K�
K�
K�
K�
K�F� ��&�t�z�&��/K�/K�/K�L�L�L�M�� � � r c � � K � t � d� � dt fd�� � } t � d�� � � d {V �� d S )Nzsap://system-infor c �J � t j t j dddgd�� � S )u 获取SAP系统基本信息z1.0zBAPI*zRFC_*)�system�version�supported_functions)r! rL r= rB r<