# Yahoo Finance [Health: Active]

**Category:** 💰 Finance & Fintech  
**Repository:** https://github.com/danishashko/yahoo-finance-mcp  
**GitHub Stars:** 23  
**npm Downloads (last month):** 882  
**Views:** 4  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/yahoo-finance

## Description
Real-time Yahoo Finance data: quotes, history, financials, analyst ratings, options, and news.

## Tools
Capabilities this server exposes over MCP:

- **get_stock_quote** — Real-time quote snapshot for ONE stock: last price, day change ($ and %), open, previous close, day range, 52-week range, volume and average volume, market cap, beta, trailing P/E, EPS, dividend yield, and sector/industry/website.

    Use for "what's the price of X" or a quick single-stock snapshot. For several stocks side by side use compare_stocks; for the full company profile use get_company_info; for a past price series use get_historical_prices.

    Returns Markdown by default, or structured JSON when response_format='json'. An unknown ticker or an upstream/rate-limit error returns a short error message rather than raising.
    
- **get_historical_prices** — Historical OHLCV price series for one stock over a chosen period/interval, plus summary stats (highest/lowest/average close, average volume) and total return over the window.

    Use for performance, trends, or charting ("how has X done over the last year"). For a single current price use get_stock_quote; for dividend/split events use get_dividends_splits. Note: intraday intervals (1m-90m) are only available for short recent periods, and long periods return many rows, so prefer JSON or a shorter period if the output is truncated.

    Returns Markdown (summary stats plus the last 10 rows) by default, or the full series as JSON when response_format='json'. An empty or unsupported period/interval combination returns a short message.
    
- **get_company_info** — Detailed company profile for one stock: long business summary, sector/industry, key executives, headquarters/website/employee count, and valuation & financial-highlight stats (market cap, P/E, margins, and similar).

    Use for "what does X do", company background, or a business overview. For the statement-level numbers (income/balance/cash flow) use get_financial_statements; for just the live price use get_stock_quote.

    Returns Markdown by default, or JSON when response_format='json'. An unknown ticker or upstream error returns a short error message.
    
- **get_financial_statements** — Annual financial statements for one company: income statement, balance sheet, and cash flow statement, each with multiple years of data.

    Use for revenue, earnings, assets/liabilities, cash flow, or fundamental analysis. For headline ratios only use get_company_info; for forward projections use get_analyst_estimates. Quarterly data is not returned; request JSON for the complete machine-readable export.

    Returns Markdown by default, or JSON when response_format='json'. Companies without filed statements (for example some ETFs or ADRs) return empty sections or a short message.
    
- **compare_stocks** — Side-by-side comparison of 2-10 stocks across key metrics (price, market cap, P/E, EPS, dividend yield, 52-week range, and period performance) with brief auto-generated insights.

    Use for "which is better, X or Y", peer/relative comparison, or screening a small set. For a deep dive on a single name use get_stock_quote or get_company_info.

    Pass 2-10 tickers in the tickers list. Returns a Markdown comparison table by default, or JSON when response_format='json'. A ticker that fails to resolve is reported per-symbol rather than failing the whole call.
    
- **get_analyst_recommendations** — Wall Street analyst view on one stock: price targets (high/mean/low), consensus rating, the buy/hold/sell recommendation-trend breakdown, and recent upgrades/downgrades.

    Use for "what do analysts think of X", ratings, or sentiment. For forward EPS/revenue/growth projections use get_analyst_estimates instead: this tool is ratings and targets, that one is the numeric estimates.

    Returns Markdown by default, or JSON when response_format='json'. A stock with no analyst coverage returns the available fields as N/A; errors return a short message.
    
- **get_market_news** — Latest news articles for one stock; each item has a title, publisher/source, publish date, a short summary, and a link.

    Use for "what's the latest news on X", recent headlines, or catalysts. Returns news only: for price use get_stock_quote, for fundamentals use the financials tools.

    count sets how many articles to return (1-20, default 10). Returns Markdown by default, or JSON when response_format='json'. No recent news returns a short message.
    
- **get_options_chain** — Equity options data for one underlying, in two modes: call with no expiration_date to LIST every available expiration date; call again with a specific 'YYYY-MM-DD' to get that expiration's chain (strike, bid/ask, last, volume, open interest, implied volatility).

    Use for options pricing, implied volatility, or open-interest analysis. option_type selects 'calls', 'puts', or 'both'. Always discover the valid dates first (call with no date) before requesting a chain, since only listed expirations work.

    Returns Markdown by default, or JSON when response_format='json'. A ticker with no listed options returns a short message.
    
- **get_holders** — Ownership and insider activity for one stock, selected by holder_type: 'institutional' (top institutional holders), 'mutualfund' (top fund holders), 'major' (insider-vs-institutional ownership % breakdown), or 'insider_transactions' (recent insider buys and sells).

    Use for "who owns X", institutional ownership, or insider trading activity. One holder_type per call: call again to get a different view.

    Returns Markdown by default, or JSON when response_format='json'. Missing data for the chosen category returns a short message.
    
- **get_dividends_splits** — Full dividend payment history (with a trailing-period summary) and the stock-split history for one stock.

    Use for dividend-income analysis, payment dates and amounts, dividend growth, or past split events. For the current/forward dividend yield use get_stock_quote; for price history use get_historical_prices.

    Returns Markdown by default, or JSON when response_format='json'. A stock that pays no dividend or has never split returns a short message noting that none exist.
    
- **get_analyst_estimates** — Forward-looking analyst estimates for one stock: price targets, EPS and revenue estimates by period (current and next quarter and year), and growth estimates.

    Use for projected/expected numbers and forecasts. This complements get_analyst_recommendations: that tool returns ratings and the recommendation trend, this one returns the numeric forward estimates.

    Returns Markdown by default, or JSON when response_format='json'. A stock without analyst coverage returns the available fields as N/A or a short message.
    
- **search_symbols** — Resolve a company name or keyword to ticker symbols; each match returns the symbol, name, exchange, and instrument type (equity, ETF, and so on).

    Use this first when you have a company or brand name but not its ticker, then pass the resolved symbol to the other tools. Not for fetching prices or fundamentals.

    query is the name/keyword to search; count caps the number of matches (1-20, default 8). Returns Markdown by default, or JSON when response_format='json'. No matches returns a short message.
    
- **get_market_status** — Whether a stock market is currently open or closed for a given region, with trading-session timing and a summary of that region's major indices.

    Use for "is the US market open", market hours, or a quick index overview. region is a country code (US, GB, CA, DE, FR, IN, JP, HK, AU; default US). This is market-wide, not per-stock: use get_stock_quote for an individual price.

    Returns Markdown by default, or JSON when response_format='json'. An unrecognized region returns a short message.
    

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "yahoo-finance": {
    "command": "npx",
    "args": ["-y","yahoo-finance-mcp-server"]
  }
}
```

## Documentation

## What Yahoo Finance MCP server does

The Yahoo Finance MCP server connects MCP-compatible AI clients to market data from Yahoo Finance. Its tools cover individual securities, groups of tickers, market conditions, and related company information.

Available operations include:

- Retrieve current prices, daily changes, volume, valuation metrics, dividend yield, and trading ranges.
- Query historical open, high, low, close, and volume data with summary statistics and total return.
- Read company descriptions, executives, valuation figures, and financial highlights.
- Fetch annual income statements, balance sheets, and cash-flow statements.
- Compare two to ten tickers using side-by-side metrics.
- Inspect analyst recommendations, price targets, estimates, ownership, dividends, splits, options, and recent news.
- Search for ticker symbols by company name or keyword.
- Check whether a market is open and view a major-index summary.

Each tool can return readable Markdown or structured JSON by setting `response_format`.

## How it works

The Yahoo Finance MCP server can run as a local process communicating over MCP stdio, or as a Streamable HTTP endpoint. The standard HTTP command serves the MCP endpoint at `/mcp`; host, port, accepted host names, and stateful-session behavior can be changed with command-line flags.

Requests use a shared browser-impersonating HTTP session. This is intended to reduce Yahoo Finance rate limiting, but the server still depends on Yahoo Finance availability and the data returned for a given symbol.

Historical queries accept periods from one day through maximum available history and intervals ranging from minutes to months. Options queries can first list expiration dates and then retrieve calls, puts, or both for a selected date. Holder queries distinguish institutional, mutual-fund, major, and insider-transaction data.

## Setup and configuration

The simplest setup uses Node.js 16 or newer and Python 3.10 or newer. Add an MCP entry that runs `npx -y yahoo-finance-mcp-server`, then restart the client. The first launch creates an isolated Python environment and installs dependencies. A global npm installation is also available, after which the configured command is `yahoo-finance-mcp-server`.

For HTTP mode, run `npx -y yahoo-finance-mcp-server --http`. The default address is `127.0.0.1:8000/mcp`. Containerized clients may require binding to `0.0.0.0` and connecting through a host alias. HTTP mode does not add authentication, so bind it only to an interface and network you trust. Host-header checks remain enabled; additional host names can be allowed with `--allowed-host`.

## Limitations and notes

The Yahoo Finance MCP server does not communicate with an AI model. The MCP client starts it and exchanges JSON-RPC messages, so changing a model provider does not change the server itself. The client model must support tool or function calling, and a proxy must preserve tool definitions.

Ticker symbols must be supplied for ticker-based requests, such as `AAPL` rather than `Apple`. Smaller companies may have incomplete data, and Yahoo Finance may be temporarily unavailable. If tools do not appear, check the client configuration, restart the client, and verify that the server is connected. Manual installation requires the listed Python dependencies, including `yfinance`, `curl_cffi`, `pandas`, `mcp`, `pydantic`, `httpx`, and `tabulate`.

_Full upstream README: https://allmcps.com/mcp/yahoo-finance/readme_

