Skip to main content
Glama
24mlight

A Share MCP

get_sz50_stocks

Retrieve the current constituents of the SZSE 50 index to analyze top-performing A-share stocks listed on the Shenzhen Stock Exchange.

Instructions

SZSE 50 constituents.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dateNo
limitNo
formatNomarkdown

Implementation Reference

  • Primary MCP tool handler for 'get_sz50_stocks'. Registered via @app.tool() decorator. Delegates execution to the use-cases layer via run_tool_with_handling.
    @app.tool() def get_sz50_stocks(date: Optional[str] = None, limit: int = 250, format: str = "markdown") -> str: """SZSE 50 constituents.""" return run_tool_with_handling( lambda: fetch_index_constituents(active_data_source, index="sz50", date=date, limit=limit, format=format), context="get_sz50_stocks", )
  • mcp_server.py:51-58 (registration)
    Registration block in main server file where register_index_tools is called to register the index tools including get_sz50_stocks.
    register_stock_market_tools(app, active_data_source) register_financial_report_tools(app, active_data_source) register_index_tools(app, active_data_source) register_market_overview_tools(app, active_data_source) register_macroeconomic_tools(app, active_data_source) register_date_utils_tools(app, active_data_source) register_analysis_tools(app, active_data_source) register_helpers_tools(app)
  • Use case helper function invoked by the tool handler. Routes 'sz50' requests to data_source.get_sz50_stocks() and formats the output.
    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)
  • Concrete data source implementation for fetching SZSE 50 stocks using Baostock API via helper function.
    def get_sz50_stocks(self, date: Optional[str] = None) -> pd.DataFrame: """Fetches SZSE 50 index constituents using Baostock.""" return _fetch_index_constituent_data(bs.query_sz50_stocks, "SZSE 50", date)
  • Shared helper function in BaostockDataSource used by get_sz50_stocks to query and process Baostock API response.
    def _fetch_index_constituent_data( bs_query_func, index_name: str, date: Optional[str] = None ) -> pd.DataFrame: logger.info( f"Fetching {index_name} constituents for date={date or 'latest'}") try: with baostock_login_context(): # date is optional, defaults to latest rs = bs_query_func(date=date) if rs.error_code != '0': logger.error( f"Baostock API error ({index_name} Constituents) for date {date}: {rs.error_msg} (code: {rs.error_code})") if "no record found" in rs.error_msg.lower() or rs.error_code == '10002': raise NoDataFoundError( f"No {index_name} constituent data found for date {date}. Baostock msg: {rs.error_msg}") else: raise DataSourceError( f"Baostock API error fetching {index_name} constituents: {rs.error_msg} (code: {rs.error_code})") data_list = [] while rs.next(): data_list.append(rs.get_row_data()) if not data_list: logger.warning( f"No {index_name} constituent data found for date {date} (empty result set).") raise NoDataFoundError( f"No {index_name} constituent data found for date {date} (empty result set).") result_df = pd.DataFrame(data_list, columns=rs.fields) logger.info( f"Retrieved {len(result_df)} {index_name} constituents for date {date or 'latest'}.") return result_df except (LoginError, NoDataFoundError, DataSourceError, ValueError) as e: logger.warning( f"Caught known error fetching {index_name} constituents for date {date}: {type(e).__name__}") raise e except Exception as e: logger.exception( f"Unexpected error fetching {index_name} constituents for date {date}: {e}") raise DataSourceError( f"Unexpected error fetching {index_name} constituents for date {date}: {e}")

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/24mlight/a_share_mcp_is_just_I_need'

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