Yahoo Finance

io.github.danishashkoPublished by GitHub account danishashkov1.6.2Updated Nov 7, 2026

Yahoo Finance data: quotes, financials, earnings, screeners, funds, sectors, options, and news.

The publisher's own server: Finance Foundation

VerifiedSTDIODesktop onlyFinanceData & Analytics

Overview

AI-generated overview

A local, read-only MCP server that gives an assistant live Yahoo Finance data: quotes, financials, earnings, options, holders, screeners, funds and news.

What you can do
  • Look up quotes, historical OHLCV prices, company profiles and key statistics
  • Read annual income statements, balance sheets, cash flow, dividends and splits
  • Check analyst ratings, price targets, forward estimates, earnings dates and the earnings calendar
  • Inspect options chains, institutional, fund and insider ownership, and ETF or mutual fund holdings
  • Screen stocks by predefined lists, browse sector and industry overviews, compare up to ten tickers
  • Search symbols and fetch per-ticker news; results come as markdown or JSON with structured content
When to use it
Useful when you want an assistant to answer market questions, research a company, compare tickers, or pull earnings, options and ownership data without a paid data subscription or API key.
Requirements
Runs locally via npx (Node.js 16+ and Python 3.10+; the wrapper creates a Python environment on first launch). No API key, account or signup. Internet access to Yahoo Finance is required. Optionally serves Streamable HTTP on a local port for URL-only clients.
Before you install
All tools are read-only and cannot trade or change anything. Requests go directly to Yahoo Finance, so your queries and IP are visible to it; nothing is stored or proxied. Yahoo rate-limits roughly 2,000 requests per hour per IP, and quotes may be delayed 15 to 20 minutes. HTTP mode adds no authentication, so keep it bound to a trusted interface. Data use is subject to Yahoo's terms; the project is not affiliated with Yahoo.

Installation

In SourceWeft

  1. Open Yahoo Finance in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

Yahoo Finance MCP Server 📈

[npm version] [npm downloads] [Python] [License: MIT]

Free Yahoo Finance MCP server with no API key. 18 read-only tools give Claude, Claude Code, Cursor, VS Code, Windsurf, Codex, n8n or any other MCP client live stock quotes, historical prices, financial statements, earnings dates and calendars, analyst ratings and estimates, options chains, insider and institutional holders, stock screeners, ETF and fund holdings, sector overviews and market news. Runs locally with one npx command, over stdio or Streamable HTTP.

npm package: yahoo-finance-mcp-server · GitHub repo: danishashko/yahoo-finance-mcp. The repo name is shorter than the package name; both refer to this project.

🎯 What You Get

  • 📊 Real-time stock quotes with full market data
  • 📈 Historical prices (OHLCV) with summary statistics
  • 🏢 Company profiles, officers, and key statistics
  • 💰 Financial statements (income, balance sheet, cash flow)
  • 🎯 Analyst ratings, price targets, and the recent recommendation trend
  • ⚖️ Multi-stock comparisons side by side
  • 📰 Latest financial news per ticker
  • 🧾 Options chains (calls/puts, strikes, IV, open interest)
  • 🏦 Ownership data — institutional, mutual fund, and insider activity
  • 💵 Dividend & split history
  • 🔮 Forward analyst estimates (price targets, EPS/revenue, growth)
  • 🔎 Symbol search by company name or keyword
  • 🕒 Market status (open/closed) and index summary
  • 📅 Earnings dates: next report, beat/miss history, and a market-wide earnings calendar
  • 🧲 Stock screeners: day gainers/losers, most active, most shorted, undervalued growth, top ETFs
  • 🧺 ETF and fund data: holdings, expense ratio, sector weights
  • 🏭 Sector and industry overviews with their largest, fastest-growing and best-performing companies

Every tool returns human-readable markdown by default, or structured JSON on request (response_format: "json"). Requests share a single browser-impersonating HTTP session to reduce Yahoo Finance rate-limiting.

🚀 Quick Start

Add this to your Claude Desktop config and restart Claude:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
json
{  "mcpServers": {    "yahoo-finance": {      "command": "npx",      "args": ["-y", "yahoo-finance-mcp-server"]    }  }}

That is it. On first launch the npx wrapper creates an isolated Python environment and installs the dependencies for you (a one-time step that can take a minute). You only need Python 3.10+ and Node.js 16+ on your machine.

Other clients

Claude Code

bash
claude mcp add yahoo-finance -- npx -y yahoo-finance-mcp-server

Cursor (~/.cursor/mcp.json), Windsurf (~/.codeium/windsurf/mcp_config.json) and Gemini CLI (~/.gemini/settings.json) take the same mcpServers block as Claude Desktop above.

VS Code (.vscode/mcp.json)

json
{  "servers": {    "yahoo-finance": {      "type": "stdio",      "command": "npx",      "args": ["-y", "yahoo-finance-mcp-server"]    }  }}

Codex CLI (~/.codex/config.toml)

toml
[mcp_servers.yahoo-finance]command = "npx"args = ["-y", "yahoo-finance-mcp-server"]

n8n and other URL-only clients: see HTTP mode.

Prefer a global install?

bash
npm install -g yahoo-finance-mcp-server
json
{  "mcpServers": {    "yahoo-finance": {      "command": "yahoo-finance-mcp-server"    }  }}

🌐 HTTP mode (n8n, remote agents, anything that connects to a URL)

Some clients spawn an MCP server as a child process and talk to it over stdio; others only take a URL. n8n's MCP Client Tool node is the second kind - it offers HTTP Streamable and SSE and no way to launch a command - so stdio alone puts the server out of reach.

--http serves the same 18 tools over Streamable HTTP at /mcp:

bash
npx -y yahoo-finance-mcp-server --http# -> http://127.0.0.1:8000/mcp
FlagDefaultWhat it does
--httpoffServe Streamable HTTP at /mcp instead of stdio
--host127.0.0.1Interface to bind
--port8000Port to bind
--allowed-hostsee belowHost header to accept, repeatable
--statefuloffKeep a session per client instead of stateless

No authentication is added, so keep it on an interface you trust.

Reaching it from a container

n8n in Docker is not on your loopback interface, so bind wider and use the host alias:

bash
npx -y yahoo-finance-mcp-server --http --host 0.0.0.0 --port 8931

Then point the MCP Client Tool node at http://host.docker.internal:8931/mcp with authentication set to None.

DNS-rebinding protection stays on when you bind wider. localhost, 127.0.0.1 and host.docker.internal on the bound port are accepted by default; any other name needs --allowed-host name:port, and a request arriving under an unlisted name gets 421 Misdirected Request.

🔧 Available Tools

ToolWhat it returnsParameters
get_stock_quoteCurrent price, change, day and 52-week range, volume, market cap, P/E, EPS, dividend yieldticker
get_historical_pricesOHLCV history with summary stats and total returnticker, period, interval
get_company_infoBusiness summary, key executives, valuation and financial highlightsticker
get_financial_statementsAnnual income statement, balance sheet, and cash flowticker
compare_stocksKey metrics for multiple tickers side by side, plus quick insightstickers (2 to 10)
get_analyst_recommendationsPrice targets, consensus, recommendation trend, and recent upgrades/downgradesticker
get_market_newsLatest news headlines with source, date, summary, and linkticker, count
get_options_chainExpiration dates, or the calls/puts chain (strike, bid/ask, volume, OI, IV)ticker, expiration_date, option_type
get_holdersInstitutional, mutual-fund, or major holders, or insider transactionsticker, holder_type
get_dividends_splitsDividend payment history (with summary) and stock-split historyticker
get_analyst_estimatesForward price targets, EPS/revenue estimates by period, and growth estimatesticker
search_symbolsFind ticker symbols by company name or keywordquery, count
get_market_statusWhether a market is open/closed, with timing and a major-index summaryregion
get_earningsNext earnings date (days away, EPS and revenue estimates), ex-dividend date, beat/miss historyticker, limit
get_earnings_calendarEvery company reporting in a date range, with timing and EPS estimatestart_date, end_date, min_market_cap, limit
screen_stocksResults of a Yahoo predefined screener with price, change, relative volume, P/Escreener, count
get_fund_dataETF or mutual fund holdings, expense ratio, sector weights, asset classesticker
get_sector_overviewSector or industry overview, largest companies, industries, top growers and performerssector, industry, limit

Every tool also accepts response_format ("markdown", the default, or "json").

Every result also carries the data as MCP structured content, described by the tool's published outputSchema, whichever text format you ask for. Clients that support structured output read typed fields directly; others read the text. Missing figures are null, and a failed call returns isError: true with a message saying what to change.

get_historical_prices options:

  • period: 1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max
  • interval: 1m, 2m, 5m, 15m, 30m, 60m, 90m, 1h, 1d, 5d, 1wk, 1mo, 3mo

get_options_chain: call without expiration_date to list available dates, then again with a date. option_type is calls, puts, or both. A chain returns the strikes nearest the current price.

get_holders: holder_type is institutional, mutualfund, major, insider_transactions, insider_purchases (6-month net insider buying), or insider_roster.

screen_stocks: screener is one of day_gainers, day_losers, most_actives, most_shorted_stocks, small_cap_gainers, aggressive_small_caps, growth_technology_stocks, undervalued_growth_stocks, undervalued_large_caps, top_etfs_us, top_performing_etfs, technology_etfs, bond_etfs, top_mutual_funds, solid_large_growth_funds, solid_midcap_growth_funds, conservative_foreign_funds, high_yield_bond, portfolio_anchors.

get_sector_overview: sector is one of basic-materials, communication-services, consumer-cyclical, consumer-defensive, energy, financial-services, healthcare, industrials, real-estate, technology, utilities. Call without industry to get the list of industry keys.

💬 Example Prompts

Once the server is connected, just ask Claude:

  • "What's the current price of Apple stock?"
  • "Show me Amazon's stock performance over the last year"
  • "Tell me about Tesla as a company and who runs it"
  • "Show me Apple's income statement"
  • "Compare AAPL, MSFT, and GOOGL"
  • "What do analysts think about Amazon, and what's the price target?"
  • "What's the latest news on NVIDIA?"
  • "Show me the SPY call options expiring next month"
  • "Who are the biggest institutional holders of Apple?"
  • "What's Coca-Cola's dividend history?"
  • "When does NVIDIA report next, and has it been beating estimates?"
  • "Which large caps report earnings this week?"
  • "What are today's biggest gainers?"
  • "What's inside QQQ and what does it cost?"
  • "Who are the biggest semiconductor companies?"
  • "Are Tesla insiders net buying or selling?"

❓ FAQ

Does it need an API key or a paid plan? No. It reads Yahoo Finance's public data through the yfinance library. There is no key, account or signup.

Is the data real-time? Quotes are near real-time for most US stocks and can be delayed about 15 minutes on some exchanges. Every quote states its exchange, market state and timestamp.

Which tickers work? Any symbol Yahoo Finance lists: US stocks (AAPL), class shares (BRK.B or BRK-B), non-US listings with Yahoo's exchange suffix (7203.T, BP.L, SAP.DE), ETFs and mutual funds (SPY, VFIAX), indices (^GSPC), crypto (BTC-USD) and currencies (EURUSD=X). Case does not matter. If you only have a company name, search_symbols finds the ticker.

Can it place trades or change anything? No. Every tool is read-only.

Does it work with clients other than Claude? Yes. It speaks standard MCP, so any client that supports MCP over stdio or Streamable HTTP can use it. Setup for the common ones is under Quick Start.

How do agents get structured data? Every result carries typed structuredContent matching the tool's outputSchema, whatever text format was asked for. Pass response_format: "json" to get JSON text as well.

Where is the machine-readable summary? llms.txt lists every tool, limit and error behaviour in one page for agents.

🐛 Troubleshooting

"Command not found" / "Python not found" Make sure Python and Node.js are installed and on your PATH. On macOS/Linux, try python3 instead of python in the config.

"Module not found: yfinance" (manual install only) Install the dependencies:

bash
pip install yfinance curl_cffi pandas tabulate mcp pydantic httpx

Tools not showing up in Claude

  1. Confirm the config file is valid JSON (no trailing commas).
  2. Fully quit and reopen Claude Desktop.
  3. Check the path in your config actually exists.

"Error fetching data"

  • Check your internet connection.
  • Verify the ticker symbol (for example AAPL, not Apple).
  • Some smaller companies have limited data, and Yahoo Finance can be briefly unavailable.

Using a different model or provider (LiteLLM, OpenRouter, NVIDIA NIM, a local model) This server never talks to a model. Your client starts it as a local process and speaks JSON-RPC over stdin/stdout, so changing ANTHROPIC_BASE_URL or swapping the model behind your client has no effect on it. If tools stop firing after a switch like that, check two things: the model has to support function calling, and a proxy configured to drop unsupported parameters can silently strip your tool definitions, which produces no error at all. Run /mcp in your client (or claude mcp list) to confirm the server is connected before suspecting the server.

🛠️ Manual Installation (Alternative)

If you would rather run the Python file directly instead of via npx:

1. Download the server

Save yahoo_finance_mcp.py somewhere on your machine and install the dependencies:

bash
pip install yfinance curl_cffi pandas tabulate mcp pydantic httpx

(or pip3 on macOS/Linux)

2. Point Claude Desktop at it

json
{  "mcpServers": {    "yahoo-finance": {      "command": "python3",      "args": ["/absolute/path/to/yahoo_finance_mcp.py"]    }  }}

On Windows use "command": "python" and a path like "C:\\path\\to\\yahoo_finance_mcp.py" (double backslashes or forward slashes).

3. Restart Claude Desktop.

🔒 Privacy & Rate Limits

  • Uses the free Yahoo Finance API via the yfinance library.
  • Requests go straight to Yahoo Finance. Nothing is stored or proxied.
  • Yahoo Finance rate-limits roughly 2,000 requests/hour per IP.
  • Intended for personal, educational, and research use.

📝 Notes

  • Tickers are case-insensitive, and BRK.B is accepted as well as Yahoo's BRK-B.
  • Some quotes may be delayed 15 to 20 minutes.
  • Financial statements are generally available for larger public companies.

📋 Changelog

See CHANGELOG.md for the full version history.

📚 Resources

⚖️ Legal Disclaimer

This tool uses Yahoo Finance's publicly available data through the yfinance library. Yahoo!, Y!Finance, and Yahoo! Finance are registered trademarks of Yahoo, Inc. This tool is not affiliated with, endorsed by, or vetted by Yahoo, Inc. Please refer to Yahoo!'s terms of use for details on your rights to use the data.

👤 Author

Daniel Shashko

📄 License

MIT © Daniel Shashko

Source: README.md at commit 2cf281a

Tools

0
SourceWeft started this package once in an isolated sandbox, without credentials, to list its tools. That failed: the server did not answer in time.

Version history

3
  1. v1.6.2LatestNov 7, 2026
  2. v1.6.0Nov 7, 2026
  3. v1.2.4Sep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Finance integrations