US Stock Data MCP Server
by mingyaw
This is a Model Context Protocol (MCP) server designed for accessing and updating US stock historical price data. It leverages local data storage and automatic updates from Yahoo Finance.
View on GitHub
Last updated: N/A
US Stock Data MCP Server
A Model Context Protocol (MCP) server designed for accessing and updating US stock historical price data.
Features
- Local Data Storage: Store stock data in CSV format locally for quick access
- Automatic Updates: Support for automatic stock data updates from Yahoo Finance
- Safe Data Writing: Use temporary files to ensure atomic and secure data writing
- Flexible Time Range: Customizable start date for data updates
Installation
- Ensure Python 3.x is installed
- Clone this repository
- Install dependencies:
pip install -r requirements.txt
Usage
1. Start the Server
python server.py
The default data storage path after server startup is: ~/Library/Application Support/us-market-data/data
You can customize the data storage path using the US_STOCK_DATA_DIR
environment variable.
2. Available Features
MCP Tools
-
get_local_stock_data
- Function: Retrieve local stock historical data
- Parameters:
symbol
: Stock symbol, e.g., 'AAPL', 'MSFT'
-
update_stock_data
- Function: Update stock data
- Parameters:
symbol
: Stock symbol, e.g., 'AAPL', 'MSFT'start_date
: Start date in YYYY-MM-DD format, defaults to 2015-01-01
MCP Resources
- Resource URI:
usstock://{symbol}/historical
- Function: Provide local US stock historical price data
- Parameters:
symbol
: Stock symbol
Data Format
The stored stock data includes the following fields:
- Date: Trading date
- Open: Opening price
- High: Highest price
- Low: Lowest price
- Close: Closing price
- Volume: Trading volume
Dependencies
- mcp: MCP protocol implementation
- pandas: Data processing and analysis
- yfinance: Yahoo Finance data retrieval
- pydantic: Data validation and settings management
Notes
- Duplicate data is automatically handled during updates, keeping the latest records
- A 5-second delay is implemented between update operations to avoid frequent API requests
- All data operations include error handling to ensure service stability