yfinance
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@yfinance get current stock price for AAPL"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Yahoo Finance Server
A production-ready Model Context Protocol (MCP) server providing comprehensive access to Yahoo Finance data through 18 specialized tools. Features intelligent caching, multi-market support, and complete type safety.
π Features
18 Comprehensive Tools - Complete coverage of pricing, financials, options, holders, and news
Intelligent SQLite Caching - Reduces latency by 90% with TTL-based cache management
Multi-Market Support - Works globally with configurable market normalization (US, BR, UK, DE, FR, JP, IN, HK, AU, CA, and more)
Type-Safe - Full Pydantic models with complete type hints throughout
Production-Ready - Robust error handling with custom exception hierarchy
Zero Configuration - Deploy instantly via
uvxwith no setup requiredAsync/Await - Optimized for concurrent operations
Related MCP server: MCP Yahoo Finance
π Quick Start
Installation via uvx (Recommended)
Add to your Claude Desktop configuration (claude_desktop_config.json):
{
"mcpServers": {
"yfinance": {
"command": "uvx",
"args": ["mcp-yfinance"],
"env": {
"YFINANCE_DEFAULT_MARKET": "US"
}
}
}
}Manual Installation
# Install with pip
pip install mcp-yfinance
# Or install from source
git clone https://github.com/yourusername/mcp-yfinance.git
cd mcp-yfinance
pip install -e .π οΈ Configuration
Market Selection
Set your default market via environment variable:
# US stocks (default)
export YFINANCE_DEFAULT_MARKET=US
# Brazilian stocks (auto-adds .SA suffix)
export YFINANCE_DEFAULT_MARKET=BR
# UK stocks (auto-adds .L suffix)
export YFINANCE_DEFAULT_MARKET=UK
# Indian stocks - NSE (auto-adds .NS suffix)
export YFINANCE_DEFAULT_MARKET=IN_NSE
# Indian stocks - BSE (auto-adds .BO suffix)
export YFINANCE_DEFAULT_MARKET=IN_BSESupported Markets:
US- United States (no suffix)BR- Brazil (.SA)UK- United Kingdom (.L)DE- Germany (.DE)FR- France (.PA)JP- Japan (.T)IN_NSE- India NSE (.NS)IN_BSE- India BSE (.BO)HK- Hong Kong (.HK)AU- Australia (.AX)CA- Canada (.TO)
Cache Configuration
Cache is automatically created at ~/.mcp-yfinance/cache.db with the following TTLs:
Data Type | TTL | Use Case |
Current Quotes | 5 min | Real-time price tracking |
Option Chains | 5 min | Options trading |
News | 30 min | Recent news updates |
Stock Info | 1 hour | Company information |
Historical Data | 24 hours | Price history |
Financial Statements | 24 hours | Quarterly/annual reports |
Holders | 24 hours | Ownership data |
Recommendations | 24 hours | Analyst ratings |
π Available Tools
Pricing & Historical Data (6 tools)
1. get_current_stock_price
Get current stock price with day change information.
Input:
{
"symbol": "AAPL"
}Output:
{
"symbol": "AAPL",
"price": 234.56,
"change": 2.34,
"change_percent": 1.01,
"volume": 52487900,
"currency": "USD",
"timestamp": "2025-01-15T16:00:00"
}2. get_stock_price_by_date
Get closing price for a specific date.
Input:
{
"symbol": "MSFT",
"date": "2025-01-10"
}3. get_stock_price_date_range
Get price series for a date range.
Input:
{
"symbol": "GOOGL",
"start_date": "2025-01-01",
"end_date": "2025-01-15"
}4. get_historical_stock_prices
Get full OHLCV (Open, High, Low, Close, Volume) historical data.
Input:
{
"symbol": "TSLA",
"period": "1mo",
"interval": "1d"
}Supported periods: 1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max
Supported intervals: 1m, 2m, 5m, 15m, 30m, 60m, 90m, 1h, 1d, 5d, 1wk, 1mo, 3mo
5. get_dividends
Get complete dividend payment history.
6. get_stock_actions
Get all stock actions (dividends + splits).
Company Information (1 tool)
7. get_stock_info
Get comprehensive company information (~100 fields).
Output includes:
Company name, sector, industry
Market cap, enterprise value
P/E ratio, dividend yield
52-week high/low
Beta, trailing EPS
And much more...
Financial Statements (3 tools)
8. get_income_statement
Get income statement (DRE - DemonstraΓ§Γ£o de Resultados do ExercΓcio).
Input:
{
"symbol": "AAPL",
"freq": "yearly"
}Frequencies: yearly, quarterly, trailing
9. get_balance_sheet
Get balance sheet (BalanΓ§o Patrimonial).
10. get_cashflow
Get cash flow statement.
Holders & Ownership (1 tool)
11. get_holder_info
Get holder information with 6 different types.
Input:
{
"symbol": "NVDA",
"holder_type": "institutional_holders"
}Holder types:
major_holders- Major ownership percentagesinstitutional_holders- Institutional investorsmutualfund_holders- Mutual fund holdingsinsider_transactions- Recent insider tradesinsider_purchases- Insider buy transactionsinsider_roster_holders- Current insider roster
Options (2 tools)
12. get_option_expiration_dates
Get all available option expiration dates.
Output:
["2025-01-17", "2025-01-24", "2025-02-21", ...]13. get_option_chain
Get option chain for specific expiration date.
Input:
{
"symbol": "SPY",
"expiration_date": "2025-01-17",
"option_type": "both"
}Option types: calls, puts, both
Output includes:
Contract symbols
Strike prices
Last prices, bid, ask
Volume and open interest
Implied volatility
News & Analysis (5 tools)
14. get_news
Get recent news articles.
Output:
[
{
"title": "Apple announces new iPhone",
"summary": "...",
"url": "https://...",
"provider": "Reuters",
"publishedAt": "2025-01-15T10:30:00Z"
}
]15. get_recommendations
Get analyst recommendations and upgrades/downgrades.
Input:
{
"symbol": "TSLA",
"recommendation_type": "upgrades_downgrades",
"months_back": 12
}Recommendation types: recommendations, upgrades_downgrades
16. get_earning_dates
Get earnings announcement dates (past and future).
Input:
{
"symbol": "META",
"limit": 12
}17. get_stock_splits
Get historical stock split data.
Input:
{
"symbol": "AAPL"
}Output:
[
{
"date": "2020-08-31",
"ratio": 4.0
},
{
"date": "2014-06-09",
"ratio": 7.0
}
]18. get_analyst_price_targets
Get analyst price targets and estimates.
Input:
{
"symbol": "NVDA"
}Output includes:
Current price
Target mean, median, high, low
Number of analysts
Recommendation (buy/hold/sell)
π‘ Usage Examples
With Claude Desktop
User: What's the current price of Apple stock?
Claude: [Uses get_current_stock_price tool]
Apple (AAPL) is currently trading at $234.56, up $2.34 (1.01%) today.
User: Show me Microsoft's quarterly revenue for the last year
Claude: [Uses get_income_statement with freq="quarterly"]
Here's Microsoft's quarterly revenue...
User: Get Tesla call options expiring next month
Claude: [Uses get_option_expiration_dates, then get_option_chain]
Here are Tesla's call options for 2025-02-21...Brazilian Market Example
{
"mcpServers": {
"yfinance-br": {
"command": "uvx",
"args": ["mcp-yfinance"],
"env": {
"YFINANCE_DEFAULT_MARKET": "BR"
}
}
}
}User: Qual o preΓ§o atual de PETR4?
Claude: [Automatically normalizes to PETR4.SA]
Petrobras PN (PETR4.SA) estΓ‘ cotada a R$ 38.45...ποΈ Architecture
ββββββββββββββββββββββββββββββββββββ
β Claude Desktop / API Client β
β (User makes stock queries) β
ββββββββββββββ¬ββββββββββββββββββββββ
β stdio
ββββββββββββββΌββββββββββββββββββββββ
β server.py (MCP Protocol) β ββββ Tool registration
β - @server.list_tools() β Input validation
β - @server.call_tool() β Response formatting
ββββββββββββββ¬ββββββββββββββββββββββ
β
ββββββββββββββΌββββββββββββββββββββββ
β cache.py (Cache Layer) β ββββ TTL-based caching
β - Check cache by key β 5min: quotes
β - Return if valid β 1h: stock info
β - Pass through if miss β 24h: historical
ββββββββββββββ¬ββββββββββββββββββββββ
β (cache miss)
ββββββββββββββΌββββββββββββββββββββββ
β service.py (Business Logic) β ββββ YahooFinanceService
β - Normalize ticker β Input validation
β - Call yfinance β Data transformation
β - Map to Pydantic models β Error handling
β - Save to cache β Market normalization
ββββββββββββββ¬ββββββββββββββββββββββ
β
ββββββββββββββΌββββββββββββββββββββββ
β yfinance library β
β (Yahoo Finance API) β
ββββββββββββββββββββββββββββββββββββProject Structure
mcp-yfinance/
βββ src/
β βββ mcp_yfinance/
β βββ __init__.py # Version, exports, main()
β βββ __main__.py # CLI entry point
β βββ server.py # MCP server orchestration
β βββ service.py # Business logic (18 methods)
β βββ models.py # Pydantic schemas + Enums
β βββ cache.py # SQLite cache manager
β βββ exceptions.py # Custom exception hierarchy
β βββ utils.py # Helper functions
β βββ config.py # Configuration management
β βββ py.typed # Type checking marker
βββ tests/ # Test suite
βββ pyproject.toml # Package configuration
βββ README.md # This fileπ§ͺ Development
Setup Development Environment
# Clone repository
git clone https://github.com/yourusername/mcp-yfinance.git
cd mcp-yfinance
# Install with dev dependencies
pip install -e ".[dev]"
# Or with uv (recommended)
uv pip install -e ".[dev]"Running Tests
# Run all tests
pytest
# Run with coverage
pytest --cov=mcp_yfinance --cov-report=html
# Run specific test file
pytest tests/test_service.pyType Checking
# Run mypy
mypy src/mcp_yfinance
# Run ruff (linter + formatter)
ruff check src/mcp_yfinance
ruff format src/mcp_yfinanceTesting the Server
# Run server directly
python -m mcp_yfinance
# Test with MCP Inspector
npx @modelcontextprotocol/inspector uv run mcp-yfinance
# Test with environment variable
YFINANCE_DEFAULT_MARKET=BR python -m mcp_yfinanceπ§ Troubleshooting
Common Issues
Issue: "Ticker not found"
Make sure the ticker symbol is correct
Check if you're using the right market (US vs BR vs UK, etc.)
Some tickers may not be available on Yahoo Finance
Issue: "Cache permission denied"
Ensure
~/.mcp-yfinance/directory is writableCheck disk space
Issue: "Module not found"
Reinstall package:
pip install --force-reinstall mcp-yfinanceCheck Python version (requires β₯3.10)
Issue: "SSL certificate verification failed"
Set
verify=Falsein service initialization (not recommended for production)Update CA certificates:
pip install --upgrade certifi
π€ Contributing
Contributions are welcome! Please follow these guidelines:
Fork the repository
Create a feature branch (
git checkout -b feature/amazing-feature)Write tests for new functionality
Ensure all tests pass (
pytest)Run type checking (
mypy src/mcp_yfinance)Format code (
ruff format)Commit changes (
git commit -m 'Add amazing feature')Push to branch (
git push origin feature/amazing-feature)Open a Pull Request
Code Standards
All code in English (comments, docstrings, variable names)
Complete type hints on all functions
Google-style docstrings
Test coverage β₯80%
Pass mypy strict mode
π License
This project is licensed under the MIT License - see the LICENSE file for details.
π Acknowledgments
yfinance - Yahoo Finance API wrapper
MCP - Model Context Protocol
Pydantic - Data validation
Anthropic - Claude AI
π Support
Issues: GitHub Issues
Discussions: GitHub Discussions
Email: your.email@example.com
πΊοΈ Roadmap
v0.2.0 (Planned)
Advanced retry logic with exponential backoff
Rate limiting protection
WebSocket support for real-time quotes
Additional markets (CN, KR, TW, etc.)
v0.3.0 (Future)
Multiple data sources (Alpha Vantage, IEX Cloud)
Backtesting tools
Technical indicators (RSI, MACD, Bollinger Bands)
Portfolio tracking
π Performance
Benchmarks (on average hardware):
Operation | Without Cache | With Cache | Improvement |
Get Stock Price | 450ms | 15ms | 96% faster |
Get Historical Data | 1200ms | 20ms | 98% faster |
Get Option Chain | 800ms | 18ms | 97% faster |
Get Financial Statements | 950ms | 25ms | 97% faster |
Cache hit rate: ~85% after 1 hour of usage
Made with β€οΈ for the MCP community
Available Tools
18 toolsget_analyst_price_targetsC
Get analyst price targets and recommendations summary.
Inputs: symbol (required).
get_balance_sheetC
Get balance sheet for a stock.
Inputs: symbol (required), freq.
get_cashflowC
Get cash flow statement for a stock.
Inputs: symbol (required), freq.
get_current_stock_priceB
Get the current stock price for a given symbol.
Inputs: symbol (required).
get_dividendsB
Get dividend history for a stock.
Inputs: symbol (required).
get_earning_datesA
Get upcoming and historical earnings dates for a stock.
Inputs: symbol (required), limit.
get_historical_stock_pricesB
Get historical stock prices for a given period and interval.
Inputs: symbol (required), period, interval.
get_holder_infoB
Get holder and ownership information for a stock.
Inputs: symbol (required), holder_type (required).
get_income_statementC
Get income statement for a stock.
Inputs: symbol (required), freq.
get_newsB
Get recent news articles for a stock.
Inputs: symbol (required).
get_option_chainB
Get option chain data for a specific expiration date.
Inputs: symbol (required), expiration_date (required), option_type.
get_option_expiration_datesC
Get available option expiration dates for a stock.
Inputs: symbol (required).
get_recommendationsC
Get analyst recommendations for a stock.
Inputs: symbol (required), recommendation_type, months_back.
get_stock_actionsB
Get stock actions (splits and dividends) history.
Inputs: symbol (required).
get_stock_infoC
Get comprehensive stock information and metadata.
Inputs: symbol (required).
get_stock_price_by_dateB
Get the stock price for a specific date.
Inputs: symbol (required), date (required).
get_stock_price_date_rangeB
Get stock prices for a date range.
Inputs: symbol (required), start_date (required), end_date (required).
get_stock_splitsB
Get stock split history for a stock.
Inputs: symbol (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelogβ¦
TDQS
Scored across 18 tools
Each tool has a distinct, clearly defined purpose with no overlap. For example, get_current_stock_price, get_stock_price_by_date, and get_stock_price_date_range target different price queries, while financial statements (get_balance_sheet, get_income_statement, get_cashflow) are unique.
All tools follow a consistent 'get_' prefix followed by descriptive snake_case noun phrases. No mixing of convention or verb styles.
18 tools is slightly above the typical sweet spot (3-15) but still reasonable for a comprehensive financial data API. Each tool contributes to a well-scoped domain without feeling excessive.
The tool surface covers all major aspects of stock data: prices (current/historical/by date), financial statements, dividends, splits, options, analysts, news, holder info, and metadata. No obvious gaps for fundamental stock analysis.
Maintenance
Related MCP Connectors
MCP server for Financial Modeling Prep API with 250+ financial data tools
A Model Context Protocol server exposing real-time and historical Colombo Stock Exchange (CSE) data to AI agents and LLM applications. Provides quotes and OHLCV price history, full financial statements (income, balance sheet, cash flow), pre-computed technicals (moving averages, RS ratings, volume signals), macroeconomic indicators, corporate actions, and rule-based screening across CSE stocks and sector indices, everything needed to build CSE-aware trading assistants, research tools, and market-analysis agents. This is the official MCP server of www.ceyloncharts.com
Official Intrinio MCP server. US stock prices, options and fundamentals for AI agents.
Hosted MCP server for Indian NSE/BSE stock research: 59 tools for quotes, financials and ratios, peers, shareholding and pledge, filings with extracted facts, screens, F&O and FII/DII context. Source and freshness on every answer; no buy/sell calls.
Related MCP Servers
- AlicenseBqualityBmaintenanceA Model Context Protocol server that enables interaction with Yahoo Finance to retrieve stock pricing, company information, and historical financial data through natural language queries.211,006 PyPI29MIT
- AlicenseCqualityNot gradedmaintenanceA Model Context Protocol server that provides tools for interacting with Yahoo Finance, allowing users to retrieve stock prices, company information, and perform financial data comparisons.11MIT
- AlicenseCqualityDmaintenanceA Model Context Protocol server providing comprehensive financial data from Yahoo Finance, allowing users to retrieve detailed stock information, financial statements, options data, and market news.34MIT
- FlicenseNot gradedqualityNot gradedmaintenanceFinancial MCP server providing 15 tools for stock quotes, financials, risk metrics, news sentiment, SEC filings, and session summaries via Yahoo Finance data.-