mcpField
E
EdgarTools

EdgarTools

ローカル
github.com/dgunning金融データ2.8k3 日前に更新

EdgarTools について

EdgarToolsは、SEC EDGARの提出書類を構造化データに変換するオープンソースのPythonライブラリです。金融リサーチ担当者や開発者向けに、型付きオブジェクト、標準化された財務諸表、書類テキストを一つのAPIで提供します。

主な機能

  1. 01SECフォームの型付きオブジェクト
  2. 02標準化された財務諸表
  3. 03提出書類の全文検索
  4. 04書類のセクションとMarkdown
  5. 05保有銘柄とインサイダー取引の解析

活用シーン

  1. 01企業の財務諸表の比較
  2. 02機関投資家の保有銘柄の調査
  3. 03インサイダー取引の確認
  4. 04RAG用の提出書類テキストの準備

MCP 対応

EdgarToolsは`ai`エクストラにローカルMCPサーバーを含み、MCPクライアントにSEC提出書類の機能を提供します。edgar.toolsから利用できるホスト型MCPサーバーもあります。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"edgartools": {
"command": "uvx",
"args": [
"edgartools"
],
"env": {
"EDGAR_IDENTITY": "<EDGAR_IDENTITY>"
}
}
}
}
起動コマンドuvx edgartools
設定が必要な環境変数
EDGAR_IDENTITYYour name and email for SEC EDGAR API identification (e.g. 'Your Name [email protected]')

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

パッケージ
pypiedgartools5.62.1

ツール

13

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

パラメーター型必須説明
annualbooleanいいえ非推奨です。代わりに 'period' を使用してください。年次(true)または四半期(false)の財務情報
periodenumいいえ期間タイプ:'annual'、'quarterly'、または 'ttm'(直近 12 か月)annual | quarterly | ttm
includearrayいいえ含めるデータ。デフォルト:profile、financials、filings
periodsintegerいいえ財務期間数(デフォルトは 4)
identifierstringはい企業のティッカー(AAPL)、CIK(320193)、または名称(Apple Inc)

詳細

EdgarTools のロゴ

EdgarTools — SEC EDGAR 提出書類向け Python ライブラリ


PyPI - バージョン Python のバージョン ビルド状況 月間ダウンロード数

EdgarTools は、SEC EDGAR の提出書類を構造化データとして扱うための Python ライブラリです。財務諸表、インサイダー取引、ファンドの保有銘柄、委任状説明書など、数十種類の提出書類を、統一された Python API で利用できます。SEC は1994年以降のすべての提出書類を無料で公開していますが、そのほとんどはすぐに使える形式ではありません。EdgarTools は提出書類を型付きの Python オブジェクトに変換します。無料のオープンソースで、MIT ライセンスです。

ドキュメント · チートシート · エージェント向け:スキル · MCP サーバー · ホステッドサービス:edgar.tools

EdgarTools の SEC 提出書類データ抽出デモ

クイックスタート

1. インストールします。 パッケージ名は edgartools、インポートするモジュールは edgar です。Python 3.11 以降が必要です。

uv add edgartools        # or: pip install edgartools

2. SEC に連絡先を登録します。 EDGAR では、リクエストごとに連絡先メールアドレスが必要です。キーやサインアップ、レート制限のプランはありません。

from edgar import Company, set_identity

set_identity("[email protected]")

3. データを取得します。

# Five fiscal years of standardized income statement, from XBRL
Company("NVDA").income_statement(periods=5)
#> Total Revenue $215.9B $130.5B $60.9B

SEC の API を直接呼び出すだけでは不十分なのはなぜですか?

data.sec.gov で取得できるのは、JSON 形式のファクトと提出書類のインデックスです。それ以降の処理はすべて自分で実装する必要があります。EdgarTools がその部分を担います。

  • セクションのテキストと Markdown。 10-K や 10-Q の Item 1A、Item 7、その他の Item をテキストで取得でき、RAG 向けに提出書類全体を Markdown にできます。生の HTML では、自作のパーサーがうまく動かなくなることがあります。
  • XML ではなく、解析済みのフォーム。 13F の保有銘柄、Form 4 の取引、N-PORT のポートフォリオ、8-K の項目を、型付きオブジェクトや DataFrame として扱えます。
  • 整合性のある財務諸表。 提出企業間で行項目が標準化されているため、銀行でも半導体メーカーでも「Total Revenue」は同じ意味になります。四半期単独の数値(Q4 は 10-K から算出)や直近12か月の数値にも対応しています。
  • 検索と各種機能。 提出書類の内容を対象とした全文検索、リアルタイムの提出書類フィード、レート制限、キャッシュ、オフライン保存を利用できます。

自身のプロセス内で動作し、MIT ライセンスで、API キーやベンダーの利用枠は不要です。ただし、SEC のフェアアクセス制限である毎秒10リクエストは適用され、EdgarTools はその制限を守ります。

できること

SEC 提出書類を横断する全文検索

フォームの種類や日付だけでなく、2001年以降のすべての提出書類のテキストを検索できます。

from edgar import search_filings

# Every 10-K filed since 2025 that mentions tariffs
results = search_filings("tariff", forms="10-K", start_date="2025-01-01")
hit = results[0]
hit.accession_number, hit.form, hit.filed, hit.company  # a hit's fields; filed is the filing date
hit.get_filing()  # the Filing behind a hit, ready for .obj() or .markdown()

# Structured: 8-Ks that reported a cybersecurity incident (Item 1.05) in 2025
search_filings(forms="8-K", items="1.05", start_date="2025-01-01", end_date="2025-12-31")
#> 19 total

全文検索ガイド →

複数年にわたる財務諸表
Company("MSFT").income_statement(periods=10)  # also .balance_sheet() and .cash_flow_statement()

財務諸表ガイド →

企業間で共通の指標

位置ではなく、標準化されたラベルで行を選びます。損益計算書の先頭行が常に総収益とは限りません。

import pandas as pd

revenue = {
    ticker: Company(ticker).income_statement(periods=3, as_dataframe=True)
            .set_index("label").filter(like="FY").loc["Total Revenue"] / 1e9
    for ticker in ["JPM", "PFE", "CAT"]
}
pd.DataFrame(revenue).round(1)  # $ billions
#> FY 2025 182.4 62.6 67.6
四半期の数値と直近12か月
nvda = Company("NVDA")
nvda.get_ttm_revenue()                                 # the last four quarters, summed
nvda.income_statement(period="quarterly", periods=8)   # discrete quarters; Q4 is derived from the 10-K
RAG 向けのセクションと Markdown
filing = Company("NVDA").latest("10-K")
filing.markdown()          # the whole filing as markdown

tenk = filing.obj()
tenk.risk_factors          # Item 1A as text
tenk["Item 1C"]            # any Item by number

セクションガイド →

あらゆる条件で提出書類を検索
from edgar import find, get_current_filings, get_filings

get_filings(2025, 4, form="10-K")   # every 10-K filed in Q4 2025
get_current_filings()               # the live feed, as SEC posts it
find("0000320193-25-000079")        # an accession number, CIK or ticker

提出書類の検索ガイド →

ティッカー、CIK、アクセッション番号を解決するfind()

ライブのSEC提出書類フィードを表示するget_current_filings()

13Fの機関投資家保有状況
thirteenf = Company("BRK.A").get_filings(form="13F-HR").latest().obj()
thirteenf.holdings  # one row per security: Issuer, Cusip, Ticker, SharesPrnAmount, Value, ...

機関投資家保有状況ガイド →

バークシャー・ハサウェイの最新13F保有状況

Form 4によるインサイダー取引
form4 = Company("TSLA").get_filings(form="4").latest().obj()
form4.to_dataframe()  # buys, sells, grants and exercises

インサイダー取引ガイド →

テスラの最新Form 4を構造化オブジェクトに解析

N-PORTによるファンド保有状況
from edgar import Fund

Fund("VOO").get_portfolio()  # the latest N-PORT holdings as a DataFrame

ファンド・ポートフォリオガイド →

8-Kのイベントと決算発表
eightk = find("0001045810-26-000073").obj()  # NVIDIA, 2026-08-26
eightk.items      # ['Item 2.02', 'Item 9.01']
eightk.earnings   # the EX-99.1 press release tables, parsed

最新イベントガイド →

ライブラリかホストサービスか?

EdgarToolsはこのライブラリです。無料でMITライセンスが適用され、独自のPythonプロセスで実行できます。**edgar.tools**は、このライブラリを基盤に構築されたホスト型プラットフォームです。同じ解析機能を、常に稼働させて最新の状態に保ち、すべての回答に提出書類の出典を付けて提供します。料金は解析機能に対してではなく、その機能を実行し、質問に答えられる状態にしておくことに対して発生します。プラットフォームを販売するために、ライブラリの機能が削除されることはありません。

こんな場合は…こちらをお使いください
パイプライン、バックフィル、バックテスト、モデル用コーパス、ノートブック、カスタム結合など、動作するものを構築する場合。数百の銘柄に対して繰り返し実行するものや、独自のネットワーク内で実行するものライブラリ
構築するのではなく質問する場合:担当している企業が提出した書類と前回からの変更点、売却した人物、保有者、関与したすべての企業を横断した特定人物、全銘柄を対象にしたスクリーニング、アラート、チームに転送・共有できる出典付き回答など。ブラウザー、スマートフォン、Excel、Claude、ChatGPT、またはPythonを実行できないエージェントから利用する場合edgar.tools。無料アカウントですぐに始められます
パイプラインを実行せずに、すべての行を提出書類まで追跡できる、維持管理されたデータセット(インサイダー取引、13F、BDCポートフォリオ、重要イベント)を所有する場合edgar.toolsのデータライセンス
スクリプトから既知の提出書類またはJSONドキュメントを1つだけ取得する場合どちらでもありません:EDGARを直接呼び出してください

どちらにもMCP サーバーがあります。ライブラリのMCP サーバーはローカルで実行され(「AI連携」を参照)、edgar.toolsのMCP サーバーはapp.edgar.tools/mcpでホストされています。クライアントごとに接続するのはどちらか一方にしてください。機能が重複しているため、両方接続するとアシスタントの振り分け先が分散します。

AI連携

EdgarToolsには、aiエクストラにエージェントスキルとローカルMCP サーバーが含まれています。Pythonを実行できないアシスタントには、上記のセクションにあるホスト型コネクターをお使いください。

pip install "edgartools[ai]"
python -c "from edgar.ai import install_skill; install_skill()"  # the skill, for Claude Code and Claude Desktop

MCP サーバーは、あらゆるMCPクライアントで動作します。Claude Desktopの場合は、claude_desktop_config.jsonに追加してください。

{
  "mcpServers": {
    "edgartools": {
      "command": "uvx",
      "args": ["--from", "edgartools[ai]", "edgartools-mcp"],
      "env": {
        "EDGAR_IDENTITY": "Your Name [email protected]"
      }
    }
  }
}

uvxにはuvが必要です。利用できない場合は、pip install "edgartools[ai]"を実行してから、python -m edgar.aiを実行してください。その他のクライアントの設定方法:MCP サーバーガイド · スキルガイド。

プロジェクトを支援する

SECは毎年、提出書類の形式を変更し、新しいXBRLタクソノミーを公開しています。スポンサーからの支援によってパーサーを最新の状態に保ち、新たな開示が登場した際に新しいパーサーを開発できます。

  • GitHub Sponsors:月額または一度限りの支援です。企業は既存のGitHub請求に支援額を加算できます。
  • Buy Me a Coffee:一度限りのお礼として支援できます。
  • コンサルティング:SECデータパイプラインや、それを基盤とした金融AIについて、ライブラリの作者が支援します。

GitHubでスポンサーになる    Buy Me A Coffeeで支援する

ドキュメント、サポート、コントリビュート

EdgarToolsはMITライセンスに基づいて配布されています。

コメント

MCP は初めてですか?

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

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