Finance Toolkit MCP Server
Calculates financial ratios, valuation models, risk metrics and macro series from raw statements
Read-only Yahoo Finance market data, screeners, options and price charts for MCP clients
By なるみ (individual) Python Local · stdio Finance and paymentsData and analytics
56 popularity score ★ 208 ↓ 3.7k/mo
Opens the app, which asks before it adds the server.
claude mcp add yahoo-finance -- uvx yfmcp@latest{
"mcpServers": {
"yahoo-finance": {
"command": "uvx",
"args": [
"yfmcp@latest"
]
}
}
}{
"mcpServers": {
"yahoo-finance": {
"command": "uvx",
"args": [
"yfmcp@latest"
]
}
}
}{
"servers": {
"yahoo-finance": {
"type": "stdio",
"command": "uvx",
"args": [
"yfmcp@latest"
]
}
}
}[mcp_servers.yahoo-finance]
command = "uvx"
args = ["yfmcp@latest"]gemini mcp add --scope user yahoo-finance uvx -- yfmcp@latestOpens the app, which asks before it adds the server.
claude mcp add yahoo-finance -- docker run -i --rm narumi/yfinance-mcp{
"mcpServers": {
"yahoo-finance": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"narumi/yfinance-mcp"
]
}
}
}{
"mcpServers": {
"yahoo-finance": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"narumi/yfinance-mcp"
]
}
}
}{
"servers": {
"yahoo-finance": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"narumi/yfinance-mcp"
]
}
}
}[mcp_servers.yahoo-finance]
command = "docker"
args = ["run", "-i", "--rm", "narumi/yfinance-mcp"]gemini mcp add --scope user yahoo-finance docker -- run -i --rm narumi/yfinance-mcpOpens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
git clone https://github.com/narumiruna/yfinance-mcp.git
cd yfinance-mcp
uv syncclaude mcp add yahoo-finance -- uv run --directory '<ABSOLUTE_PATH_TO_CLONE>' yfmcp{
"mcpServers": {
"yahoo-finance": {
"command": "uv",
"args": [
"run",
"--directory",
"<ABSOLUTE_PATH_TO_CLONE>",
"yfmcp"
]
}
}
}{
"mcpServers": {
"yahoo-finance": {
"command": "uv",
"args": [
"run",
"--directory",
"<ABSOLUTE_PATH_TO_CLONE>",
"yfmcp"
]
}
}
}{
"servers": {
"yahoo-finance": {
"type": "stdio",
"command": "uv",
"args": [
"run",
"--directory",
"<ABSOLUTE_PATH_TO_CLONE>",
"yfmcp"
]
}
}
}[mcp_servers.yahoo-finance]
command = "uv"
args = ["run", "--directory", "<ABSOLUTE_PATH_TO_CLONE>", "yfmcp"]gemini mcp add --scope user yahoo-finance uv -- run --directory '<ABSOLUTE_PATH_TO_CLONE>' yfmcpYahoo Finance MCP Server (package yfmcp) wraps the community yfinance Python library and exposes Yahoo Finance data as fifteen tools. It covers company profiles and valuation figures, analyst price targets, estimates and rating changes, annual, quarterly or trailing-twelve-month financial statements, ticker news, search across quotes and articles, sector rankings, option expiry dates and chains, ownership and insider data, ETF and mutual-fund look-through, and stock screeners, including a ready-made pre-market gap screener.
Price history comes back as a Markdown table, or, when a chart type is chosen, as a WebP image: candlesticks with volume, a VWAP overlay, or a volume profile. Several tools cut long tables to a default row count (10 holder rows, 12 estimate rows, 25 fund or rating-change rows) and report what was cut in a _metadata block; passing max_rows 0 returns everything.
In the v0.14.0 source, every tool is registered with readOnlyHint set and no tool writes anything. The server does not retry failed calls itself: when Yahoo rate-limits a request or the network fails, the tool returns a NETWORK_ERROR response telling the caller to try again later (src/yfmcp/server.py). It needs no API key or account.
| Runtime | Python 3.12+orDocker |
|---|
uv for the recommended uvx launch (it fetches Python and the yfmcp package), or Docker for the narumi/yfinance-mcp image. Running from source needs Python 3.12 or newer and uv. Outbound internet access to Yahoo Finance; no Yahoo account or API key.
Data comes through yfinance, an unofficial client of Yahoo Finance's web endpoints, so fields vary by ticker and yfinance version, and Yahoo can rate-limit requests; the server then returns an error rather than retrying. Minute intervals only work with short periods (for example 1m with 1d or 5d). Screener results are capped at Yahoo's 250 rows, sector rankings at 100. It speaks stdio only: main() calls mcp.run() with no transport option in v0.14.0. It reads quotes and fundamentals and cannot place trades or reach a brokerage account.
Suits someone who wants free, keyless stock research inside an assistant: fundamentals, analyst views, options chains, fund holdings, screens and quick charts, running on their own machine. Because it relies on Yahoo's unofficial endpoints with no key, it is a poor fit for production systems that need guaranteed uptime, licensed data or real-time feeds; a paid market-data provider with its own server is the better choice there. Nothing it does can change an account, so it is low-stakes to try.
yfinance_get_ticker_infoyfinance_get_analyst_price_targetsyfinance_get_analyst_estimatesyfinance_get_upgrades_downgradesyfinance_get_ticker_newsyfinance_searchyfinance_get_topyfinance_screenyfinance_screen_gappersyfinance_get_price_historyyfinance_get_financialsyfinance_get_holdersyfinance_get_fund_datayfinance_get_option_datesyfinance_get_option_chain