Skip to main content
Glama
abuttoncc

Wind MCP Server

by abuttoncc
wind_mcp_direct_server.cpython-312.pyc43.7 kB
� ��>h����b �dZddlZddlZddlZddlZddlZddlZddlmZm Z m Z m Z m Z ddl ZddlZddlmZddlmZmZddlmZddlmZidd �d d �d d �dd�dd�dd�dd�dd�dd�dd�dd�dd�d d!�d"d#�d$d%�d&d'�d(d)�d*d+i�Zd,d-d.d/d0�d1d2d3d4d0�d5d6d7d8d0�d9�Zd:d;d<d=d>�d?d@�dAdBdCdDdEdFdGdH�dId@�dJidKdL�dMdN�dOdP�dQdR�dSdT�dUdV�dWdX�dYdZ�d[d\�d]d^�d_d`�dadb�dcdd�dedf�dgdh�didj�dkdl�dKd@�dm�Zdngdo�d;d=dCdDdEdFdGdp�dq�idrds�dtdu�dvdw�dxdy�dzd{�d|d}�d~d�d�d��d�d��d�d��d�d��d�d��d�d��d�d��d�d��did��d�d��d�d�d���gd��d��d��Zej:ej<d����ej>d��Z ed����Z!ed��Z" ejF�ejH�Z%e jMd�e%���e%se jOd��d��Z+d��Z,e"j[�d�ee.e ffd���Z/e"j[� d�d�e.d�e.d�e e.d�ee.e ffd���Z0e"j[� d�d�e.d�e.d�e.d�e.d�e e.d�e e1d�ee.e ffd���Z2e"j[� d�d�e.d�e.d�e e.d�e e1d�ee.e ff d���Z3e"j[�d�ee.e1ffd���Z4e"j[�d�ee.e ffd���Z5e"j[�d�d�e e.d�ee.e ffd���Z6e"j[�d�d�e e.d�ee.e ffd���Z7e"j[� d�d�e.d�e e.d�e e1d�ee.e ffd���Z8e"j[� d�d�e.d�e.d�e e.d�ee.e ffd���Z9e"j[� d�d�e.d�e.d�e.d�e.d�e e.d�e e1d�ee.e ffd���Z:e"j[� d�d�e.d�e e.d�e e.d�e e.d�ee.e ff d���Z;e"j[� d�d�e.d�e e.d�ee.e ffd���Z<e"j[� d�d�e.d�e.d�e e.d�ee.e ffd���Z=e"j[� d�d�e.d�e e.d�ee.e ffd���Z>e"j[� d�d�e.d�e.d�e e.d�ee.e ffdĄ�Z?e"j[� d�d�e.d�e ee.e fd�e e.d�ee.e ffdƄ�Z@e"j[� d�d�e.d�e e.d�ee.e ffdȄ�ZAe"j[�d�ee.e ffdɄ�ZBe!j�dʫd˄�ZDe!j�d̫d̈́�ZEd΄ZFeGd�k(reF�yy#e($r!Z)e jUd�e)���d�Z%YdZ)[)��edZ)[)wwxYw)�u� Wind API MCP直连服务器 此服务器直接连接Wind API,提供HTTP和SSE接口,不需要额外的Socket服务器。 支持所有Wind API功能,包括wsd、wss、wsq等数据查询。 �N)�Dict�Any�Optional�List�Union)�FastAPI)�StreamingResponse� JSONResponse)�w)�FastMCP� 收盘价�closeu 涨跌幅�pct_chgu 换手率�turnu每股收益EPS-基本� eps_basicu净资产收益率ROE-平均�roe_avgu 开盘价�openu 最高价�highu 最低价�lowu 成交量�volumeu 成交额�amtu 总市值�mkt_capu 流通市值� mkt_cap_floatu 市盈率TTM�pe_ttmu 市净率�pb_lfu 股息率TTM�dividendyield2u振幅�swingu 涨停价�up_limitu 跌停价� down_limitu获取区间内日期序列u*获取指定时间区间内的日期序列z$w.tdays(beginTime, endTime, options)zGw.tdays('2023-01-01', '2023-12-31', 'Days=Trading;TradingCalendar=SSE'))�name� description�usage�exampleu日期偏移函数u*根据基准日期计算偏移后的日期z)w.tdaysOffset(offset, beginTime, options)z0w.tdaysoffset(-20, '2023-01-01', 'Days=Trading')u日期计数函数u$计算指定区间内的日期数量z)w.tdayscount(beginTime, endTime, options)z8w.tdayscount('2023-01-01', '2023-12-31', 'Days=Trading')��tdays� tdaysoffset� tdayscountu 日期类型u 交易日u 工作日u 日历日)�Trading�Weekdays�Alldaysr()r!�options�defaultu 周期类型u天u周u月u季度u半年u年)�D�W�M�Q�S�Yr-u交易所日历�SSEu上海证券交易所�SZSEu深圳证券交易所�CFFEu 中金所�TWSEu台湾证券交易所�DCEu 大商所�NYSEu纽约证券交易所�CZCEu 郑商所�COMEXu纽约金属交易所�SHFEu 上期所�NYBOTu纽约期货交易所�HKEXu香港交易所�CMEu芝加哥商业交易所�Nasdaqu纳斯达克证券交易所�NYMEXu纽约商品交易所�CBOTu芝加哥商品交易所�LMEu伦敦金属交易所�IPEu伦敦国际石油交易所)�Days�Period�TradingCalendaru-相对日期表达式,格式:[-]N[单位])u-5D (前推5个日历日)u-10TD (前推10个交易日)u-1M (前推1个月)u-2Q (前推2个季度)u-1Y (前推1年))�TDr-r.r/r0r1r2)r!�examples�units�EDu 截止日期�SDu 开始日期�LQ1u 去年一季�LQ2u 去年二季�LQ3u 去年三季�LYRu 去年年报�RQ1u 今年一季�RQ2u 今年二季�RQ3u 今年三季�MRQu 最新一期�RYFu 本年初�RHYFu 下半年初�RMFu 本月初�RWFu 本周一�LWEu 上周末u 上月末�LHYEu 上半年末u 上年末u 上市首日)�LYE�IPO)uED-1Y (一年前)uIPO (上市首日)uRYF (本年初)uLYE (上年末))� time_pointsrH)�relative_dates�special_macrosz4%(asctime)s - %(name)s - %(levelname)s - %(message)s)�level�formatzwind-mcp-serverzWind API MCP Direct Server)�title�wind_mcpuWind API 连接状态: uWind API 未连接成功uWind API 初始化失败: Fc��t|d�sy|j}|j}|j}|j}t |�dk(r+t |�dkDrt j|d||��}|St |�dkDr2t |�dk(r$t j|||��j}|St j|||��}|S)u将Wind数据转换为DataFrame�DataN�r)�index�columns) �hasattrrd�Codes�Fields�Times�len�pd� DataFrame�T)� wind_data�data�codes�fields�times�dfs �wind_mcp_direct_server.py� _to_dataframerw�s��� �9�f� %�� �>�>�D� �O�O�E� � � �F� �O�O�E� �6�{�a��C��J��N� �\�\�$�q�'��� >�� �I� �V��q��S��Z�1�_� �\�\�$�f�e� <� >� >�� �I��\�\�$�f�e� <�� �I�c���|s|St|t�r�d|vrx|jd�D�cgc]}|j���}}g}|D]4}|tvr|j t|��$|j |��6dj |�Stj||�St|ttf�r$|D�cgc]}tj||���c}S|Scc}wcc}w)u�将中文指标名转换为Wind代码 Args: indicators: 字符串或列表形式的指标名 Returns: 转换后的Wind代码字符串 �,) � isinstance�str�split�strip�WIND_COMMON_INDICATORS�append�join�get�list�tuple)� indicators�i�indicator_list� converted�inds rv�_convert_cn_indicatorsr��s��� ����*�c�"� �*� �1;�1A�1A�#�1F�G�1F�A�a�g�g�i�1F�N�G��I�%���0�0��$�$�%;�C�%@�A��$�$�S�)� &��8�8�I�&� &�*�-�-�j�*�E� E� �J��u� � .�@J�K� ��&�*�*�3��4� �K�K� ���+H��$Ls �C#�C(�returnc�2�dtj�dd�S)u 简单的测试工具,用于验证MCP工具是否正常工作 Returns: 包含状态信息的字典 �oku测试工具正常工作)�status�time�message)r��rxrv� test_toolr�s���� � � �-� �rxrrrsr+c�B� t|�}tj|||�}|jdk7rdd|j��iS|j|j|j |j |jd�S#t$r}dt|�icYd}~Sd}~wwxYw)u)获取实时行情数据 Args: codes: 股票代码,可以是单个代码或代码列表 fields: 数据字段,可以是单个字段或字段列表(支持中文指标名称) options: 可选参数 Returns: 包含请求数据的字典 r�error�Wind API错误码: �� ErrorCoderirjrkrdN) r�r �wsqr�rirjrkrd� Exceptionr|)rrrsr+�result�es rv�wind_wsqr�s���!�'��/�����u�f�g�.�� � � �q� ��2�6�3C�3C�2D�E�F� F� �)�)��\�\��m�m��\�\��K�K�  � �� �!���Q�� � ��!�s$�AA>�9A>�> B� B�B�B� start_date�end_date�usedfc�|� t|�}tj|||||�}|jdk7rdd|j��iS|rt |�}|j|fS|j|j |j |j|jd�S#t$r}dt|�icYd}~Sd}~wwxYw)u�获取历史序列数据 Args: codes: 股票代码,可以是单个代码或代码列表 fields: 数据字段,可以是单个字段或字段列表(支持中文指标名称) start_date: 开始日期,格式为YYYYMMDD end_date: 结束日期,格式为YYYYMMDD options: 可选参数 usedf: 是否使用pandas DataFrame格式返回 Returns: 包含请求数据的字典 rr�r�r�N) r�r �wsdr�rwrirjrkrdr�r|) rrrsr�r�r+r�r�rur�s rv�wind_wsdr�@s���,!�'��/�����u�f�j�(�G�D�� � � �q� ��2�6�3C�3C�2D�E�F� F� ��v�&�B��#�#�R�'� '� �)�)��\�\��m�m��\�\��K�K�  � �� �!���Q�� � ��!�s*�AB�B�!9B� B;�$ B6�0B;�6B;c�x� t|�}tj|||�}|jdk7rdd|j��iS|rt |�}|j|fS|j|j |j |j|jd�S#t$r}dt|�icYd}~Sd}~wwxYw)u[获取截面数据 Args: codes: 股票代码,可以是单个代码或代码列表 fields: 数据字段,可以是单个字段或字段列表(支持中文指标名称) options: 可选参数 usedf: 是否使用pandas DataFrame格式返回 Returns: 包含请求数据的字典 rr�r�r�N) r�r �wssr�rwrirjrkrdr�r|)rrrsr+r�r�rur�s rv�wind_wssr�ps���$!�'��/�����u�f�g�.�� � � �q� ��2�6�3C�3C�2D�E�F� F� ��v�&�B��#�#�R�'� '� �)�)��\�\��m�m��\�\��K�K�  � �� �!���Q�� � ��!�s*�AB�B�9B� B9�" B4�.B9�4B9c�|� tj�}d|iS#t$r}dt|�d�cYd}~Sd}~wwxYw)uU检查Wind API连接状态 Returns: 包含连接状态的字典 � connectedF)r�r�N)r � isconnectedr�r|�� is_connectedr�s rv�wind_connection_statusr��s<��5��}�}�� ��\�*�*�� �5�"�S��V�4�4��5�s�� ;� 6�;�;c�� tj�tj�}d|d�S#t$r}dt |�d�cYd}~Sd}~wwxYw)uO启动Wind API连接 Returns: 包含操作结果的字典 T)�successr�F)r�r�N)r �startr�r�r|r�s rv� wind_startr��sQ��  � ��� ��}�}�� ��%� � �� � ����V� � �� �s�,/� A� A �A� A�categoryc�n� |rdtiSdtiS#t$r}dt|�icYd}~Sd}~wwxYw)u�获取常用Wind指标参数映射 Args: category: 可选的指标类别筛选 Returns: 包含指标映射的字典 r�r�N)rr�r|)r�r�s rv�get_common_indicatorsr��sC��!� �!�"8�9� 9� �"8�9� 9�� �!���Q�� � ��!�s� �� 4� /�4�4� function_namec��� |r.|tvrt|td�}|dvr t|d<|Sdd|��iStttd�S#t$r}dt |�icYd}~Sd}~wwxYw)u�获取Wind日期函数信息和参数 Args: function_name: 可选的函数名筛选,如"tdays"、"tdaysoffset"或"tdayscount" Returns: 包含日期函数信息的字典 )�function�paramsr$� date_macrosr�u未找到函数 )� functionsr�r�N)�WIND_DATE_FUNCTIONS�WIND_DATE_PARAMS�WIND_DATE_MACROSr�r|)r�r�r�s rv�get_date_functionsr��s���!� �� 3�3� 3�M� B�.��� !�$J�J�,<�F�=�)�� ��#3�M�?�!C�D�D�1�*�/�� �� �!���Q�� � ��!�s'�(A�A�A� A$� A�A$�A$� table_namec�^� tj||�}|jdk7rdd|j��iS|r�t|d�r�t|d�rx|j}|j }|r^|r\t j�}t|�D]\}}|t|�ks�||||<�|j|jd�d�S|jt|d�r |j ngt|d�r|jd�Sgd�S#t$r} dt| �icYd } ~ Sd } ~ wwxYw) u�获取Wind数据集 Args: table_name: 数据集名称 options: 可选参数 usedf: 是否使用pandas DataFrame格式返回 Returns: 包含请求数据的字典 rr�r�rdrj�records�r�rq�r�rjrdN) r �wsetr�rhrdrjrmrn� enumeraterl�to_dictr�r|) r�r+r�r�rqrsrur��fieldr�s rv� wind_wsetr��s&�� !���� �G�,�� � � �q� ��2�6�3C�3C�2D�E�F� F� �W�V�V�,����1J��;�;�D��]�]�F����\�\�^�� )�&� 1�H�A�u��3�t�9�}�$(��G��5� �!2�&,�%5�%5�r�z�z�)�?T�U�U� �)�)�'.�v�x�'@�f�m�m�b�#*�6�6�#:�F�K�K� � �AC� � �� �!���Q�� � ��!�s5�5D �A)D �"'D � =D �D � D,� D'�!D,�'D,c��� tj|||�}|jdk7rdd|j��iSg}t|d�rg|jr[|jdD]I}t|d�r!|j |j d���0|j t|���K|j|d�S#t$r}dt|�icYd}~Sd}~wwxYw) u获取交易日历 Args: start_date: 开始日期,格式为YYYYMMDD end_date: 结束日期,格式为YYYYMMDD options: 可选参数,例如"Period=W"获取周交易日 Returns: 包含交易日列表的字典 rr�r�rd�strftimez%Y%m%d)r�� TradingDaysN) r r%r�rhrdr�r�r|r�)r�r�r+r�� trading_days�dayr�s rv� wind_tdaysr�'s��� !�����X�w�7�� � � �q� ��2�6�3C�3C�2D�E�F� F�� � �6�6� "�v�{�{��{�{�1�~���3� �+� �'�'�� � �X�(>�?� �'�'��C��1� &� �)�)�'� � �� �!���Q�� � ��!�s#�6B=�BB=�= C� C�C�C� start_time�end_timec �� tj|||||�}|jdk7rdd|j��iS|r7t|�}|j|j �j d�d�S|j|j |j|jr)|jD�cgc]}|jd���c}ng|jd�Scc}w#t$r} dt| �icYd} ~ Sd} ~ wwxYw) u�获取分钟级别历史数据 Args: codes: 股票代码,可以是单个代码或代码列表 fields: 数据字段,可以是单个字段或字段列表 start_time: 开始时间,格式为YYYY-MM-DD HH:MM:SS end_time: 结束时间,格式为YYYY-MM-DD HH:MM:SS options: 可选参数 usedf: 是否使用pandas DataFrame格式返回 Returns: 包含请求数据的字典 rr�r�r�r�z%Y-%m-%d %H:%M:%Sr�N) r �wsir�rw� reset_indexr�rirjrkr�rdr�r|) rrrsr�r�r+r�r�ru�tr�s rv�wind_wsir�Os���,!����u�f�j�(�G�D�� � � �q� ��2�6�3C�3C�2D�E�F� F� ��v�&�B�!'�!1�!1�2�>�>�;K�;S�;S�T]�;^�_� _� �)�)��\�\��m�m�PV�P\�P\�v�|�|�L�|�!�a�j�j�!4�5�|�L�bd��K�K�  � ��M�� �!���Q�� � ��!�s:�8C�8C�4;C�/C �C�C� C>�' C9�3C>�9C>c ��� |r|rtj||||�}ntj||��}|jdk7rdd|j��iS|j|jt |d�r |j ng|j r)|j D�cgc]}|jd���c}ng|jd�Scc}w#t$r}dt|�icYd}~Sd}~wwxYw) uz获取经济数据库数据 Args: codes: 指标代码,可以是单个代码或代码列表 start_date: 开始日期,格式为YYYYMMDD,默认为空表示取最新数据 end_date: 结束日期,格式为YYYYMMDD,默认为空表示取最新数据 options: 可选参数 Returns: 包含请求数据的字典 )r+rr�r�rjz%Y-%m-%dr�N) r �edbr�rirhrjrkr�rdr�r|)rrr�r�r+r�r�r�s rv�wind_edbr�|s���$!� �(��U�U�5�*�h��@�F��U�U�5�'�2�F� � � �q� ��2�6�3C�3C�2D�E�F� F� �)�)��\�\�'.�v�x�'@�f�m�m�b�GM�|�|�f�l�l�C�l��a�j�j��,�l�C�Y[��K�K�  � ��D�� �!���Q�� � ��!�s7�AC�A C�C �7C� C� C.� C)�#C.�)C.� filter_strc�L� tj||�}|jdk7rdd|j��iS|jt|d�r |jngt|d�r |j ng|j d�S#t$r}dt|�icYd}~Sd}~wwxYw)u�股票筛选函数 Args: filter_str: 筛选条件,例如 "industry_sw=金融" options: 可选参数,如返回字段设置等 Returns: 包含筛选结果的字典 rr�r�rirj)r�rirjrdN) r �weqsr�rhrirjrdr�r|)r�r+r�r�s rv� wind_weqsr��s��� !���� �G�,�� � � �q� ��2�6�3C�3C�2D�E�F� F� �)�)�%,�V�W�%=�V�\�\�2�'.�v�x�'@�f�m�m�b��K�K�  � �� �!���Q�� � ��!�s#�5B�A B� B#� B�B#�B#�portfolio_namec�� tj|||�}|jdk7rdd|j��iS|jt|d�r |jng|j d�S#t $r}dt|�icYd}~Sd}~wwxYw)u�组合查询函数 Args: portfolio_name: 组合名称 fields: 查询字段 options: 可选参数 Returns: 包含组合信息的字典 rr�r�rjr�N)r �wpfr�rhrjrdr�r|)r�rsr+r�r�s rv�wind_wpfr��s��� !����~�v�w�7�� � � �q� ��2�6�3C�3C�2D�E�F� F� �)�)�'.�v�x�'@�f�m�m�b��K�K� � �� �!���Q�� � ��!��"�6A+�1A+�+ B �4 B�B �B c�� tj||�}|jdk7rdd|j��iS|jt|d�r |jng|j d�S#t $r}dt|�icYd}~Sd}~wwxYw)u�全球数据搜索函数 Args: table_name: 数据表名称 options: 可选参数 Returns: 包含搜索结果的字典 rr�r�rjr�N)r �wgdsr�rhrjrdr�r|)r�r+r�r�s rv� wind_wgdsr��s��� !���� �G�,�� � � �q� ��2�6�3C�3C�2D�E�F� F� �)�)�'.�v�x�'@�f�m�m�b��K�K� � �� �!���Q�� � ��!�s"�5A*�1A*�* B �3 B�?B �B � sector_idr�c�� tj|||�}|jdk7rdd|j��iS|jt|d�r |jng|j d�S#t $r}dt|�icYd}~Sd}~wwxYw)u 板块成分股获取函数 Args: sector_id: 板块ID,如 1000011263000000 (上证50) field: 查询字段,通常为 "date,wind_code,sec_name" options: 可选参数 Returns: 包含板块成分股的字典 rr�r�rjr�N)r �wsesr�rhrjrdr�r|)r�r�r+r�r�s rv� wind_wsesr�s��� !���� �5�'�2�� � � �q� ��2�6�3C�3C�2D�E�F� F� �)�)�'.�v�x�'@�f�m�m�b��K�K� � �� �!���Q�� � ��!�r�� trade_listc�6� g}g}g}g}|D]�}|j|jdd��|j|jdd��|j|jdd��|j|jdd����tj||||||�}|jdk7rdd|j��iS|jt |d �r|j d �Sgd �S#t$r} dt| �icYd } ~ Sd } ~ wwxYw) u更新组合函数 Args: portfolio_name: 组合名称 trade_list: 交易列表,格式为[{"date":"20220101", "code":"000001.SZ", "volume":100, "price":10.5}] options: 可选参数 Returns: 包含更新结果的字典 �date��coderr�pricer�r�rd)r�rdN) r�r�r �wupfr�rhrdr�r|) r�r�r+�datesrr�volumes�prices�trader�r�s rv� wind_wupfr� s�� !����������E� �L�L����6�2�.� /� �L�L����6�2�.� /� �N�N�5�9�9�X�q�1� 2� �M�M�%�)�)�G�Q�/� 0�  � �����u�g�v�w�O�� � � �q� ��2�6�3C�3C�2D�E�F� F� �)�)�#*�6�6�#:�F�K�K� � �@B� � �� �!���Q�� � ��!�s*�C C8�$C8�4C8�8 D� D� D�D� sector_typec�r� tj||�}|jdk7rdd|j��iSg}t|d�r�t|d�r�|jr�|j r�t t|jd��D]`}i}t|j �D]3\}}|t|j�ks�|j||||<�5|j|��b|jt|d�r |j ng|d�S#t$r}dt|�icYd}~Sd}~wwxYw)u�获取板块列表 Args: sector_type: 板块类型,如 "windcode"表示申万行业 options: 可选参数 Returns: 包含板块列表的字典 rr�r�rdrjr�N) r �sectorsr�rhrdrj�rangerlr�r�r�r|) r�r+r�� sectors_datar��sector�jr�r�s rv� wind_sectorsr�Ks ��!����;��0�� � � �q� ��2�6�3C�3C�2D�E�F� F�� � �6�6� "�w�v�x�'@�V�[�[�U[�Ub�Ub��3�v�{�{�1�~�.�/���� )�&�-�-� 8�H�A�u��3�v�{�{�+�+�(.� � �A��q�(9��u� �!9��#�#�F�+� 0� �)�)�'.�v�x�'@�f�m�m�b� � � �� �!���Q�� � ��!�s*�5D�B D�AD� D6� D1�+D6�1D6c�P �tjd�tjd�tjd� tj�}tjd|���|sUtj d�tj �tj�}tjd|��� g}ttd �rCtj�}tjd �|D�cgc]}|j��}}n�ttd �rCtj�}tjd �|D�cgc]}|j��}}n�ttt t"t$t&t(t*t,t.t0t2t4t6t8t:t<t>t@g}tjd �|D�cgc]}|j��}}tjdtCtD����tjdtDjGdd����d}tI|�}tjd|�d|�d�� tjd�tjJdd�} tjd| jL���tjd�tjJd|�} tjd| jL���dtOjN�tQjR�|tC|�tTjVjGdd�d d!�tDd"�} tjd#tC|����tjd$d%jY|����tjd�| S#t $r#}tjd|���Yd}~��/d}~wwxYwcc}wcc}wcc}w#t $r#}tjd|���Yd}~�� d}~wwxYw#t $rc}d&tOjN�t[|�d'�} tjd(t[|����tjd�| cYd}~Sd}~wwxYw))u| 诊断MCP服务状态,获取系统信息和已注册工具 Returns: 包含诊断信息的字典 zP================================================================================u🔍 运行MCP服务诊断zP--------------------------------------------------------------------------------uWind API连接状态: u)Wind API未连接,尝试重新连接...u重新连接后状态: u检查Wind连接状态失败: N� get_toolsu)使用get_tools()方法获取工具列表� list_toolsu*使用list_tools()方法获取工具列表u'使用硬编码方式获取工具列表u中文指标映射数量: u$中文指标映射示例: 收盘价=r �NONEu收盘价,涨跌幅u测试转换: 'z' -> '�'u测试Wind API基本调用...z 000001.SH�rt_lastu直接调用结果: 错误码=u测试转换后参数调用...u$转换参数调用结果: 错误码=uWind API测试调用失败: �healthy�PORT�8000�fastmcp)�port� transport)r�� timestamp�hostname�registered_tools� tools_count� environmentr�u"诊断结果: 注册工具数量: u工具列表: �, r�)r�rr�u诊断失败: ).�logger�infor r��warningr�r�r�rh�mcpr��__name__r�r r�r�r�r�r�r��mcp_diagnosticsr�r�r�r�r�r�r�r�r�r�r�r�rlrr�r�r�r�r��socket� gethostname�os�environr�r|) r�r�� tool_names�tools�tool� tool_funcs�func� test_fieldsr�r�� error_results rvrrrs��� �K�K��� �K�K�,�-� �K�K��� ;��M�M�O� �� � �,�Y�K�8�9�� �N�N�F� G� �G�G�I�� � ��I� �K�K�1�)��=� >� J�� � �3� � $��M�M�O�E� �K�K�C� D�49�:�E�D�$�-�-�E�J�:� �S�,� '��N�N�$�E� �K�K�D� E�05�6���$�)�)��J�6��8�X�x�&� �O��:�x��9��)�Y� �<�%�'9� �J� �K�K�A� B�4>�?�J�D�$�-�-�J�J�?� � � �0��5K�1L�0M�N�O�� � �:�;Q�;U�;U�Va�ci�;j�:k�l�m�,� �*�;�7� �� � �o�k�]�&�� �1�E�F� =� �K�K�7� 8��U�U�;� �2�F� �K�K�8��9I�9I�8J�K� L� �K�K�8� 9��U�U�;� �2�F� �K�K�>�v�?O�?O�>P�Q� R�  ������*�*�,� *��z�?�� � ���v�v�6�&��1�  �� � � �8��Z��8I�J�K�� � �n�T�Y�Y�z�%:�$;�<�=�� � �F��� ��K �;�� � �5�a�S�9�:�:��;��;��7��@��,� =� �L�L�7��s�;� <� <�� =��* ���������V� � � � � �~�c�!�f�X�.�/�� � �F������s��BO �?P9�O;�AP9�P�*A=P9�'P�:A<P9�7BP �B:P9� O8�O3�3O8�;P9� P6�P1�+P9�1P6�6P9�9 R%�AR �R%� R%�/docsc��XK�d}tt|j�g�d��S�w)u提供服务器文档页面u� <html> <head> <title>Wind API MCP直连服务器</title> <style> body { font-family: Arial, sans-serif; max-width: 800px; margin: 0 auto; padding: 20px; } h1 { color: #333; } h2 { color: #666; margin-top: 30px; } pre { background-color: #f5f5f5; padding: 10px; border-radius: 5px; overflow-x: auto; } code { font-family: monospace; } .tool { margin-bottom: 15px; padding: 10px; border-left: 3px solid #4CAF50; background-color: #f9f9f9; } .tool h3 { margin-top: 0; color: #4CAF50; } </style> </head> <body> <h1>Wind API MCP直连服务器</h1> <p>本服务器提供Wind API的MCP接口,支持以下功能:</p> <h2>基础工具</h2> <div class="tool"> <h3>test_tool</h3> <p>测试工具可用性</p> </div> <div class="tool"> <h3>wind_connection_status</h3> <p>获取连接状态</p> </div> <div class="tool"> <h3>wind_start</h3> <p>重新启动Wind服务</p> </div> <div class="tool"> <h3>mcp_diagnostics</h3> <p>查看服务诊断信息</p> </div> <h2>Wind数据工具</h2> <div class="tool"> <h3>wind_wsq</h3> <p>获取实时行情数据</p> </div> <div class="tool"> <h3>wind_wsd</h3> <p>获取历史序列数据</p> </div> <div class="tool"> <h3>wind_wss</h3> <p>获取截面数据</p> </div> <div class="tool"> <h3>wind_wsi</h3> <p>获取分钟级历史数据</p> </div> <div class="tool"> <h3>wind_wset</h3> <p>获取数据集</p> </div> <div class="tool"> <h3>wind_tdays</h3> <p>获取交易日历</p> </div> <div class="tool"> <h3>wind_edb</h3> <p>获取经济数据库数据</p> </div> <div class="tool"> <h3>wind_weqs</h3> <p>股票筛选</p> </div> <div class="tool"> <h3>wind_wpf</h3> <p>组合查询</p> </div> <div class="tool"> <h3>wind_wgds</h3> <p>全球数据搜索</p> </div> <div class="tool"> <h3>wind_wses</h3> <p>获取板块成分股</p> </div> <div class="tool"> <h3>wind_wupf</h3> <p>更新组合</p> </div> <div class="tool"> <h3>wind_sectors</h3> <p>获取板块列表</p> </div> <h2>接口地址</h2> <ul> <li>MCP接口: <code>/mcp/</code> (FastMCP 2.6默认路径)</li> <li>文档页面: <code>/docs</code></li> <li>健康检查: <code>/health</code></li> </ul> <h2>使用示例</h2> <p>使用Python MCP客户端连接:</p> <pre><code> from fastmcp import Client # 连接到FastMCP 2.6服务器 async with Client("http://localhost:8888/mcp/") as client: # 获取上证指数最新价格 result = await client.call_tool("wind_wsq", { "codes": "000001.SH", "fields": "rt_last" }) print(result) # 获取交易日历 result = await client.call_tool("wind_tdays", { "start_date": "20230101", "end_date": "20230131" }) print(result) # 使用数据集查询股票列表 result = await client.call_tool("wind_wset", { "table_name": "sectorconstituent", "options": "date=20230601;sectorId=1000011263000000" # 上证50 }) print(result) </code></pre> </body> </html> z text/html)� media_type)r �iter�encode)� docs_htmls rv�docsr$�s5����N�I�^ � �i��� � !�"�� ��s�(*z/healthc��K� tj�}gd�}td|d|d��S#t$r#}tdt |�d�d��cYd }~Sd }~wwxYw�w) u健康检查接口)r�r�r�r�r�r�rr�r�r�r�r�r�r�r�r�r�r�r�r�z1.0.0)r��wind_connected�server_versionrr�)r�r�i�)� status_codeN)r r�r r�r|)r�rr�s rv� health_checkr)rso������M�M�O� � ����'�%��  � � �� ������V� ��� ���s0�A�',�A� A�A� A�A�A�Ac���tjd��}|jdtdd��|jdtdd ��|jd d d � �|j �}t stjd�tjd|j�d|j���ttttt t"t$t&t(t*t,t.t0t2t4t6t8t:t<g}tjddj?d�|D�����tjd|j�d|j�d�� ddl }tjd|jB��� d}tjd|���tIjJtLjN�jP}tjdtS|jU�����tjd�tjd|j�d|j�|���tLjOd|j|j|� �y#tD$r#}tjGd|���Yd}~��d}~wwxYw#tD$r�}tjGd!|���tjd"� tWjNtX|j|j|jZ�#�nH#tD$r7}tjGd$|���tjGd%�Yd}~nd}~wwxYwYd}~yYd}~yd}~wwxYw)&u 主函数uWind API MCP直连服务器)r!z--hostz 127.0.0.1u服务器主机地址)�typer,�helpz--porti@u服务器端口z--reload� store_trueu启用热重载)�actionr,u/Wind API未连接,某些功能可能不可用u%启动Wind API MCP直连服务器在 �:u已注册的工具: r c3�4K�|]}|j���y�w�N)r)�.0rs rv� <genexpr>zmain.<locals>.<genexpr>�s����0V�:�4����:�s�u访问文档: http://rrNuFastMCP版本: u!获取FastMCP版本信息失败: z/mcpuFastMCP服务器路径: uFastMCP.run方法参数: u启动FastMCP服务器...u+使用FastMCP 2.6运行,请访问 http://zstreamable-http)r�hostr�pathuFastMCP启动失败: u回退到uvicorn启动方式...)r4r�reloaduuvicorn启动也失败: uT服务器启动失败,请检查端口是否被占用或环境是否配置正确。).�argparse�ArgumentParser� add_argumentr|�int� parse_argsr�r rrr4rr�r�r�r�r�r�rr�r�r�r�r�r�r�r�r�r�r�r�r�r� __version__r�r��inspect� signaturer�run� parametersr��keys�uvicorn�appr6)�parser�argsrrr��mcp_path� run_params�e2s rv�mainrI�s��� � $� $�1N� O�F� ���� �� $� ��  ���� �� � ��  ����� ��� � � � �D� ����H�I� �K�K�7�� � �{�!�D�I�I�;�O�P� �8�X�x�� �O��:�x��9��)�Y� �<��1� �J� �K�K�&�t�y�y�0V�:�0V�'V�&W�X�Y� �K�K�'�� � �{�!�D�I�I�;�e�D�E�>��� � �o�g�&9�&9�%:�;�<� !q���� � �.�x�j�9�:��&�&�s�w�w�/�:�:� �� � �/��Z�_�_�5F�0G�/H�I�J� � � �/�0� � � �A�$�)�)��A�d�i�i�[�Ya�Xb�c�d� ���'�������� � ��# �>�� � �8���<�=�=��>��. �q�� � �,�Q�C�0�1�� � �5�6� q� �K�K���Y�Y��Y�Y��{�{�  �� � q� �L�L�3�B�4�8� 9� �L�L�o� p� p�� q�� p� �� q�s[�7&J�C)J7� J4�J/�/J4�7 M<�-M7�.;L*�)M7�* M*�3-M%� M7�%M*�*M7�7M<�__main__)r�)r�Fr1)r�r�r�)H�__doc__r7r=�loggingrrr��typingrrrrr�pandasrmrB�fastapir�fastapi.responsesr r �WindPyr rr rr�r�r�� basicConfig�INFO� getLoggerr rCrr�r�r�rrr�r�r�rwr�rr|r�r��boolr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr�r$r)rIrr�rxrv�<module>rVsA ������ � � �3�3����=������������ � �k� � #�I� ��������������������O���H�� ��!�"�$�#�$ �g�%�&��'�(��)��4.�C�7�\� �%�C�<�E� �%�=�<�M� ���2&�"�#�"� � � �&�������  �� �)� � �*� � �+� � �K� � �+�  � �;�  � �+�  � �K� � �,� � �K� � �,� � �%� � �-� � �3� � �,� � �.� � �*�! �" �0�# �&�+�30��lG� �������� ��* � �.� � �.� � �>� � �>�  � �>�  � �>�  � �>� � �>� � �>� � �>� � �;� � �N� � �;� � �;� � �;� � �;�! �" �N�# �$�!�' �* �-�-3��l���� �,�,� A�� �� � �,� -���0�1���j���� �A�G�G�I� �1�=�=�?�L� �K�K�)�,��8�9� ����1�2��2%�R���� �4��S��>� � � �����68�!� �!��!�&.�s�m�!� �#�s�(�^�!� �!�B����  �!� +!� �+!� �+!��+!�� +!� �c�]� +!� �D�>� +!� �#�s�(�^�+!� �+!�^���� �!� '!� �'!� �'!��c�]�'!� �D�>� '!�  �#�s�(�^� '!� �'!�V���� 5��S�$�Y�� 5� � 5����� �D��c��N� � � �*����!�H�S�M�!�T�#�s�(�^�!� �!�*����!�h�s�m�!�t�C��H�~�!� �!�F���� �!�'!��'!� �c�]�'!� �D�>�'!� �#�s�(�^� '!� �'!�V���� �#!��#!��#!��c�]�#!� �#�s�(�^� #!� �#!�N����  �!� (!� �(!� �(!��(!�� (!� �c�]� (!� �D�>� (!� �#�s�(�^�(!� �(!�X����!#� �� "!� �"!��� �"!��s�m�"!��c�]� "!�  �#�s�(�^� "!� �"!�L���� �!��!� �c�]�!� �#�s�(�^�!� �!�<���� �!��!� �!��c�]�!� �#�s�(�^� !� �!�>���� �!��!� �c�]�!� �#�s�(�^�!� �!�:���� �!��!� �!��c�]�!� �#�s�(�^� !� �!�>���� �&!��&!��T�#�s�(�^�$�&!��c�]�&!� �#�s�(�^� &!� �&!�T���� �"!��"!� �c�]�"!� �#�s�(�^�"!� �"!�L����b��c�3�h��b� �b�L�����T��T�p��������6Rq�j �z���F���{ �� �L�L�-�a�S�1�2��L���s�;A T�T.� T)�)T.

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/abuttoncc/wind-mcp'

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