mcpField
S
SEC EDGAR Filings

SEC EDGAR Filings

ローカル
github.com/SudiptoHaldar金融データ04 日前に更新

SEC EDGAR Filings について

SEC EDGAR Filings は、株式ティッカーに対応する SEC 提出書類のメタデータと公式 EDGAR リンクを返す読み取り専用 MCP サーバーです。研究者や金融情報ワークフロー向けに最新書類、暦年別履歴、書類種別を提供し、内容の取得や要約は行いません。

主な機能

  1. 01ティッカーから最新提出書類を検索
  2. 02暦年別の提出記録をページ分割で一覧
  3. 03SEC 書類種別による絞り込み
  4. 04公式 EDGAR リンクの提供
  5. 05クライアント向けリソースとプロンプト

活用シーン

  1. 01企業の最新提出日と書類種別を確認
  2. 02暦年ごとの企業提出書類を整理
  3. 03提出書類の絞り込み用 EDGAR コードを調べる

MCP 対応

stdio 経由で MCP を利用し、提出メタデータと公式リンクを調べるための読み取り専用ツール 3 個、リソース 5 個、プロンプト 3 個をクライアントに提供します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"sudiptohaldar-mcp-server-edgar": {
"command": "uvx",
"args": [
"mcp-server-edgar"
],
"env": {
"MCP_EDGAR_USER_AGENT": "<MCP_EDGAR_USER_AGENT>"
}
}
}
}
起動コマンドuvx mcp-server-edgar
設定が必要な環境変数
MCP_EDGAR_USER_AGENTSEC fair-access identification: your product name and contact e-mail, e.g. acme-research/1.0 ([email protected]). Optional; the default names the maintainer.

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

パッケージ
pypimcp-server-edgar0.1.2

ツール

3

掲載時のツール一覧 · 4 日前に更新

パラメーター型必須説明
cikanyいいえ
formsanyいいえ
tickerstringはい

詳細

SEC EDGAR MCP サーバー

CI PyPI MCP Registry

stdio 経由で動作する読み取り専用のModel Context Protocolサーバーです。株式ティッカーを受け取り、SEC の Central Index Key(CIK)に解決し、公式 EDGAR リンク付きの提出書類メタデータを返します。3 つのツール、5 つのリソース、3 つのプロンプトを公開します。API キーは不要です。SEC EDGAR は公開されており、このサーバーは説明的な User-Agent で自身を識別するだけです。提出書類の内容を読み取ったり、ダウンロードしたり、要約したりすることはありません。どの提出書類が存在するか、また sec.gov のどこにあるかを知らせます。

PyPI では mcp-server-edgar として公開され、Official MCP Registry には io.github.SudiptoHaldar/mcp-server-edgar として登録されています。

インストールと実行

このサーバーは、コンソールエントリポイントを備えた Python パッケージです。実行する最も簡単な方法はuvを使うことです。必要に応じて Python 3.11 以降を取得します。

uvx mcp-server-edgar

または、Python 3.11 以降の任意の環境にインストールできます。

pip install mcp-server-edgar
mcp-server-edgar

実行ファイルは標準入力と標準出力で MCP 通信を行い、MCP クライアントから起動されることを想定しているため、単独ではクライアントからの接続を待ちます。対話形式で試すには、MCP Inspectorを使います。

npx -y @modelcontextprotocol/inspector uvx mcp-server-edgar

MCP クライアントの設定

Claude Desktop や、JSON で設定するほとんどのクライアントでは、mcpServers エントリを使用します。任意の env ブロックで SEC のフェアアクセス連絡先を設定できます(「設定」を参照)。

{
  "mcpServers": {
    "sec-edgar": {
      "command": "uvx",
      "args": ["mcp-server-edgar"],
      "env": {
        "MCP_EDGAR_USER_AGENT": "acme-research/1.0 ([email protected])"
      }
    }
  }
}

Claude Code:

claude mcp add sec-edgar -- uvx mcp-server-edgar

ツール

3 つのツールはいずれも読み取り専用で、何が起きたかを示す status フィールドを含む JSON オブジェクトを返します(「結果とエラー」を参照)。年は常に提出日、つまり SEC が提出書類を受領した日を指し、提出書類の対象期間を指すものではありません。

get_latest_filing — SEC の最新提出書類

ティッカーの最新の提出書類を取得します。フォームの種類を指定して絞り込むこともできます。

引数型デフォルト説明
tickerstring必須株式ティッカー。例:AAPL。大文字・小文字と前後の空白は無視されます。BRK.B と BRK-B は同じものとして扱われます
formslist of stringsすべてのフォームフォームの種類を完全一致で指定します(大文字・小文字は区別しません)。["10-K"] は 10-K に一致しますが、10-K/A には一致しません
cikstring or integerなしSEC CIK(1~10 桁)。ambiguous の応答があった場合に限り、列挙された候補から選ぶために指定します。ティッカーの候補として一覧に表示されている必要があります

呼び出し例:get_latest_filing("AAPL", ["10-K"])。結果を一部抜粋しています。値は 2026-11-01 時点のものです。

{
  "status": "ok",
  "company": {"cik": "0000320193", "name": "Apple Inc.", "ticker": "AAPL", "exchange": "Nasdaq"},
  "forms": ["10-K"],
  "filing": {
    "form": "10-K",
    "filing_date": "2025-10-31",
    "report_date": "2025-09-27",
    "accession_number": "0000320193-25-000079",
    "filing_url": "https://www.sec.gov/Archives/edgar/data/320193/000032019325000079/0000320193-25-000079-index.htm",
    "primary_document_url": "https://www.sec.gov/Archives/edgar/data/320193/000032019325000079/aapl-20250927.htm"
  },
  "message": "Newest 10-K by Apple Inc. (AAPL): filed 2025-10-31."
}

会社が指定されたフォームの提出書類を持たない場合、filing は null になります。

list_filings_by_year — 年別の提出書類

企業が暦年中に提出したすべての書類を、新しいものから順にページ単位で返します。

引数型デフォルト意味
tickerstring必須上記と同じです
yearinteger必須提出日の暦年。1993年以降。未来の年を指定すると空のリストが返されます
formslist of stringsすべてのフォーム上記と同じです
limitinteger100ページサイズ。大きい値はサーバーの上限に制限されます
offsetinteger0スキップする提出書類の数。前の結果の next_offset を渡します
cikstring or integerなし上記と同じです

年は会計年度ではなく提出年です。Appleの2025年9月終了の会計年度に関する10-Kは 2025-10-31に提出されたため、year=2025に該当します。2025年の会計年度に関する10-Kが 2026年1月に提出された場合は、year=2026に該当します。古い年のデータはSECの 履歴ファイルから自動的に提供されます。

呼び出し例 list_filings_by_year("AAPL", 2025, ["10-K", "10-Q"])。結果の抜粋、値は 2026-11-01時点:

{
  "status": "ok",
  "company": {"cik": "0000320193", "name": "Apple Inc.", "ticker": "AAPL", "exchange": "Nasdaq"},
  "year": 2025,
  "forms": ["10-K", "10-Q"],
  "limit": 100,
  "offset": 0,
  "total_count": 4,
  "returned_count": 4,
  "next_offset": null,
  "filings": [
    {
      "form": "10-K",
      "filing_date": "2025-10-31",
      "report_date": "2025-09-27",
      "accession_number": "0000320193-25-000079",
      "filing_url": "https://www.sec.gov/Archives/edgar/data/320193/000032019325000079/0000320193-25-000079-index.htm",
      "primary_document_url": "https://www.sec.gov/Archives/edgar/data/320193/000032019325000079/aapl-20250927.htm"
    }
  ],
  "message": "Apple Inc. (AAPL): 4 filings of form 10-K, 10-Q with a filing date in 2025."
}

ページを続けるには、offsetにnext_offsetを設定して、nullになるまで再度呼び出します。ページが重複することはありません。 提出書類がない年も、total_countが0のokとして返されます。

list_form_types — EDGARのフォームタイプ

直近の四半期に提出されたEDGARの提出書類タイプコードを、出現頻度の高い順に返します。formsで使用できる値を確認するために使います。formはEDGARで使われるコードそのものです(10-K、10-K/A、 SCHEDULE 13G/A、424B2、NPORT-P)。

引数型デフォルト意味
querystringなしコードと説明を対象に、大文字小文字を区別せずに照合するテキストです。"10-K"では10-K、10-K/A、10-KTなどが一覧表示され、"/A"では修正書類が一覧表示されます
limitinteger1001ページあたりの項目数
offsetinteger0スキップする項目の数。前の結果のnext_offsetを渡します

カタログはパッケージに同梱されたスナップショットで、リリース前の完了済み4四半期分を集計し、リリースごとに更新されます。対象のリリースはcatalogue.generated_onとcatalogue.quartersで確認できます。この呼び出しによってSECへのリクエストは発生しません。descriptionとtopicsは、フォーム番号が判明している場合はSEC Forms Listから取得され、それ以外の場合はnullです。

呼び出し例 list_form_types("10-K")。結果の抜粋、値は2026-11-01時点:

{
  "status": "ok",
  "query": "10-K",
  "total_count": 6,
  "returned_count": 6,
  "next_offset": null,
  "catalogue": {"generated_on": "2026-11-01", "quarters": ["2025Q4", "2026Q1", "2026Q2", "2026Q3"]},
  "form_types": [
    {"form": "10-K", "description": "Annual report pursuant to Section 13 or 15(d)", "amendment": false, "filings": 6723},
    {"form": "10-K/A", "description": "Annual report pursuant to Section 13 or 15(d)", "amendment": true, "filings": 616}
  ],
  "message": "6 form types match '10-K' in 2025Q4-2026Q3."
}

結果とエラー

各ツールはJSONオブジェクトを返します。想定される状況はプロトコルエラーではなくstatusで報告されるため、クライアントはそれに応じて処理できます。

status意味併せて含まれる内容
okリクエストに成功しましたcompanyと、上記に示したfiling/filings/form_types
not_foundティッカーに該当するSECの発行体が登録されていません—
ambiguous同じティッカーの発行体が複数あり、いずれも選択されていませんcandidates:{cik, name, ticker, exchange}のリスト。選択したcikを指定して再度呼び出します
invalid_inputリクエストを行う前に引数が拒否されましたfield:問題のある引数
upstream_errorSEC EDGARが時間内に応答しなかった、レート制限を適用した、または不正なデータを返しましたretryable(ブール値)とretry_after_seconds(nullの場合があります)

すべてのオブジェクトには1行のmessageも含まれます。提出書類レコードには必ずform、 filing_date、report_date(対象期間。参考情報であり、nullの場合があります)、 accession_number、filing_url(sec.gov上の公式提出書類インデックスページ)が含まれます。 SECにメイン文書が記載されており、ファイル名が安全な場合はprimary_document_urlがその文書を指し、それ以外の場合はnullです。

リソース

リソースをコンテキストとして添付できるクライアントは、ツール呼び出しを行わずにこれらの JSON ドキュメントを直接読み取れます。リソースはツールと同じコードパスで構築されるため、リソースとそのツールの内容は常に一致します。

URIペイロード
edgar://companies/{ticker}/profile{cik, name, ticker, exchange, tickers}:発行体の識別情報に加え、その CIK の下で SEC が掲載しているすべてのティッカー(GOOGL → ["GOOGL", "GOOG"])
edgar://companies/{ticker}/latest{company, filing}:get_latest_filing(ticker) の company と filing そのもの。発行体に提出書類がない場合、filing は null です
edgar://issuers/{cik}/profileCIK で指定したプロフィール(1~10 桁の任意の表記)
edgar://issuers/{cik}/latestCIK で指定した最新の提出書類
edgar://form-types{catalogue, form_types}:ページ分割されていない、同梱カタログ全体

ティッカーが曖昧な場合は、edgar://issuers/{cik}/… のルートを使用してください。CIK は SEC のティッカーマップに掲載されている必要があります。リソースには status のエンベロープはありません。不明なティッカー、不正な形式または未掲載の CIK、URI の不一致は「リソースが見つかりません」エラーとなり、曖昧なティッカーまたは SEC の停止はリソースエラーになります。いずれもツールが使用するものと同じメッセージテキストが含まれます。

プロンプト

プロンプトは再利用可能な指示です。ユーザーがクライアントのプロンプトメニューから選択すると、クライアントがレンダリング済みのテキストを挿入し、モデルがその後ツールを使用します。プロンプトにリアルタイムデータは含まれません。

プロンプトタイトル引数レンダリングされたテキストでモデルに求めること
review_latest_filing最新の SEC 提出書類を確認ticker(必須)get_latest_filing を呼び出し、フォームと filing_date を引用し、filing_url をリンクし、report_date を対象期間として扱い、提出書類に記載された内容と解釈を区別する
review_filings_by_year暦年の提出書類を確認ticker、year(両方必須)list_filings_by_year を呼び出し、offset = next_offset が null になるまでページを取得し、フォームの種類ごとにまとめ、その年の概要を説明し、各項目にリンクする
explain_form_typesEDGAR フォームの種類を説明query(任意)list_form_types を呼び出し、一般的なコードを説明し、/A は修正を意味すること、およびカタログは特定日時点のスナップショットであることを示す

すべてのプロンプトの末尾には、同じガードレールが含まれます。メタデータと公式の sec.gov リンクのみを使用すること、サーバーは提出書類の内容を読み取らないこと、すべての提出書類について EDGAR リンクを引用すること、投資助言を行わないこと、また ambiguous という回答があった場合は、cik を指定して再度呼び出す前に、どの発行体を指すのか確認することです。

設定

すべての設定はデフォルト値を持つ環境変数です。値が未設定または空の場合はデフォルト値が使用されます。不正な値が指定されると、変数名を記した 1 行を stderr に出力して、終了コード 1 で起動を停止します。

変数デフォルト受け付ける値用途
MCP_EDGAR_USER_AGENTmcp-server-edgar/<version> ([email protected])空でないこと、@ を含むこと担当者の連絡先を含む SEC の公正利用識別情報。独自の値を設定してください
MCP_EDGAR_TIMEOUT_SECONDS300 より大きい数値SEC リクエストの HTTP タイムアウト
MCP_EDGAR_TICKER_MAP_TTL_SECONDS864000 以上の整数(0 = キャッシュなし)SEC ティッカーマップのキャッシュ期間
MCP_EDGAR_SUBMISSIONS_TTL_SECONDS36000 以上の整数企業の提出書類のキャッシュ期間
MCP_EDGAR_PAGE_CAP1001~1000 の整数list_filings_by_year と list_form_types が返すページの最大件数
MCP_EDGAR_MAX_REQUESTS_PER_SECOND101~10 の整数リクエスト上限。SEC が許可するのは毎秒最大 10 件で、サーバーにそれ以上の値は設定できません
MCP_EDGAR_LOG_LEVELINFODEBUG、INFO、WARNING、ERROR、CRITICALログレベル

SEC は自動化されたすべてのクライアントに連絡先を含む識別情報の提示を求めています。そのため、MCP_EDGAR_USER_AGENT には独自の製品名とメールアドレスを設定してください。ログは stderr のみに出力され、stdout にはプロトコルが出力されます。

SEC EDGAR の利用方法

  • ティッカーから CIK への変換:https://www.sec.gov/files/company_tickers_exchange.json を 1 日間キャッシュします。複数の CIK に登録されているティッカーは ambiguous として報告されます。複数のティッカー(GOOGL、GOOG)に対応する 1 つの CIK は、1 つの発行体として扱われます。
  • 提出書類:https://data.sec.gov/submissions/CIK##########.json(CIK は 10 桁になるよう先頭をゼロで埋めます)を 1 時間キャッシュします。過去の年の情報は、提出書類のドキュメントに記載された履歴ファイルから読み込み、指定された年と日付範囲が重なるものだけを対象とします。
  • リンク:提出書類のインデックスページ …/Archives/edgar/data/<cik>/<accession>/<accession>-index.htm は常に返されます。メイン文書へのリンクは、プレーンなファイル名であることを確認したうえで、SEC のファイル名から作成されます。
  • フェアアクセス:1 秒あたり最大 10 件のリクエスト、内容を説明する User-Agent、プロセスごとのメモリー内キャッシュを使用し、HTTP 429 と一時的な 5xx 応答には上限付きのバックオフ再試行を行います。SEC から応答がない場合、このツールは空の結果ではなく、再試行のヒントを付けて upstream_error を返します。SEC の EDGAR API ドキュメントを参照してください。

既知の制限事項

  • メタデータとリンクのみを提供します。提出書類の内容、XBRL 財務データ、要約、投資助言は提供しません。
  • year は SEC が提出書類を受領した暦年を意味し、報告対象の会計年度ではありません。
  • 電子提出が始まった 1993 年より前の年は、invalid_input として拒否されます。
  • SEC のティッカーマップに掲載されている発行体のみ検索できます。掲載ティッカーのないファンドや非公開提出者は対象外であり、サーバーが任意の CIK を照会することはありません。
  • フォーム種別カタログは各リリース前に取得したスナップショットであり、最新の一覧ではありません。
  • トランスポートは stdio のみです。HTTP エンドポイントおよび認証機能はありません。
  • キャッシュは、1 つのサーバープロセスの稼働中、メモリー内に保持されます。
  • このプロジェクトは、米国証券取引委員会と提携しておらず、同委員会の承認も受けていません。

開発

git clone https://github.com/SudiptoHaldar/mcp_server_edgar
cd mcp_server_edgar
uv sync
uv run pytest -q                                  # unit tests never touch the network
uv run pytest -q -m live                          # opt-in checks against the real SEC
uv run ruff check .
uv run mcp dev src/mcp_edgar/server.py            # MCP Inspector GUI
uv run python scripts/inspector_checklist.py      # 27-row CLI checklist (needs Node and network)

リリース前に同梱のフォーム種別カタログを更新してから、ビルドしてください。

uv run python scripts/refresh_form_types.py
uv build

課題とプルリクエスト:https://github.com/SudiptoHaldar/mcp_server_edgar/issues。

ライセンス

MIT。詳細は LICENSE を参照してください。SEC EDGAR のデータはパブリックドメインであり、SEC のフェアアクセス規則に従って提供されます。

コメント

MCP は初めてですか?

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

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