income
Retrieve income statement data for specific stocks from Xueqiu MCP, enabling analysis of financial performance with customizable parameters for reporting periods and data quantity.
Instructions
获取利润表数据
Args:
stock_code: 股票代码
is_annals: 只获取年报,默认为1
count: 返回数据数量,默认5条
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| stock_code | No | SZ000002 | |
| is_annals | No | ||
| count | No |
Implementation Reference
- main.py:154-164 (handler)The handler function for the 'income' MCP tool. It is decorated with @mcp.tool() for automatic registration. Fetches profit table data from pysnowball library (ball.income) and processes the result with timestamp conversion.@mcp.tool() def income(stock_code: str="SZ000002", is_annals: int = 1, count: int = 5) -> dict: """获取利润表数据 Args: stock_code: 股票代码 is_annals: 只获取年报,默认为1 count: 返回数据数量,默认5条 """ result = ball.income(symbol=stock_code, is_annals=is_annals, count=count) return process_data(result)
- main.py:154-154 (registration)The @mcp.tool() decorator registers the 'income' function as an MCP tool.@mcp.tool()
- main.py:34-61 (helper)Helper function used by the 'income' tool (and others) to process the raw data, converting timestamps to readable datetime strings.def process_data(data, process_config=None): """ 通用数据处理函数,可扩展添加各种数据处理操作 Args: data: 原始数据 process_config: 处理配置字典,用于指定要执行的处理操作 例如: {'convert_timestamps': True, 'other_process': params} Returns: 处理后的数据 """ if process_config is None: # 默认配置 process_config = { 'convert_timestamps': True } # 如果开启了时间戳转换 if process_config.get('convert_timestamps', True): data = convert_timestamps(data) # 在这里可以添加更多的数据处理逻辑 # 例如: # if 'format_numbers' in process_config: # data = format_numbers(data, **process_config['format_numbers']) return data
- main.py:14-31 (helper)Supporting utility for recursive timestamp conversion in data processing, used indirectly by the 'income' tool.def convert_timestamps(data): """递归地将数据中的所有 timestamp 转换为 datetime 字符串""" if isinstance(data, dict): for key, value in list(data.items()): if key == 'timestamp' and isinstance(value, (int, float)) and value > 1000000000000: # 毫秒级时间戳 data[key] = datetime.datetime.fromtimestamp(value/1000).strftime('%Y-%m-%d %H:%M:%S') elif key == 'timestamp' and isinstance(value, (int, float)) and value > 1000000000: # 秒级时间戳 data[key] = datetime.datetime.fromtimestamp(value).strftime('%Y-%m-%d %H:%M:%S') elif key.endswith('_date') and isinstance(value, (int, float)) and value > 1000000000000: # 毫秒级时间戳 data[key] = datetime.datetime.fromtimestamp(value/1000).strftime('%Y-%m-%d %H:%M:%S') elif key.endswith('_date') and isinstance(value, (int, float)) and value > 1000000000: # 秒级时间戳 data[key] = datetime.datetime.fromtimestamp(value).strftime('%Y-%m-%d %H:%M:%S') elif isinstance(value, (dict, list)): data[key] = convert_timestamps(value) elif isinstance(data, list): for i, item in enumerate(data): data[i] = convert_timestamps(item) return data