get_balance_sheet
Retrieve company balance sheet data for Chinese stocks to analyze financial position, assets, and liabilities. Supports multiple output formats including JSON, CSV, and Excel.
Instructions
获取公司的资产负债表
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | 股票代码 (例如: '000001') | |
| output_format | No | 输出数据格式: json, csv, xml, excel, markdown, html。默认: markdown | markdown |
Implementation Reference
- src/china_stock_mcp/server.py:328-328 (registration)Registration of the get_balance_sheet tool using the @mcp.tool decorator.@mcp.tool(name="get_balance_sheet", description="获取公司的资产负债表")
- src/china_stock_mcp/server.py:329-340 (handler)The handler function that implements the core logic: fetches balance sheet data via ako.get_balance_sheet(symbol, source='sina'), handles empty DataFrame, and formats output using _format_dataframe_output.def get_balance_sheet( symbol: Annotated[str, Field(description="股票代码 (例如: '000001')")], output_format: Annotated[ Literal["json", "csv", "xml", "excel", "markdown", "html"], Field(description="输出数据格式: json, csv, xml, excel, markdown, html。默认: markdown"), ] = "markdown" ) -> str: """获取公司资产负债表数据.""" df = ako.get_balance_sheet(symbol=symbol, source="sina") if df.empty: df = pd.DataFrame() return _format_dataframe_output(df, output_format)
- Pydantic-based input schema using Annotated and Field for symbol (stock code) and output_format (json/csv/etc.).symbol: Annotated[str, Field(description="股票代码 (例如: '000001')")], output_format: Annotated[ Literal["json", "csv", "xml", "excel", "markdown", "html"], Field(description="输出数据格式: json, csv, xml, excel, markdown, html。默认: markdown"), ] = "markdown"
- src/china_stock_mcp/server.py:89-117 (helper)Supporting utility function to format the fetched DataFrame into various output formats (json, csv, etc.) used by the handler.def _format_dataframe_output( df: pd.DataFrame, output_format: Literal["json", "csv", "xml", "excel", "markdown", "html"], ) -> str: """ 根据指定的格式格式化 DataFrame 输出。 """ if df.empty: return json.dumps([]) if output_format == "json": return df.to_json(orient="records", force_ascii=False) elif output_format == "csv": return df.to_csv(index=False) elif output_format == "xml": return df.to_xml(index=False) elif output_format == "excel": # 使用 BytesIO 将 Excel 写入内存 output = io.BytesIO() df.to_excel(output, index=False, engine='openpyxl') # 返回 base64 编码的二进制数据,或者直接返回字节流 # 为了兼容性,这里尝试返回 utf-8 编码的字符串,但对于二进制文件,通常直接传输字节流更合适 return output.getvalue().decode("utf-8", errors="ignore") elif output_format == "markdown": return df.to_markdown(index=False) elif output_format == "html": return df.to_html(index=False) else: return df.to_json(orient="records", force_ascii=False)