Skip to main content
Glama
mirute02

yfinance-mcp

by mirute02

yfinance-mcp

日本語 | English

日本株・米国株の財務データを Yahoo Finance から取得する MCP サーバー。数値を貼り付けて渡す代わりに、アシスタントが自分で財務諸表や指標を引けるようになる。

日本株は Yahoo のサフィックス形式(7203.T)、米国株はそのまま(AAPL)。

ツール

ツール

返すもの

get_stock_quote(symbol)

株価、日中値幅、52週レンジ、時価総額、PER、セクター

get_income_statement(symbol, quarterly=False)

損益計算書(通期/四半期)

get_balance_sheet(symbol, quarterly=False)

貸借対照表(通期/四半期)

get_cash_flow(symbol, quarterly=False)

キャッシュフロー計算書(通期/四半期)

get_key_ratios(symbol)

PER、PBR、ROE、ROA、利益率、成長率、負債比率、配当

get_historical_prices(symbol, period="1y", interval="1d")

過去の OHLCV(直近400本)

get_analyst_recommendations(symbol)

格付けの集計(直近4か月分のスナップショット)

get_rating_changes(symbol, limit=20)

日付付きの格上げ・格下げ履歴(新しい順)

get_usage_budget()

本日の上流リクエスト消費数と日次上限

Related MCP server: Yahoo Finance MCP Server

インストール

git clone https://github.com/mirute02/yfinance-mcp.git
cd yfinance-mcp
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt

Python 3.10 以上。

MCP クライアントへの登録

.mcp.json(Claude Code)などに追加する。パスは絶対パスに置き換えること。

{
  "mcpServers": {
    "yfinance": {
      "command": "/path/to/yfinance-mcp/.venv/bin/python",
      "args": ["/path/to/yfinance-mcp/server.py"]
    }
  }
}

stdio で通信する。単体での起動確認は次のとおり。

.venv/bin/python server.py   # 標準入力待ちになる。Ctrl-C で終了

知っておくとよい挙動

Yahoo が返さない指標は自前で計算する。 returnOnEquityoperatingMargins は空になる銘柄が少なくない。財務諸表から算出できる場合は計算し、_calculated を付けて返すので、実報告値と区別できる。

アナリスト情報は2種類ある。 get_analyst_recommendations は現時点の格付け集計で、直近4か月分の「強気買い〜強気売り」の人数。get_rating_changes はイベント履歴で、日付・証券会社名・格付けの変更前後・目標株価が付く。後者は米国株以外では収録が薄い。

レスポンスは JSON セーフ。 NaNNaTInfnull に、Timestamp は ISO 文字列に、numpy のスカラは Python の型に変換する。特に pd.NaTdatetime のサブクラスなので単純な型判定をすり抜け、MCP層のシリアライザで落ちる。そこはエラーハンドリングの外側になる。

キャッシュとレート制限がある。 256件上限の LRU で5分間(価格履歴は10分)保持し、上流への呼び出しは 0.5 秒間隔に直列化する。エラーだけでなく空の結果もキャッシュしない。yfinance は上流の失敗を例外にせず空の DataFrame で返すため、「データなし」をキャッシュすると障害を TTL のあいだ固定してしまう。

失敗はデータとして返る。 存在しないティッカーを含め、例外を投げずに {"error": "..."} を返す。アシスタントが状況を理解して対処できる。

履歴は400本が上限。 MCP層はレスポンスを整形して送るため、日足2000本では約0.5MBになりアシスタントが読み切れない。上限を超えた場合は truncated が真になり、available_points に本来の本数が入る。期間ではなく足種を広げて調整すること。

意図的に大量収集はできないようにしてある。 上流への要求は0.5秒に1回へ抑え、UTC日付で1日1000件を上限としている。超えると、リセットまで全ツールがエラーを返す。残量は get_usage_budget で確認できる。上限は YFINANCE_MCP_DAILY_LIMIT で変更できるが、そもそもこの制限を置いているのは、Yahoo の規約において利用の規模こそが論点だからである。このサーバーは数社について調べるためのものであり、それを README の約束ではなくコードで示している。

テスト

pip install pytest
python -m pytest tests/ -q

39件。いずれもネットワークに接続しない。CI で Python 3.11〜3.13 上を通している。

セキュリティ

docs/security.md に、認証情報を持たないこと、読み取り専用かつ外向きのみであること、信頼できない symbol の扱い、意図的にやっていないことを書いてある。

データの利用条件

本プロジェクトは Yahoo とは無関係で、承認も検証も受けていないyfinance を利用しており、yfinance 自身の README も「研究・教育目的を想定」「Yahoo! finance API は個人利用のみを想定している」と明記している。

その意味をはっきりさせておく。Yahoo の利用規約 §2.4(i) は、スクレイパーやデータマイニングツールを含む「自動的な手段」でのデータ取得を「明示的な事前許可なく」行うことを禁じており、§2.5 は「商用目的での利用」を禁じている。つまり Yahoo が制限しているのは、取得後の使い道だけではなくアクセスの手段そのものである。

本サーバーはそれを回避する仕組みを持たない。1回の呼び出しで1銘柄を取得し、上流への要求は0.5秒以上あけ、結果はキャッシュし、サイズに上限を設けている。それでも自動アクセスであることに変わりはない。個人の研究・教育目的として、自己責任で利用すること。 業務で信頼できる市場データが必要なら、ベンダーからライセンスを購入すること。

ライセンス

MIT — LICENSE を参照。依存のライセンスは(READMEの記述ではなくインストール済みディストリビューションから読み取って)THIRD_PARTY_LICENSES.md に記載。

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables querying Yahoo Finance data including stock prices, historical data, financial statements, dividends, news, analyst recommendations, and company information through the yfinance library.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables LLMs to retrieve stock market data and financial information from Yahoo Finance using the yfinance Python library. Supports querying stock prices, historical data, and other financial metrics through natural language.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides comprehensive financial data from Yahoo Finance, enabling retrieval of stock prices, company information, financial statements, options data, analyst recommendations, and market news through natural language queries.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides real-time stock quotes, historical data, and stock search via Yahoo Finance, enabling AI assistants to access and analyze financial market data.
    11 npm
    19
    MIT