Financial Modeling Prep (fmpsdk) について
fmpsdk は Financial Modeling Prep(FMP)API 向けの Python SDK で、29 のデータグループにわたる約 240 のメソッドを扱います。別パッケージの MCP サーバー fmpsdk-mcp も含み、財務データや市場データを必要とする開発者を対象としています。
主な機能
- 0129 のデータグループ、約 240 メソッド
- 02データカテゴリごとにまとめられたクライアント名前空間
- 03財務諸表、比率、バリュエーションのデータ
- 04株価、過去価格、テクニカル指標
- 0510 の厳選ツールと検出ツールを備えた fmpsdk-mcp
- 06プランの対象外の呼び出しに対する FMPPlanLimitError
活用シーン
- 01Python スクリプトで上場企業の財務諸表と株価を取得する
- 02AI アシスタントが MCP 経由で株価や財務比率を照会する
- 03銘柄ごとの呼び出しではなく、全銘柄データを一括ダウンロードする
MCP 対応
mcp/ ディレクトリに含まれる fmpsdk-mcp は MCP サーバーであり、10 の厳選ツールを MCP クライアントに公開し、実行時には約 240 のメソッドすべてを呼び出せます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
13掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| symbol | string | はい |
詳細
FMP SDK
このプロジェクトは、Financial Modeling Prep(FMP)が提供する API エンドポイントを「ワンストップショップ」として利用できるようにすることを目的としています。
個人的なお知らせです。このパッケージを長い間更新せず、古い状態にしてしまい申し訳ありません。FMP が API の構成を何度も変更し、さらに私自身の事情で対応が遅れてしまいました。現在は再び軌道に乗っています。更新が滞っていたため、このパッケージの従来のメソッドの約半数は、FMP の現行 API では機能しなくなっていました。そこで、その場しのぎの修正ではなく、FMP の stable/ API を対象に一から作り直しました。20250102.0 以前をお使いの場合は、書き換え前の古いメソッドをご利用中です。それより新しいバージョンでは、以下で説明するスキーマを使用します。古いリリースは PyPI から取り下げられています(通常の pip install fmpsdk では、常に書き換え後のバージョンがインストールされます)が、バージョンを明示的に固定すれば、たとえば pip install fmpsdk==20250102.0 のようにインストールできます。ただし、実際に機能が復元するわけではありません。FMP は、古いメソッドが呼び出していたレガシー /api/v3/ API を 2025-08-31 に完全に廃止したため、古いバージョンを固定してインストールしても、呼び出しは失敗します。このバージョンは、移行中に既存のバージョン固定済み requirements ファイルとの互換性を保つためのものであり、書き換えを避け続けるためのものではありません。
対応範囲
29 のデータグループに、合計約 240 のメソッドが含まれています。各メソッドは client.<method>(...) から呼び出せるほか、対応する名前空間にまとめて呼び出すこともできます。例:client.statements.income_statement(...)。
- 企業・ファンダメンタルズ — 企業概要、経営陣、M&A、DCF 評価、財務諸表/比率/成長率(損益計算書、貸借対照表、キャッシュフロー計算書。報告値、TTM、成長率の各種)
- 市場データ — リアルタイムおよび取引時間外の株価、過去の価格チャート、テクニカル指標
- 参照・スクリーニング — シンボル/CIK/CUSIP/ISIN 検索、企業スクリーナー、セクター/業種/取引所のディレクトリ
- カレンダー・イベント — 決算発表、配当、株式分割、IPO、経済カレンダー
- 株式保有・コンプライアンス — インサイダー取引、Form 13F による機関投資家の保有状況、SEC 提出書類、ESG 開示
- 代替市場 — 暗号資産、外国為替、コモディティ、指数、ETF・投資信託
- センチメント・分析 — アナリスト評価/目標株価、TipRanks 評価、議会議員の取引、市場の値上がり銘柄・値下がり銘柄
- 一括ダウンロード — 全銘柄のデータダンプ。銘柄ごとに 1 回呼び出す代わりに、1 回の呼び出しで取得できます
各メソッドの docstring には、必要な FMP のプラン(Free/Starter/Premium/Ultimate)が記載されています。詳しくは、以下の料金プランをご覧ください。例外として、client.tipranks の 7 つのメソッドは実装済みで、ユニットテストも行われていますが、実際のレスポンスを用いたテストは行われていません。理由については該当セクションをご覧ください。
使用方法
- Python 3.9 以降が必要です。パッケージをインストールします:
pip install fmpsdk python-dotenv(python-dotenvは任意です。以下の例では.envファイルから API キーを読み込むために使用しています)。 .envファイルを作成し、API キーを記入します。.envの内容:FMP_API_KEY='blah'Clientを作成し、データカテゴリごとにまとめられたメソッドを呼び出します。例:client.company.profile(symbol="AAPL")、client.statements.income_statement(symbol="AAPL")。- メソッド呼び出しの戻り値は、ほとんどの場合、辞書のリストです。解析はご自身で行ってください。
コード例
#!/usr/bin/env python3
from dotenv import load_dotenv
import fmpsdk
# Actual API key is stored in a .env file. Not good to store API key directly in script.
load_dotenv()
client = fmpsdk.Client() # reads FMP_API_KEY from the environment
# Company Valuation Methods
symbol = "AAPL"
print(f"Company Profile: {client.company.profile(symbol=symbol)}")
# Every non-2xx FMP response raises a typed exception instead of returning
# None or an error-shaped dict, so a plan-gated or bad-key call is obvious:
try:
client.statements.income_statement_ttm(symbol=symbol)
except fmpsdk.FMPPlanLimitError:
print("Your FMP plan doesn't cover this endpoint — check its docstring for which tier does.")
except fmpsdk.FMPAuthenticationError:
print("Check your FMP_API_KEY.")
事前に知っておくとよい命名上の注意点が 1 つあります。client.quote は株価情報グループ全体の名前空間(client.quote.aftermarket_quote(...)、client.quote.batch_quote(...) など)であるため、同じ名前のトップレベルの quote() メソッドを覆い隠します。トップレベルのメソッドを呼び出すには、client.quote.quote(symbol="AAPL") としてください。
料金プラン
FMP のプランは Free、Starter、Premium、Ultimate の順に段階的に構成されており、それぞれ前のプランにエンドポイントが追加されます。プランの対象外の呼び出しを行うと、データが返されるのではなく fmpsdk.FMPPlanLimitError が発生します。ここで同期を保つ単一のプラン一覧表はありません。代わりに、各グループモジュールの docstring(例:fmpsdk/endpoints/search.py)と各メソッドの docstring に、必要なプランが呼び出しコードのすぐそばに明記されています。また、Free から Ultimate まで各プランの実際のキーを使って、都度ライブで検証されています。それらを確認するか、実際に呼び出して FMPPlanLimitError を捕捉してください。
例外が 1 つあります。プランの段階とはまったく別の、client.tipranks の 7 つのメソッドです。 Ultimate でも引き続き 402 エラーになります。FMP 自身のエラーメッセージによると、TipRanks のデータには別途有料のアドオン(「TipRanks data boost」)が必要で、上記 4 つのプランとは独立して購入する必要があります。このアドオンは購入していないため、これら 7 つのメソッドは実装済みで、ユニットテスト(モック使用)も済んでいますが、実際のレスポンスでの検証は一度も行っていません。動作確認済みではなく、未検証として扱ってください。このアドオンをお持ちで、いずれかのメソッドでバグが発生した場合は、修正内容と実際のレスポンスの内容を添えた PR をお待ちしています。
MCP サーバーと OpenAPI 仕様
mcp/ — Model Context Protocol サーバーで、fmpsdk-mcp として別途公開されています(そのため、pip install fmpsdk で fastmcp がインストールされることはありません)。アシスタント(Claude Code、Claude Desktop など)から、このライブラリを通じて FMP に問い合わせられます。よくある問い合わせ(株価、企業プロフィール、財務諸表、比率、株価履歴、ニュース)向けの厳選された 10 個のツールに加え、実行時に約 240 個のメソッドすべてにアクセスできる探索ツールも用意されています。uv を使う場合:
claude mcp add fmpsdk -s user -e FMP_API_KEY=your-key -- uvx fmpsdk-mcp
Claude Desktop の設定、全ツール一覧、開発環境のセットアップについては、mcp/README.md をご覧ください。
**openapi.json — 同じ API の範囲を記述した OpenAPI 3.1 ドキュメントです。**FMP は OpenAPI/Swagger ドキュメントを公開していません。このファイルは FMP から取得したものでも、FMP が承認したものでもなく、このライブラリのソースを解析して生成されています(python tools/gen_openapi.py)。
コントリビューション
CONTRIBUTING.md をご覧ください。開発環境のセットアップ、ユニットテスト/ライブテスト/Ultimate テストの各段階、特に上記の未テストの tipranks メソッドを検証して修正 PR を送る方法について説明しています。
ライセンス
BSD 3-Clause — LICENSE.md をご覧ください。
謝辞
このプロジェクトに協力してくださった以下の皆さまに、心より感謝します!オープンソースは、参加して手を貸してくださる皆さまのおかげで成り立っています!皆さまはこのプロジェクトの輝く星です。ありがとうございます。
- Ken Caruso
- iforgotmypass
- Ivelin Ivanov
- Claude Code
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。