Spaces:
Sleeping
Sleeping
| from mcp.server.fastmcp import FastMCP | |
| import yfinance as yf | |
| # Initialize the MCP Server | |
| import os | |
| port = int(os.environ.get("PORT", "8001")) | |
| mcp = FastMCP( | |
| name="Stock Market Data Server", | |
| description="Provides tools for fetching historical stock prices and market data with real-time updates via SSE.", | |
| host="0.0.0.0", | |
| port=port, | |
| stateless_http=True, | |
| ) | |
| async def get_historical_stock_data(ticker: str) -> str: | |
| """ | |
| Fetches recent historical stock data (Open, High, Low, Close, Volume) for a given stock ticker. | |
| The input must be a single, valid stock ticker symbol (e.g., 'TSLA'). | |
| Returns data for the last 30 days. | |
| """ | |
| try: | |
| stock = yf.Ticker(ticker) | |
| # Fetch data for the last 30 days | |
| hist_data = stock.history(period="30d") | |
| if hist_data.empty: | |
| return f"No stock data found for ticker {ticker}." | |
| return f"Recent stock data for {ticker}:\n{hist_data.to_string()}" | |
| except Exception as e: | |
| return f"An error occurred while fetching stock data: {e}" | |
| def get_ohlc_definitions() -> str: | |
| """Provides definitions for standard stock data columns (OHLCV).""" | |
| return """ | |
| - Open: The price at which a stock first traded upon the opening of an exchange on a given day. | |
| - High: The highest price at which a stock traded during the course of a day. | |
| - Low: The lowest price at which a stock traded during the course of a day. | |
| - Close: The last price at which a stock traded during a regular trading day. | |
| - Volume: The total number of shares traded for a stock in a day. | |
| """ | |
| if __name__ == "__main__": | |
| # Use streamable HTTP transport with MCP endpoint | |
| print(f"Stock Data Server running on http://localhost:{port}") | |
| print("MCP endpoint available at:") | |
| print(f"- http://localhost:{port}/mcp") | |
| mcp.run(transport="streamable-http") | |