/ Directory / Playground / SEC EDGAR MCP
● Community stefanoamorelli ⚡ Instant

SEC EDGAR MCP

by stefanoamorelli · stefanoamorelli/sec-edgar-mcp

Grounded U.S. filings at your agent's fingertips — CIK lookup, 10-K/10-Q/8-K, XBRL financials, Form 3/4/5 insider trades, every answer linkable to the SEC source.

sec-edgar-mcp gives agents structured access to the SEC's EDGAR system. It resolves companies by ticker or name to CIK, pulls specific filings (10-K, 10-Q, 8-K), extracts sections, parses XBRL into balance sheet / income statement / cash flow, and surfaces insider trading (Form 3/4/5). Every response includes SEC URLs so you can verify the number yourself. Public data only — no API key required beyond a compliant User-Agent.

Why use it

Key features

Live Demo

What it looks like in practice

sec-edgar-mcp.replay ▶ ready
0/0

Install

Pick your client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "sec-edgar-mcp": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "SEC_EDGAR_USER_AGENT=Your Name ([email protected])",
        "stefanoamorelli/sec-edgar-mcp:latest"
      ]
    }
  }
}

Open Claude Desktop → Settings → Developer → Edit Config. Restart after saving.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "sec-edgar-mcp": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "SEC_EDGAR_USER_AGENT=Your Name ([email protected])",
        "stefanoamorelli/sec-edgar-mcp:latest"
      ]
    }
  }
}

Cursor uses the same mcpServers schema as Claude Desktop. Project config wins over global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "sec-edgar-mcp": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "SEC_EDGAR_USER_AGENT=Your Name ([email protected])",
        "stefanoamorelli/sec-edgar-mcp:latest"
      ]
    }
  }
}

Click the MCP Servers icon in the Cline sidebar, then "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "sec-edgar-mcp": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "SEC_EDGAR_USER_AGENT=Your Name ([email protected])",
        "stefanoamorelli/sec-edgar-mcp:latest"
      ]
    }
  }
}

Same shape as Claude Desktop. Restart Windsurf to pick up changes.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "sec-edgar-mcp",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "SEC_EDGAR_USER_AGENT=Your Name ([email protected])",
        "stefanoamorelli/sec-edgar-mcp:latest"
      ]
    }
  ]
}

Continue uses an array of server objects rather than a map.

~/.config/zed/settings.json
{
  "context_servers": {
    "sec-edgar-mcp": {
      "command": {
        "path": "docker",
        "args": [
          "run",
          "-i",
          "--rm",
          "-e",
          "SEC_EDGAR_USER_AGENT=Your Name ([email protected])",
          "stefanoamorelli/sec-edgar-mcp:latest"
        ]
      }
    }
  }
}

Add to context_servers. Zed hot-reloads on save.

claude mcp add sec-edgar-mcp -- docker run -i --rm -e 'SEC_EDGAR_USER_AGENT=Your Name ([email protected])' stefanoamorelli/sec-edgar-mcp:latest

One-liner. Verify with claude mcp list. Remove with claude mcp remove.

Use Cases

Real-world ways to use SEC EDGAR MCP

Do a fast 10-K read with exact numbers and citations

👤 Analysts, investors, journalists covering public companies ⏱ ~30 min intermediate

When to use: You need to read a 10-K this afternoon, not this week.

Prerequisites
  • SEC_EDGAR_USER_AGENT set with your name and email — SEC requires a contactable User-Agent for programmatic access
Flow
  1. Resolve the company
    Look up the CIK for Microsoft.✓ Copied
    → CIK 0000789019 returned
  2. Pull the latest 10-K
    Get the latest 10-K and extract the Risk Factors section.✓ Copied
    → Risk Factors section returned with filing URL
  3. Pull the numbers
    Extract balance sheet and income statement for FY2025.✓ Copied
    → Clean rows with values + units + filing URL

Outcome: A digestible 10-K read with verifiable links back to EDGAR.

Pitfalls
  • Confusing fiscal and calendar years — Always print the fiscal period in the answer so users can sanity-check
Combine with: yahoo-finance

Track insider transactions for a watchlist

👤 Investors following insider sentiment ⏱ ~20 min intermediate

When to use: You want a daily brief on Form 4 activity for your watchlist.

Flow
  1. List insiders for each ticker
    For AAPL, MSFT, NVDA — pull Form 4 transactions in the last 30 days.✓ Copied
    → Rows with insider name, role, buy/sell, shares, price, date
  2. Aggregate
    Summarize net insider buying vs selling per ticker.✓ Copied
    → One line per ticker with net direction

Outcome: A crisp insider brief without scraping EDGAR by hand.

Pitfalls
  • Counting option-related transactions as 'buys' — Filter transaction codes; P/S vs A/M/D matter
Combine with: alpaca

Summarize today's 8-K filings on a watchlist

👤 Newsrooms, corporate dev teams, investor relations ⏱ ~10 min beginner

When to use: Something material happened; you want the plain-English summary fast.

Flow
  1. Pull recent 8-Ks
    Pull today's 8-K filings for tickers in my watchlist.✓ Copied
    → Per filing: item codes + link
  2. Summarize
    For each, one-sentence plain-English summary with the item code.✓ Copied
    → Clear summary with the SEC URL

Outcome: A watchlist digest you can trust and link through.

Combine with: fetch

Compare two companies' financials side by side

👤 Equity analysts, students building models ⏱ ~20 min intermediate

When to use: You need a quick apples-to-apples comparison.

Flow
  1. Pull both companies' XBRL
    Get revenue, gross profit, operating income, net income for AAPL and MSFT for FY2024.✓ Copied
    → Aligned table with units and filing URLs
  2. Diff the margins
    Compute and compare gross and operating margins.✓ Copied
    → Margins side by side; link to each filing

Outcome: A defensible comparison with exact source URLs.

Combine with: antv-chart

Combinations

Pair with other MCPs for X10 leverage

sec-edgar-mcp + yahoo-finance

Pair SEC fundamentals with current market quotes

Pull MSFT's latest 10-K net income and today's market cap; compute implied multiples.✓ Copied
sec-edgar-mcp + alpaca

Use insider signals as a screen

For tickers with net insider buying in the last 30 days, list current prices from Alpaca.✓ Copied
sec-edgar-mcp + antv-chart

Chart the extracted XBRL numbers

Pull 5 years of revenue and plot it with antv-chart.✓ Copied

Tools

What this MCP exposes

ToolInputsWhen to callCost
lookup_cik ticker_or_name: str First step for any company query 1 SEC request
get_company_facts cik: str Discover what line items are reported 1 SEC request
get_filings cik: str, form_type: str, limit?: int Pull 10-K / 10-Q / 8-K filings 1 SEC request
extract_section accession_number: str, section: str Read a specific section (e.g., Risk Factors, MD&A) 1 SEC request
get_financials cik: str, period: str Structured financial statements with units 1 SEC request
get_insider_transactions cik: str, days?: int Form 3/4/5 activity 1 SEC request

Cost & Limits

What this costs to run

API quota
SEC rate limit: ~10 requests/sec per IP — respect it
Tokens per call
Small for metadata, filings can be very large (tens of thousands of tokens)
Monetary
Free — EDGAR is public
Tip
Use extract_section instead of dumping the whole filing; the MD&A or Risk Factors sections alone are usually enough.

Security

Permissions, secrets, blast radius

Credential storage: SEC_EDGAR_USER_AGENT identifies you to SEC; use a real name and contactable email. Do not commit your personal email to a shared config.
Data egress: All calls go to sec.gov. No third-party services in the default config.

Troubleshooting

Common errors and fixes

403 from sec.gov

Your User-Agent is missing or malformed. SEC requires 'Name ([email protected])' format.

Verify: echo $SEC_EDGAR_USER_AGENT
Rate limited (429)

Back off to under 10 req/s. Batch by CIK rather than issuing many parallel calls.

Verify: Inspect headers on the failing response
XBRL concept not found

Company may not report that concept. Use get_company_facts to see which concepts exist.

Verify: get_company_facts(cik) and grep for the concept

Alternatives

SEC EDGAR MCP vs others

AlternativeWhen to use it insteadTradeoff
yahoo-financeYou want quotes + basic fundamentals without SEC-level precisionLess authoritative; no direct filings
alpacaYou need brokerage market data and tradingNo filings; different data shape

More

Resources

📖 Read the official README on GitHub

🐙 Browse open issues

🔍 Browse all 400+ MCP servers and Skills