get_zz500_stocks
Retrieve CSI 500 index constituents with date filtering and customizable output formats for A-share market analysis.
Instructions
CSI 500 constituents.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ||
| limit | No | ||
| format | No | markdown |
Implementation Reference
- src/tools/indices.py:49-55 (handler)The main handler function for the 'get_zz500_stocks' MCP tool. It is decorated with @app.tool() for registration and delegates execution to the use case layer via run_tool_with_handling.@app.tool() def get_zz500_stocks(date: Optional[str] = None, limit: int = 250, format: str = "markdown") -> str: """CSI 500 constituents.""" return run_tool_with_handling( lambda: fetch_index_constituents(active_data_source, index="zz500", date=date, limit=limit, format=format), context="get_zz500_stocks", )
- src/use_cases/indices.py:25-35 (helper)Use case helper function that fetches ZZ500 stocks by mapping 'zz500' to data_source.get_zz500_stocks(), validates input, and formats the output as markdown table.def fetch_index_constituents(data_source: FinancialDataSource, *, index: str, date: Optional[str], limit: int, format: str) -> str: validate_output_format(format) key = validate_index_key(index, INDEX_MAP) if key == "hs300": df = data_source.get_hs300_stocks(date=date) elif key == "sz50": df = data_source.get_sz50_stocks(date=date) else: df = data_source.get_zz500_stocks(date=date) meta = {"index": key, "as_of": date or "latest"} return format_table_output(df, format=format, max_rows=limit, meta=meta)
- src/baostock_data_source.py:578-581 (helper)Concrete implementation of get_zz500_stocks in BaostockDataSource, invoking the Baostock library's query_zz500_stocks via a shared helper.def get_zz500_stocks(self, date: Optional[str] = None) -> pd.DataFrame: """Fetches CSI 500 index constituents using Baostock.""" return _fetch_index_constituent_data(bs.query_zz500_stocks, "CSI 500", date)
- src/data_source_interface.py:199-201 (schema)Interface definition (schema) for the get_zz500_stocks method in FinancialDataSource abstract base class.@abstractmethod def get_zz500_stocks(self, date: Optional[str] = None) -> pd.DataFrame: pass