Skip to main content
Glama

GitHub Copilot Response Time Statistics MCP Server

by fishcoderman
index.cpython-313.pyc11.5 kB
� �c�hL� ��SrSSKrSSKrSSKrSSKrSSKJrJrJrJ r SSK J r SSK J r Jr SSKJr \"SS9r\ "S S 55r"S S 5r\"5r\R+5S \S\S\S\4Sj5r\R+5S \S\4Sj5r\R+5SS\S\\\ 44Sjj5r\R+5S\\\ 44Sj5r\R+5S\\\ 44Sj5r\R+5S\4Sj5r\R;S5S\4Sj5r\S:Xa\ "S5 \RC5 gg)uu GitHub Copilot Response Time Statistics MCP Server 用于统计和对比不同 AI 模型回答问题的时间长短 �N)�Dict�List�Optional�Any)�Path)� dataclass�asdict)�FastMCPz'Copilot Response Time Statistics Server)�namec�n�\rSrSr%Sr\\S'\\S'\\S'\\S'\\S'\\S'\\S 'S \4S jr S r g )�ResponseRecord�u响应记录数据结构� model_name�question� start_time�end_time�response_time_ms� timestamp� session_id�returnc��[U5$�N)r )�selfs �//Users/tao/Documents/file/python/study/index.py�to_dict�ResponseRecord.to_dicts ���d�|���N) �__name__� __module__� __qualname__�__firstlineno__�__doc__�str�__annotations__�float�dictr�__static_attributes__rrrr r s6��"��O��M����O����N��O���rr c��\rSrSrSrSS\4SjjrSrSrS\S\S \S \4S jr S\S \4S jr SS\ \S \ \\ 44SjjrS \ \\ 44SjrSrg )�ResponseTimeTracker�!u响应时间跟踪器� data_filec�`�[U5Ul0Ul/UlUR 5 gr)rr,�active_sessions�records� load_data)rr,s r�__init__�ResponseTimeTracker.__init__$s&���i����:<���-/�� � ���rc �t�URR5(aW[URSSS9n[R"U5nUVs/sHn[ S0UD6PM snUlSSS5 ggs snf!,(df  g=f![an[SU35 /UlSnAgSnAff=f)u从文件加载历史数据�r�utf-8��encodingNu加载数据时出错: r) r,�exists�open�json�loadr r/� Exception�print)r�f�data�record�es rr0�ResponseTimeTracker.load_data*s��� �>�>� � � "� "� "��$�.�.�#��@�A��9�9�Q�<�D�KO�#P�4��N�$<�V�$<�4�#P�D�L�A�@� #��$Q�A�@��� "��/��s�3�4�!�� � �� "�sF�B�A=�A8�&A=�.B�8A=�= B �B� B� B7�B2�2B7c�6�[URSSS9n[R"URVs/sHo"R 5PM snUSSS9 SSS5 gs snf!,(df  g=f![ an[SU35 SnAgSnAff=f) u保存数据到文件�wr5r6F�)� ensure_ascii�indentNu保存数据时出错: )r9r,r:�dumpr/rr<r=)rr>r@rAs r� save_data�ResponseTimeTracker.save_data5s~�� 1��d�n�n�c�G�<��� � �$�,�,�G�,��>�>�+�,�G��&+�A�7�=�<��G�=�<��� 1� �+�A�3�/� 0� 0�� 1�sE�A6�A%�A �A%�A6� A%�% A3�/A6�3A6�6 B�B�Brrrrc�b�[R"5nUUUS.URU'SUSU3$)u开始记录问题)rrru已开始记录 u 的响应时间,会话ID: )�timer.)rrrrrs r�start_question�"ResponseTimeTracker.start_question>s>���Y�Y�[� �$� �$�, ����Z�(� "�*��-J�:�,�W�Wrc ��XR;aSUS3$[R"5nURUnX#S- S-n[USUSUSUU[RR 5R 5US9nUR RU5 URU UR5 SUSS US S 3$) u'结束记录问题并计算响应时间u未找到会话 u,请先调用 start_questionri�rr)rrrrrrru记录完成!u 响应时间: z.2fu 毫秒) r.rLr �datetime�now� isoformatr/�appendrI)rrr� session_datarr@s r� end_question� ResponseTimeTracker.end_questionHs��� �1�1� 1�%�j�\�1O�P� P��9�9�;���+�+�J�7� �$�L�'A�A�T�I���#�L�1�!�*�-�#�L�1��-��'�'�+�+�-�7�7�9�!� �� � � ���F�#� � � �� ,� ���� ��l�!;� <�O�L\�]`�Ka�ah�i�irNc ���URnU(a-URVs/sHo3RU:XdMUPM nnU(dSSU(aSU-OSS30$UVs/sHo3RPM nnU=(d S[U5[ U5[U5- [ U5[ U5USSVs/sHo3R5PM snS .nU$s snfs snfs snf) u获取统计数据�erroru 未找到u模型 u任何u 的记录u 所有模型�����N)r� total_records�avg_response_time_ms�min_response_time_ms�max_response_time_ms�recent_records)r/rr�len�sum�min�maxr)rr�filtered_recordsr4�response_times�statss r�get_statistics�"ResponseTimeTracker.get_statisticsbs����<�<�� �+/�<�<�V�<�a�<�<�:�;U��<� �V���y�:��Z�)?�S[�(\�\e�f�g� g�6F�G�6F��,�,�6F��G�%�6�� �!1�2�$'��$7�#�n�:M�$M�$'��$7�$'��$7�4D�R�S�4I�J�4I�q�y�y�{�4I�J�  ��� ��! W�� H��Ks�C�C� C!�<C&c�^�0nURH5nURnX1;a/X'XRUR5 M7 0mUR 5H?up4[ U5[ U5[ U5- [U5[U5S.TU'MA TT(a[TR5U4SjS9S.$SS.$)u对比不同模型的性能)�count� avg_time_ms� min_time_ms� max_time_msc�>�TUS$)Nrjr)�k� comparisons �r�<lambda>�4ResponseTimeTracker.compare_models.<locals>.<lambda>�s���Z��]�=�-Ir)�keyN)ro� fastest_model) r/rrSr�itemsr_r`rarb�keys)r� model_statsr@�model�timesros @r�compare_models�"ResponseTimeTracker.compare_modelsxs����� ��l�l�F��%�%�E��'�%'� �"� � � %� %�f�&=�&=� >� #� � �'�-�-�/�L�E��U��"�5�z�C��J�6�"�5�z�"�5�z� !�J�u� �0�%�NX�!����!2�#I�K� � �_c� � r)r.r,r/)zresponse_stats.jsonr)rr r!r"r#r$r1r0rIrMrUrrrrfryr(rrrr*r*!s�����#�� "�1�X��X�#�X��X�QT�X�j�s�j�s�j�4��#���$�s�C�x�.��, ��S�#�X�� rr*rrrrc�.�[RXU5$)u� 开始记录模型回答问题的时间 Args: session_id: 唯一的会话标识符 model_name: 模型名称 (如: "gpt-4", "claude-3", "copilot") question: 问题内容 )�trackerrM)rrrs r�start_question_timingr}�s�� � !� !�*�(� C�Crc�,�[RU5$)uS 结束记录并计算响应时间 Args: session_id: 对应的会话标识符 )r|rU)rs r�end_question_timingr�s�� � � � � +�+rc�,�[RU5$)u} 获取指定模型或所有模型的统计数据 Args: model_name: 模型名称,为空时返回所有模型的统计 )r|rf)rs r�get_model_statisticsr��s�� � !� !�*� -�-rc�*�[R5$)u) 对比所有模型的响应时间性能 )r|ryrrr�compare_all_modelsr��s�� � !� !� #�#rc�r�[[RR55[RS.$)u# 获取当前活动的测试会话 )r.�session_details)�listr|r.rurrr�get_active_sessionsr��s.��  �� 7� 7� <� <� >�?�"�2�2� �rc��[RR5 [RR5 [R 5 g)u, 清除所有统计数据(谨慎使用) u所有数据已清除)r|r/�clearr.rIrrr�clear_all_datar��s5��  �O�O���� ���!�!�#� ���� "rzresource://usagec��g)u 使用指南 ux ## GitHub Copilot 响应时间统计 MCP 服务使用指南 ### 基本使用流程: 1. **开始计时**: ``` start_question_timing(session_id="test-1", model_name="copilot", question="如何创建Python函数?") ``` 2. **结束计时**: ``` end_question_timing(session_id="test-1") ``` 3. **查看统计**: ``` get_model_statistics() # 所有模型 get_model_statistics(model_name="copilot") # 特定模型 ``` 4. **模型对比**: ``` compare_all_models() ``` ### 示例工作流程: 1. 准备向 Copilot 提问时,调用 start_question_timing 2. 向 Copilot 提问并等待回答 3. 收到完整回答后,立即调用 end_question_timing 4. 使用统计工具查看和对比结果 ### 注意事项: - session_id 必须唯一 - 确保及时调用 end_question_timing - 数据自动保存到 response_stats.json 文件 rrrr� usage_guider��s�� $ r�__main__u6启动 GitHub Copilot 响应时间统计 MCP 服务...r)"r#�asyncior:rLrP�typingrrrr�pathlibr� dataclassesrr �fastmcpr �mcpr r*r|�toolr$r}rr�r�r�r��resourcer�rr=�runrrr�<module>r�s���� � � ��,�,��)���<�=�� � � � � �n �n �b � ������ D�c� D�s� D�c� D�c� D� � D�����,�C�,�C�,� �,�����.�S�.�D��c��N�.� �.�����$�D��c��N�$� �$� �����T�#�s�(�^�� ������#��#� �#���� �!�(�S�(�"�(�T �z�� � B�C��G�G�I�r

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/fishcoderman/MCP'

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