A Model Context Protocol server providing real-time stock data and options analysis through Yahoo Finance, enabling LLMs to access market data, analyze stocks, and evaluate options strategies.
A Model Context Protocol (MCP) server providing real-time stock data and options analysis through Yahoo Finance. Enables LLMs to access market data, analyze stocks, and evaluate options strategies.
# Install dependencies pip install mcp yfinance # Clone the repository git clone https://github.com/twolven/stockflow cd stockflow
git clone https://github.com/twolven/mcp-stockflow.git cd mcp-stockflow
pip install -r requirements.txt
claude-desktop-config.json
, add the following to the mcpServers
section:{ "mcpServers": { "stockflow": { "command": "python", "args": ["path/to/stockflow.py"] } } }
Replace "path/to/stockflow.py" with the full path to where you saved the stockflow.py file.
When working with Claude, you can use this prompt to help it understand the available tools:
"I've enabled the stockflow tools which give you access to stock market data. You can use these three main functions:
get_stock_data
- Get comprehensive stock info:{ "symbol": "AAPL", "include_financials": true, # optional "include_analysis": true, # optional "include_calendar": true # optional }
get_historical_data
- Get price history and technical indicators:{ "symbol": "AAPL", "period": "1y", # 1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max "interval": "1d", # 1m, 2m, 5m, 15m, 30m, 60m, 90m, 1h, 1d, 5d, 1wk, 1mo, 3mo "prepost": false # optional - include pre/post market data }
get_options_chain
- Get options data:{ "symbol": "AAPL", "expiration_date": "2024-12-20", # optional - uses nearest date if not specified "include_greeks": true # optional }
All responses include current price data, error handling, and comprehensive market information."
python stockflow.py
from mcp import ClientSession, StdioServerParameters from mcp.client.stdio import stdio_client server_params = StdioServerParameters( command="python", args=["stockflow.py"] ) async def run(): async with stdio_client(server_params) as (read, write): async with ClientSession(read, write) as session: await session.initialize() # Get current stock data result = await session.call_tool( "get-stock-data", arguments={"symbol": "AAPL"} ) # Get options chain options = await session.call_tool( "get-options-chain", arguments={ "symbol": "AAPL", "expiration_date": "2024-12-20" } ) if __name__ == "__main__": import asyncio asyncio.run(run())
get-stock-data
get-historical-data
get-options-chain
company-info://{symbol}
financials://{symbol}
analyze-options
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
Todd Wolven - (https://github.com/twolven)
Discover shared experiences
Shared threads will appear here, showcasing real-world applications and insights from the community. Check back soon for updates!