Skip to main content
Glama
Mulan Permissive Software License, Version 2
14
config_ui.cpython-310.pyc8.57 kB
o �c�gT*�@s�dZddlZddlZddlZddlmZmZmZmZddl m Z m Z m Z m Z ddlmZmZddlmZddlmZddlmZddlZddlZe d d �Zejd ed d �d d�edd �ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZdZ ej!ej"�#e �dd�ej$ded�dd��Z%ej&ded�defd d!��Z'e�&d"�d#efd$d%��Z(e�)d&�d'e*fd(d)��Z+e�&d*�d+d,��Z,e�&d-�d.e-fd/d0��Z.e�/d1�d2e fd3d4��Z0ej$d5ed6�d2e fd7d8��Z1d=d;d<�Z2dS)>zW HTTP-MCP Server Configuration Tool UI Provides visual interface for API configuration �N)�Dict�List�Optional�Union)�FastAPI� HTTPException�Request�Response)� HTMLResponse� JSONResponse)� StaticFiles)�Jinja2Templates)� BaseModelzHTTP-MCP Configuration Tool)�titlez/staticZstatic)Z directory��namezstatic/templatesc@s:eZdZUeed<eed<dZeed<dZeeed<dS)� ApiParamModel�type�descF�requiredN�default) �__name__� __module__� __qualname__�str�__annotations__r�boolrr�rr�QD:\Data\Money\2025\ai-fund-assistant\mcp-servers\http-for-mcp-server\config_ui.pyrs  rc@s&eZdZUeed<dZeeed<dS)�ApiResponseFieldModel�pathNr)rrrrrrrrrrrr%s rc@sveZdZUeed<eed<eed<dZeed<iZeeefed<iZ eeefed<iZ eee ee ffed<d S) � ApiToolModelr� description�url�GET�method�params�headers�responseN) rrrrrr%r&rrr'r(rrrrrrr!)s   r!c@seZdZUeeed<dS)�ApiConfigModel�toolsN)rrrrr!rrrrrr)2s r)zconfig/apis.jsonT��exist_okz /api/config)Zresponse_modelc �s��z,tj�t�s dgiWSttddd��}t�|�}Wd�|WS1s&wY|WStyT}zdt|��dt � ���}t |�t dd t|���d ��d}~ww) zGet current API configurationr*�r�utf-8��encodingNzFailed to read configuration: � ��u读取配置失败: �� status_code�detail) �osr �exists�API_CONFIG_PATH�open�json�load� Exceptionr� traceback� format_exc�printr)�f�config�e� error_detailrrr� get_config<s �    ����rDrAc �s��z2tjtj�t�dd�ttddd��}tj|��|ddd�Wd �|WS1s,wY|WSt yZ}zd t |��d t � ���}t |�td d t |���d��d }~ww)zSave API configurationTr+�wr.r/F��Z ensure_ascii�indentNzFailed to save configuration: r1r2u保存配置失败: r3)r6�makedirsr �dirnamer8r9r:�dump�dictr<rr=r>r?r)rAr@rBrCrrr� save_configLs� ����rMz /api/tool�toolc �s��z�tjtj�t�dd�tj�t�rIttddd��&}zt�|�}t di|��}Wntj y8t gd�}YnwWd�n1sCwYnt gd�}|j D]}|j |j krdt dd |j �d �d ��qQ|j �|�ttd dd��}tj|��|d dd�Wd�n1s�wYdd |j �d�d�WSt y��ty�}zdt|��dt����}t|�t ddt|���d ��d}~ww)z Add new toolTr+r-r.r/)r*N��工具 'u ' 已存在r3rEFrFrG�successu ' 已添加��status�messagezFailed to add tool: r1r2u添加工具失败: r)r6rIr rJr8r7r9r:r;r)ZJSONDecodeErrorr*rr�appendrKrLr<rr=r>r?)rNr@� config_data�current_configZ existing_toolrBrCrrr�add_tool]s@�  ����  � � ��rXz/api/tool/{tool_name}� tool_namec �sX�z|tj�t�stddd��ttddd��}t�|�}tdi|��}Wd�n1s,wYt |j �}�fdd �|j D�|_ t |j �|krRtdd ��d �d��ttd dd��}tj |� �|d dd�Wd�n1sowYdd ��d�d�WSty��t y�}zdt|��dt����}t|�tddt|���d��d}~ww)z Delete tooli�u配置文件不存在r3r-r.r/Ncsg|] }|j�kr|�qSrr)�.0rN�rYrr� <listcomp>�szdelete_tool.<locals>.<listcomp>rPu ' 不存在rEFrFrGrQu ' 已删除rRzFailed to delete tool: r1r2u删除工具失败: r)r6r r7r8rr9r:r;r)�lenr*rKrLr<rr=r>r?)rYr@rVrWZoriginal_lengthrBrCrr[r� delete_tool�s0�   � � ��r^z /api/reloadc �s �zgtjdd�4IdH�O}z|�d�IdH}|��|��WWd�IdHWStjyC}z t|jjd|jj ��d��d}~wtj yZ}z tddt |���d��d}~ww1IdHsawYWdSt y�}zd t |��d t ����}t|�tdd t |���d��d}~ww) z%Notify server to reload configuration�$@��timeoutNz"http://localhost:8000/admin/reloadu服务器返回错误: r3r2u无法连接到MCP服务器: z Failed to reload configuration: r1u重载配置失败: )�httpx� AsyncClient�getZraise_for_statusr:�HTTPStatusErrorrr(r4�text� RequestErrorrr<r=r>r?)�clientr(rBrCrrr� reload_config�s4�� �� ���� ��riz/api/test_request� request_datac �st��z|�d�}|�dd�}|�di�}|�di�}|�di�}|s(tddd ��|||d �}|dkr3n |d vr=|r=||d <tjd d�4IdH��}zZtd|�d|���td|���|rctd|���|jdi|��IdH}z|��} d|j| d�WWWd�IdHWSd|j|jdd�d�YWWd�IdHWStj y�} zt ddd| j j��d�d�WYd} ~ Wd�IdHWSd} ~ wtj y�} zt dddt | ���d�d�WYd} ~ Wd�IdHWSd} ~ ww1IdH�swYWdSt�y9} z$dt | ��dt����} t| �t dddt | ���d�d�WYd} ~ Sd} ~ ww) Nr#r%r$r'r&�bodyrOuURL不能为空r3)r%r#r')ZPOSTZPUTZPATCHr:r_r`u发送API测试请求: � u 请求头: u 请求体: T)rQr4�data)�contentZ raw_responser2FuHTTP错误: 状态码 )rQ�error�r4rnu请求错误: zTest request failed: r1u测试请求失败: r)rdrrbrcr?�requestr:r4rfrer r(rgrr<r=r>) rjr#r%r'r&rkZrequest_kwargsrhr(�resultrBrCrrr� test_request�s��      ���� ����� ��� �&���rsZhttprqc �s��z||�IdHWStyM}z8dt|��dt����}t|�t|t�r6t|jd|j id�WYd}~Stdddt|���id�WYd}~Sd}~ww)NzUnhandled exception: r1r5rpr2u服务器内部错误: ) r<rr=r>r?� isinstancerr r4r5)rqZ call_nextrBrCrrr�error_handling_middlewares"� ����ru�/)Zresponse_classc�s�t�dd|i�S)zDConfiguration tool homepage with Apple Design + Pixel style + emojisz index.htmlrq)� templatesZTemplateResponse)rqrrr� read_roots�rx�0.0.0.0�AcCsddl}|jt||d�dS)z Run configuration tool UI serverrN)�host�port)�uvicorn�run�app)r{r|r}rrr� run_config_ui!sr�)ryrz)3�__doc__r:r6r=�typingrrrrZfastapirrrr Zfastapi.responsesr r Zfastapi.staticfilesr Zfastapi.templatingr ZpydanticrrbZasynciorZmountrwrrr!r)r8rIr rJrdrDZpostrMrX�deleterr^rirLrsZ middlewarerurxr�rrrr�<module>sL         ' K 

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/Tght1211/http-4-mcp'

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