get_stock_market_cap
Retrieve market capitalization data for specific KOSPI/KOSDAQ stocks over defined date ranges to analyze company valuation and market performance.
Instructions
Retrieves market capitalization data for a specific stock.
Args:
fromdate (str): Start date for retrieval (YYYYMMDD)
todate (str): End date for retrieval (YYYYMMDD)
ticker (str): Stock ticker symbol
Returns:
DataFrame:
>> get_stock_market_cap("20150720", "20150724", "005930")
Market Cap Volume Trading Value Listed Shares
Date
2015-07-24 181030885173000 196584 241383636000 147299337
2015-07-23 181767381858000 208965 259446564000 147299337
2015-07-22 184566069261000 268323 333813094000 147299337
2015-07-21 186039062631000 194055 244129106000 147299337
2015-07-20 187806654675000 128928 165366199000 147299337
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| fromdate | Yes | ||
| todate | Yes | ||
| ticker | Yes |
Implementation Reference
- kospi_kosdaq_stock_server.py:237-302 (handler)The handler function decorated with @mcp.tool() implements the get_stock_market_cap tool. It validates dates and ticker, calls pykrx.get_market_cap, converts the DataFrame to a sorted dictionary and returns it.@mcp.tool() def get_stock_market_cap(fromdate: Union[str, int], todate: Union[str, int], ticker: Union[str, int]) -> Dict[str, Any]: """Retrieves market capitalization data for a specific stock. Args: fromdate (str): Start date for retrieval (YYYYMMDD) todate (str): End date for retrieval (YYYYMMDD) ticker (str): Stock ticker symbol Returns: DataFrame: >> get_stock_market_cap("20150720", "20150724", "005930") Market Cap Volume Trading Value Listed Shares Date 2015-07-24 181030885173000 196584 241383636000 147299337 2015-07-23 181767381858000 208965 259446564000 147299337 2015-07-22 184566069261000 268323 333813094000 147299337 2015-07-21 186039062631000 194055 244129106000 147299337 2015-07-20 187806654675000 128928 165366199000 147299337 """ # Validate and convert date format def validate_date(date_str: Union[str, int]) -> str: try: if isinstance(date_str, int): date_str = str(date_str) # Convert if in YYYY-MM-DD format if '-' in date_str: parsed_date = datetime.strptime(date_str, '%Y-%m-%d') return parsed_date.strftime('%Y%m%d') # Validate if in YYYYMMDD format datetime.strptime(date_str, '%Y%m%d') return date_str except ValueError: raise ValueError(f"Date must be in YYYYMMDD format. Input value: {date_str}") def validate_ticker(ticker_str: Union[str, int]) -> str: if isinstance(ticker_str, int): return str(ticker_str) return ticker_str try: fromdate = validate_date(fromdate) todate = validate_date(todate) ticker = validate_ticker(ticker) logging.debug(f"Retrieving stock market capitalization data: {ticker}, {fromdate}-{todate}") # Call get_market_cap df = get_market_cap(fromdate, todate, ticker) # Convert DataFrame to dictionary result = df.to_dict(orient='index') # Convert datetime index to string and sort in reverse sorted_items = sorted( ((k.strftime('%Y-%m-%d'), v) for k, v in result.items()), reverse=True ) result = dict(sorted_items) return result except Exception as e: error_message = f"Data retrieval failed: {str(e)}" logging.error(error_message) return {"error": error_message}