SEC EDGAR について
SEC EDGAR は、米国 SEC の企業提出書類、財務データ、企業情報を検索する Rust 製 MCP サーバーです。ティッカーから CIK への変換やリクエスト識別情報、応答の整形を担い、Claude Desktop などのクライアントで利用できます。
主な機能
- 01企業および最近の提出書類の検索
- 02提出書類本文と添付資料の閲覧
- 03XBRL 財務概念の照会
- 04インサイダー取引と機関保有の確認
- 05提出書類全文の検索
- 06ティッカーから CIK への変換
活用シーン
- 01企業の最新 10-K や 8-K の確認
- 02複数企業の過去の売上高の比較
- 03インサイダー取引や 13F 保有銘柄の検索
MCP 対応
MCP クライアントに SEC EDGAR の検索・提出書類ツールを公開します。ティッカーと CIK の対応をキャッシュし、大きな SEC 応答を簡潔な JSON に整形します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
sec-mcp
Claude Desktop から SEC EDGAR のデータ(企業の提出書類、財務諸表、企業情報)にアクセスできる Model Context Protocol サーバーです。API キーは不要です。Node、Python、Docker のランタイムに依存せず、単一のネイティブバイナリとして動作します。
この MCP が必要な理由
EDGAR は API キー不要の公開 REST エンドポイント群であり、sec.gov/search-filings/edgar-application-programming-interfaces のドキュメントも十分に整っています。そのため、厳密に言えば MCP は必要ありません。このラッパーでできることは次のとおりです。
-
User-Agent の識別情報を保持します。 SEC の公正利用ポリシーでは、User-Agent ヘッダーに連絡先メールアドレスを含める必要があります。設定しないと、リクエストは速度制限されたり拒否されたりします。プロンプトのたびにメールアドレスを貼り直す必要はありません。MCP が設定ファイルに保存し、すべてのリクエストに設定します。
-
ティッカーから CIK への変換をキャッシュします。 EDGAR のすべてのエンドポイントはティッカーではなく、ゼロ埋めされた10桁の CIK をキーとして使用します。ツールを使わない場合、クエリのたびに約1 MBの
company_tickers.jsonを再取得し、一から解析することになります。MCP はこれを1時間キャッシュします。 -
ドキュメントで詳しく説明されていない URL 構築上の注意点に対応します。 XBRL frames エンドポイントの
CY{period}プレフィックス、instant コンセプトの末尾に付けるI、ゼロ埋めされた CIK、アーカイブ URL でハイフンを除いたアクセッション番号などです。実行時に間違えやすい点を、ツールに一度だけ組み込んでいます。 -
レスポンスを整形します。
companyfactsのレスポンスは数十 MB に達し、filings.recentは列優先の並列配列形式です。どちらも利用可能ですが、言語モデルが形式を整えるだけで多くのコンテキストを消費してしまいます。MCP は項目を絞り込み、行形式にした JSON を返します。 -
機能を見つけやすくします。 MCP をインストールすると、ツール一覧から Claude が SEC の提出書類を検索できることや、よく使われるコンセプト名が分かります。インストールしていない場合、モデルはエンドポイントの存在を覚えている必要があります。
年に1〜2件の提出書類を取得するだけなら、これは必要ありません。Claude に URL を渡してください。それ以上の頻度で使うなら、「会話のたびに URL の書式を説明する」手間を「自然な質問をする」だけに変えられるため、このラッパーの導入は十分に価値があります。
インストール
Cargo でインストールします(Rust 1.88 以降)。
cargo install sec-mcp
これにより、rustls の暗号バックエンド(ring)がコンパイルされます。少量の C コードを含むため、ビルドホストには C コンパイラー が必要ですが、cmake やアセンブラーは不要です。
macOS(Xcode Command Line Tools)や、ほとんどのデスクトップ Linux ディストリビューションにはすでに含まれています。
最小構成の Linux イメージには含まれていない場合があるため、先にインストールしてください。たとえば Debian/Ubuntu では apt install build-essential を実行します。
Claude Desktop の設定
~/Library/Application Support/Claude/claude_desktop_config.json を編集します。
{
"mcpServers": {
"sec-edgar": {
"command": "sec-mcp",
"args": []
}
}
}
Claude Desktop を再起動します。
初回の使用
SEC に関連するリクエストを初めて行うと、Claude は SEC EDGAR の公正利用ポリシーで連絡先メールアドレスが必要であることを説明し、続行する前に許可を求めます。メールアドレスはローカルの ~/Library/Application Support/sec-mcp/config.toml に保存され、SEC に送信される HTTP User-Agent ヘッダーでのみ使用されます。それ以外の場所に共有されることはありません。
プロンプトの例
- 「Appleの最近のSEC提出書類を教えてください」
- 「Teslaの過去5年間の年間売上高を表示してください」
- 「前四半期のMicrosoftの純利益はいくらでしたか?」
- 「SECによると、NVDAはどの業界に属していますか?」
- 「Bridgewater AssociatesのCIKと、最近提出した書類を教えてください」
- 「Sonosの株式を5%超保有しているのは誰ですか?そのうち13Dを提出した人はいますか?」
- 「SpaceXは上場前に、非公開の資金調達ラウンドでいくら調達しましたか?」
- 「前四半期におけるBridgewaterの保有銘柄上位10件を教えてください」
- 「過去1時間に提出された8-Kはどれですか?また、どの項目が報告されましたか?」
- 「先週提出されたSchedule 13Dをすべて一覧表示してください」
- 「Amazonの最新の10-K提出書類を表示してください」
- 「名称に『energy』が含まれる、NYSE上場の銘柄を教えてください」
- 「AppleはSECにどのような財務指標を報告していますか?」
- 「Airbnbは2025年第1四半期の決算発表で、どのような売上高見通しを示しましたか?」
- 「Teslaの最新の10-Kに記載されたリスク要因を要約してください」
- 「2024年に売上高が最も高かった企業はどこですか?」
利用可能なツール
| ツール | 説明 |
|---|---|
sec_configure | 初回セットアップ — 連絡先メールアドレスを保存します |
sec_lookup_cik | ティッカーをSEC CIK番号に対応付けます。または、ファンドマネージャー、非公開発行体、ティッカーのない個人を含む、EDGARのすべての提出者を名前で検索します |
sec_company_info | SICコード、業種、設立州、会計年度末、住所 |
sec_recent_filings | 直接URL付きの最近の提出書類(10-K、10-Q、8-Kなど)。書式タイプのフィルターで必要な場合は、古い履歴も自動的にページをたどって検索します。ティッカーを指定しない場合は、リアルタイムでEDGAR全体から最新の提出書類をフォーム別に取得し、各提出書類の当事者と8-Kの項目も含めます |
sec_filing_text | 提出書類または添付資料(10-K、10-Q、8-K、決算発表EX-99.1、委任状)のテキストを取得します。セクションの一覧、項目別のセクション、文書内検索、任意の箇所からのページ取得が可能です。提出書類を指定すると、文書を種類別に一覧表示します |
sec_full_text_search | 2001年以降の提出書類の本文を検索します。ここにあるツールの中で、会社をあらかじめ指定せず、会社が 述べた内容 から企業を見つけられる唯一のツールです。フォーム、ティッカー、日付でフィルターできます(修正書類は指定がない限り除外されます)。検索結果にはすべて文書への直接URLが付いています。クエリを指定しない場合は、2001年以降の任意の期間について、フォームと日付で提出書類を一覧表示します |
sec_insider_transactions | フォーム3、4、5 — 誰がいつ何株をいくらで購入または売却したかを、取引コードを平易な言葉で示し、脚注も解決して取得します。また、インサイダーによる売却予定通知であるフォーム144も対象とし、10b5-1プランの日付があれば含めます |
sec_institutional_holdings | フォーム13F — 機関投資家マネージャー(Berkshire、Bridgewater、BlackRockなど)が各四半期に保有する銘柄を、発行体でフィルター可能なポジションとして取得します。評価額、ポートフォリオに占める割合、議決権限も含みます。13Fにはティッカーがないため、発行体名は提出書類の記載どおりです |
sec_private_offerings | フォームD — 非公開企業、ファンド、公開企業が登録募集を行わずに調達した資金を取得します。募集額と販売額、投資家、申告された免除規定、支払われたブローカー報酬、記載された役員・取締役・プロモーターも含みます |
sec_beneficial_ownership | スケジュール13Dおよび13G — 会社の5%超を保有する者について、議決権および処分権、種類別の保有割合、13Dの場合は保有者が表明した目的を取得します。保有者のCIKを指定すると、その保有者が5%超を保有する銘柄を取得できます |
sec_financial_concept | XBRLから過去の財務データ(売上高、純利益、EPS、資産など)を取得します。デフォルトでは最新の20件の事実を取得し、ページをたどって古い履歴も参照できます |
sec_list_tickers | SEC登録済みのすべてのティッカーを取引所情報付きで検索・一覧表示します。1ページあたり50件で、ページをたどって表示できます |
sec_company_facts | 企業が報告するすべてのXBRL概念(指標)を特定します |
sec_xbrl_frames | 指定期間の財務指標を企業間で比較します |
ティッカーを受け取るツールでは、CIK(1163302、0001163302、または
CIK0001163302)も指定できます。SECのティッカー一覧には現行のティッカーのみが掲載されているため、
買収、上場廃止、または社名変更された企業にはCIKでのみアクセスできます。sec_lookup_cikに
nameを指定すると企業を見つけられ、全文検索のヒットとフレームの行にもCIKが含まれます。
修正報告(10-K/A など)
末尾が /A のフォームは、以前に提出されたフォームを修正するものです。10-K/A は、完全な年次報告書ではないことがよくあります。規則 12b-15 で求められるのは、変更対象となる各項目の全文だけです。そのため、最も一般的な修正報告書は Part III(取締役、報酬、所有権)のみで、委任状説明書が 120 日の期限に間に合わなかった場合に提出されます。その他には、添付書類を追加または修正するものもあります。残りは、元の数値を置き換える修正再表示です。たとえば、Apple は 2010 年 1 月の 10-K/A で、新しい収益認識規則に基づく 2009 会計年度の報告書を再提出しました。
そのため、sec-mcp では、明示的に指定されない限り修正報告書を除外します。
sec_financial_conceptのannual/quarterly期間フィルターは、基本フォームのみを対象にします。修正対象の期間は元の提出書類ですでにカバーされており、両方を含めると、1 つの期間について 2 つの数値が報告されてしまいます。修正再表示された数値が必要な場合は、include_amendments: trueを渡して対象に含めてください。Apple の 2009 会計年度の売上高は、元の 10-K では 365 億ドル、10-K/A では 429 億ドルです。その場合、amended_factsがその件数をカウントします。- フォームフィルターを指定した
sec_full_text_searchでは、修正報告書が除外されます。EDGAR 自体は除外しません。提出書類の root フォームでフィルタリングするため、forms=10-Kは10-K/Aも返します。修正報告書を取得するには、フォームを直接指定する(10-K/A)、両方を指定する(10-K,10-K/A)、またはinclude_amendments: trueを渡してください。返された修正報告書にはamendment: trueのマークが付きます。
この検索フィルタリングは EDGAR による処理の後に行われるため、レスポンスの次の 2 つの部分は通常の検索とは異なる動作をします。
totalは、除外された修正報告書も含む EDGAR の件数のままです。total_is_upper_boundが付与されます。さらに 10000 件で上限に達した場合は、total_is_approximateが付与されます。各ページにはamendments_excludedが表示されます。- ページ送りには
next_offsetを使用する必要があります。修正報告書がスキップされるため、ページのヒット件数はlimit未満になる場合があります。そのため、offset + returnedを使うと、修正報告書を再度取得してしまいます。
sec_financial_concept でよく使われる XBRL の概念
| 概念 | 内容 |
|---|---|
Revenues | 総収益 |
NetIncomeLoss | 純利益/損失 |
EarningsPerShareBasic | 基本 EPS |
EarningsPerShareDiluted | 希薄化後 EPS |
Assets | 総資産 |
Liabilities | 総負債 |
StockholdersEquity | 株主資本 |
OperatingIncomeLoss | 営業利益/損失 |
CashAndCashEquivalentsAtCarryingValue | 現金および現金同等物 |
CommonStockSharesOutstanding | 発行済普通株式数 |
開発
cargo test # offline; hits no network
また、オプトイン方式のライブテストスイートもあります。ビルド済みサーバーを stdio 経由で実際の SEC EDGAR API に接続してテストするもので、レスポンス形式の変更や URL 構築上の予期しない問題など、オフラインテストでは検出できない事象を確認できます。SEC_MCP_LIVE_EMAIL が設定されていない場合はスキップされます。この変数を設定すると、テストが有効になると同時に、公正利用ポリシーで必要とされる連絡先メールアドレスも指定されます(アドレスは環境変数から読み取られ、コミットされることはありません)。
SEC_MCP_LIVE_EMAIL="[email protected]" cargo test --test live_smoke -- --nocapture
このテストスイートは、1 つのサーバープロセスを通じて順次実行されるため、EDGAR のレート制限を十分に下回ります。
ライセンス
MIT — 詳細は LICENSE.md を参照してください。
MCP レジストリ
MCP レジストリの所有権確認トークン(crates.io にレンダリングされたこのクレートの README から読み取られます)。
レジストリ所有権トークン:
mcp-name: io.github.brechanbech/sec-mcp
リリース
バージョンは公開後に変更できません。crates.io では取り下げはできますが削除はできず、バージョン番号を再利用することもできないため、順序が重要です。
-
cargo testとcargo clippy --all-targetsが問題なく完了することを確認します。 -
Cargo.tomlのversionを更新します。 -
server.jsonのversionを更新します。トップレベルのものとpackages[]の下にあるものの、両方です。これを強制するものは何もありません。スクリプトも、CI も、このファイルを読むテストもなく、抜け落ちるのはこの手順です。このマニフェストは正しいままでしたが、レジストリのエントリーは正しくありませんでした。手順 6 が実行されなかったため、0.5.0、0.5.1、0.5.2 は crates.io に公開された一方、レジストリには 0.4.4 と掲載されたままでした。 -
コミットしてプッシュし、公開後ではなく公開前に CI が成功するのを待ちます。
-
cargo publish --dry-runを実行します。パッケージ化されたコピーからコンパイルするため、クレートが同梱されていないファイルに依存している場合に検出できます。その後、cargo publishを実行します。どちらにも--target-dir target/package-verifyを指定してください。指定しない場合、検証ビルドは通常のビルドと同じユニットハッシュでtarget/debugを共有するため、バイナリのフィンガープリントは、手元のものではなくパッケージ化されたsrc/main.rsを追跡するようになります。その後に変更を加えてもtarget/debug/sec-mcpは再ビルドされず、tests/live_smoke.rsのオフラインの stdio テストは、公開済みのコードを気付かずに実行します。そうなった場合は、cargo clean -p sec-mcpで修復できます。 -
crates.io への公開後に、MCP レジストリへ公開します。順序を逆にしてはいけません。レジストリは crates.io 上のこのクレートのレンダリング済み READMEから
mcp-nameを読み取って名前空間を検証し、server.jsonには、すでにそこで公開されている必要がある cargo のバージョンが記載されているためです。mcp-publisher validate # checks server.json against the live registry mcp-publisher login github # interactive, for the io.github.brechanbech/* namespace mcp-publisher publish -
Codeberg と GitHub ミラーの両方でタグのリリースを作成し、そのバージョンの CHANGELOG セクションをリリースノートとして使います。タグだけではリリースになりません。Glama は GitHub ミラーを読み取るため、すべてのタグがありながらリリースがなかった際に「安定版リリースが見つかりません」と報告しました。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。