Skip to main content
Glama
mcp_server.cpython-311.pyc7.43 kB
� �d�h���T�ddlZddlZddlmZmZddlmZddlmZddlm Z ddl m Z ddl m Z ddlmZeje��Ze ��Ze ��Ze ��Ze��ZGd �d ��Ze��Zejd d g� ��ed�����ZdS)�N)�request�jsonify)�app)�require_api_key)� DexOperations)�LendingOperations)�YieldFarmingOperations)�PortfolioManagerc�N�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z d�Z d �Z d �Z d �Z d S) � MCPServerz1Model Context Protocol Server for DeFi operationsc �v�|j|j|j|j|j|j|j|jd�|_dS)N)z defi.swapz defi.lendz defi.farmzdefi.portfoliozdefi.positionszdefi.transaction_statuszdefi.protocolsz defi.chains) � handle_swap� handle_lend� handle_farm�handle_portfolio�handle_positions�handle_transaction_status�handle_protocols� handle_chains�methods)�selfs �$/home/runner/workspace/mcp_server.py�__init__zMCPServer.__init__sD���)��)��)�"�3�"�3�'+�'E�"�3��-�  �  �� � � �c�� |�d��}|�di��}|�d��}||jvr dddd�|d�S|j||��}d||d �S#t$r^}t�d t |������dd d t |��d �|�d��d�cYd}~Sd}~wwxYw)zHandle JSON-RPC 2.0 request�method�params�id�2.0i����zMethod not found��code�message��jsonrpc�errorr)r$�resultrzMCP request failed: 饀���Internal error)r!r"�dataN)�getr� Exception�loggerr%�str)rr)rr� request_idr&�es r�handle_requestzMCPServer.handle_request"s5��! ��X�X�h�'�'�F��X�X�h��+�+�F����$���J��T�\�)�)�$� &�#5���%� ���*�T�\�&�)�&�1�1�F�!� � ��� �� � � � � �L�L�8��A���8�8� 9� 9� 9� �"�/���F�F��� �h�h�t�n�n��� � � � � � ����� ���s%�AA0�A0�0 C�:AC� C�Cc ���t�|d|d|d|d|d|�dd��|�dd ��� ��S) zHandle DEX swap operation� blockchain�wallet_address�token_in� token_out� amount_in�slippageg�?�protocol�uniswap)r2r3r4r5r6r7r8)�dex_ops� execute_swapr*�rrs rrzMCPServer.handle_swapGsj���#�#��l�+�!�"2�3��J�'��[�)��[�)��Z�Z� �C�0�0��Z�Z� �I�6�6�$� � � rc�|�t�|d|d|d|d|d���S)zHandle lending operationr2r8r3�token�amount)r2r8r3r>r?)� lending_ops� lend_assetr<s rrzMCPServer.handle_lendSsG���%�%��l�+��J�'�!�"2�3���/��(�#� &� � � rc ��t�|d|d|d|d|d|d|d|d� ��S) zHandle yield farming operationr2r8r3�pool_id�token_a�token_b�amount_a�amount_b)r2r8r3rCrDrErFrG)� yield_ops� add_liquidityr<s rrzMCPServer.handle_farm]s`���&�&��l�+��J�'�!�"2�3��9�%��9�%��9�%��J�'��J�'�'�  �  � rc�P�t�|d|d��S)zHandle portfolio queryr3r2)� portfolio_mgr� get_portfolior<s rrzMCPServer.handle_portfolioj�+���*�*� �#� $� �<� � � � rc�P�t�|d|d��S)zHandle positions queryr3r2)rK� get_positionsr<s rrzMCPServer.handle_positionsqrMrc��|ddddd�S)zHandle transaction status query�tx_hash� confirmediNa��21000)rQ�status� block_number�gas_used�r<s rrz#MCPServer.handle_transaction_statusxs$���i�(�!�$��  � � rc��dgd�ddgddgd�iS)z Handle supported protocols query� protocols)r9�compound�aave� quickswapr[�raydium�orca��ethereum�polygon�solanarWr<s rrzMCPServer.handle_protocols�s4�� �;�;�;�'��0�$�f�-��� � rc��gd�dd�S)zHandle supported chains queryr_r`)�chains� default_chainrWr<s rrzMCPServer.handle_chains�s��8�7�7�'� � � rN)�__name__� __module__� __qualname__�__doc__rr0rrrrrrrrrWrrr r s�������;�;�  �  �  �#�#�#�J  �  �  � � � �  �  �  � � � � � � � � � � � � � � � � � rr z/mcp�POST)rc�� tj��}|stdddd�dd���dfSt|t��rEg}|D]1}t �|��}|�|���2t|��St �|��}t|��S#t$rL}t� dt|������tdd d d�dd���d fcYd}~Sd}~wwxYw) zMCP JSON-RPC endpointriD���z Parse errorr Nr#i�zMCP endpoint error: r'r(i�) r�get_jsonr� isinstance�list� mcp_serverr0�appendr+r,r%r-)r)�results�reqr&r/s r� mcp_endpointrs�so��!���!�!��� �� �"�,���� ������ � �d�D� !� !� #��G�� '� '��#�2�2�3�7�7�����v�&�&�&�&��7�#�#� #��.�.�t�4�4�F��6�?�?� "�� � � � �� � �4�C��F�F�4�4�5�5�5����+����  � � � � �� � � � � � ����� ���s*�,B2�AB2� (B2�2 D�<AD�=D�D)�json�logging�flaskrrr�routesr�defi_tools.dex_operationsr�defi_tools.lendingr�defi_tools.yield_farmingr �defi_tools.portfolior � getLoggerrfr,r:r@rHrKr ro�routersrWrr�<module>r~sc�� � � � �����"�"�"�"�"�"�"�"�������"�"�"�"�"�"�3�3�3�3�3�3�0�0�0�0�0�0�;�;�;�;�;�;�1�1�1�1�1�1� �� �8� $� $�� �-�/�/����!�!� � "� "� $� $� � � �"�"� �} �} �} �} �} �} �} �} �@�Y�[�[� � ���6�F�8�$�$�$��#�#���%�$�#�#�#r

Latest Blog Posts

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/JMadhan1/OneDefi-MCP'

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