�
��h�L �
�� � d dl Z d dlmZmZmZmZ d dlZd dlmZ de fd�Z
e
� Z ed� Zej � de dee ef fd�� Zej � d!d e d
ee dee ef fd�� Zej � de dee ef fd
�� Zej � d
e dee ef fd�� Zej � de de dee ef fd�� Zej � de de dee ef fd�� Zej � de de dee ef fd�� Zej � de de d
e de dee ef f
d�� Zej � d"de de de dee ef fd�� Zej � d#de d
e de dee ef fd�� Zej � d$de de de dee ef fd�� Zej � de dee ef fd�� Zed k( rej7 � yy)%� N)�Any�Dict�List�Optional)�FastMCP�returnc �J � t j d� } | st d� �| S )z4Get the Amap Maps API key from environment variables�AMAP_MAPS_API_KEYz2AMAP_MAPS_API_KEY environment variable is required)�os�getenv�
ValueError)�api_keys �?/Users/wyang14/github/amap-mcp-server/amap_mcp_server/server.py�get_api_keyr s% � ��i�i�+�,�G���M�N�N��N� z amap-maps�locationc � � t j dt | d��� }|j � |j � }|d dk7 r)dd|j d� xs |j d � � �iS |d
d d |d
d d
|d
d d d�S # t j
j $ r}ddt |� � �icY d}~S d}~ww xY w)u? 将一个高德经纬度坐标转换为行政区划地址信息z)https://restapi.amap.com/v3/geocode/regeo)�keyr ��params�status�1�errorzRGeocoding failed: �info�infocode� regeocode�addressComponent�province�city�district)r r r �Request failed: N��requests�getr
�raise_for_status�json�
exceptions�RequestException�str)r �response�data�es r �maps_regeocoder- s� � �6��<�<�7�(�$��
�� �!�!�#��}�}�����>�S� ��2�4�8�8�F�3C�3[�t�x�x�PZ�G[�2\�]�^�^� �[�)�*<�=�j�I���%�&8�9�&�A��[�)�*<�=�j�I�
�
��
���/�/� 6��+�C��F�8�4�5�5��6�s$ �A.B �1 B �C �/C�>C �C �addressr c �
� t | d�}|r||d<