mcpField
F
Financial Modeling Prep (fmpsdk)

Financial Modeling Prep (fmpsdk)

ローカル
github.com/daxm金融データ2159 週間前に更新

Financial Modeling Prep (fmpsdk) について

fmpsdk は Financial Modeling Prep(FMP)API 向けの Python SDK で、29 のデータグループにわたる約 240 のメソッドを扱います。別パッケージの MCP サーバー fmpsdk-mcp も含み、財務データや市場データを必要とする開発者を対象としています。

主な機能

  1. 0129 のデータグループ、約 240 メソッド
  2. 02データカテゴリごとにまとめられたクライアント名前空間
  3. 03財務諸表、比率、バリュエーションのデータ
  4. 04株価、過去価格、テクニカル指標
  5. 0510 の厳選ツールと検出ツールを備えた fmpsdk-mcp
  6. 06プランの対象外の呼び出しに対する FMPPlanLimitError

活用シーン

  1. 01Python スクリプトで上場企業の財務諸表と株価を取得する
  2. 02AI アシスタントが MCP 経由で株価や財務比率を照会する
  3. 03銘柄ごとの呼び出しではなく、全銘柄データを一括ダウンロードする

MCP 対応

mcp/ ディレクトリに含まれる fmpsdk-mcp は MCP サーバーであり、10 の厳選ツールを MCP クライアントに公開し、実行時には約 240 のメソッドすべてを呼び出せます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"daxm-fmpsdk": {
"command": "uvx",
"args": [
"fmpsdk-mcp"
],
"env": {
"FMP_API_KEY": "<FMP_API_KEY>"
}
}
}
}
起動コマンドuvx fmpsdk-mcp
設定が必要な環境変数
FMP_API_KEYシークレットFinancial Modeling Prep API key (https://site.financialmodelingprep.com/developer/docs)

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypifmpsdk-mcp20260829.1

ツール

13

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
symbolstringはい

詳細

FMP SDK

PyPI version Python versions License: BSD-3-Clause

このプロジェクトは、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 つのメソッドは実装済みで、ユニットテストも行われていますが、実際のレスポンスを用いたテストは行われていません。理由については該当セクションをご覧ください。

使用方法

  1. Python 3.9 以降が必要です。パッケージをインストールします:pip install fmpsdk python-dotenv(python-dotenv は任意です。以下の例では .env ファイルから API キーを読み込むために使用しています)。
  2. .env ファイルを作成し、API キーを記入します。.env の内容:FMP_API_KEY='blah'
  3. Client を作成し、データカテゴリごとにまとめられたメソッドを呼び出します。例:client.company.profile(symbol="AAPL")、client.statements.income_statement(symbol="AAPL")。
  4. メソッド呼び出しの戻り値は、ほとんどの場合、辞書のリストです。解析はご自身で行ってください。

コード例

#!/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 をご覧ください。

謝辞

このプロジェクトに協力してくださった以下の皆さまに、心より感謝します!オープンソースは、参加して手を貸してくださる皆さまのおかげで成り立っています!皆さまはこのプロジェクトの輝く星です。ありがとうございます。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。