EdgarTools

Query SEC EDGAR filings, financials, insider trades and fund holdings from an MCP client

By Dwight Gunning (individual) Python Local · stdio Finance and paymentsWeb search

84 popularity score ★ 2.8k ↓ 842k/mo

Connect your client

Local (PyPI)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

It needs EDGAR_IDENTITY. Replace each <NAME> with your value.

Claude CodeTerminal
claude mcp add edgartools -e EDGAR_IDENTITY=<EDGAR_IDENTITY> -- uvx --from 'edgartools[ai]' edgartools-mcp
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "edgartools": {
      "command": "uvx",
      "args": [
        "--from",
        "edgartools[ai]",
        "edgartools-mcp"
      ],
      "env": {
        "EDGAR_IDENTITY": "<EDGAR_IDENTITY>"
      }
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "edgartools": {
      "command": "uvx",
      "args": [
        "--from",
        "edgartools[ai]",
        "edgartools-mcp"
      ],
      "env": {
        "EDGAR_IDENTITY": "<EDGAR_IDENTITY>"
      }
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "edgartools": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "--from",
        "edgartools[ai]",
        "edgartools-mcp"
      ],
      "env": {
        "EDGAR_IDENTITY": "<EDGAR_IDENTITY>"
      }
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.edgartools]
command = "uvx"
args = ["--from", "edgartools[ai]", "edgartools-mcp"]

[mcp_servers.edgartools.env]
EDGAR_IDENTITY = "<EDGAR_IDENTITY>"
Gemini CLITerminal
gemini mcp add --scope user -e EDGAR_IDENTITY=<EDGAR_IDENTITY> edgartools uvx -- --from 'edgartools[ai]' edgartools-mcp

Settings 1

EDGAR_IDENTITY Required: Your name and email sent to the SEC with each request, e.g. "Your Name your.email@example.com".

What it does

EdgarTools is an open-source Python library for SEC EDGAR, and its `ai` extra adds an MCP server (`edgartools-mcp`, also started as `python -m edgar.ai`). The server talks to the SEC's public EDGAR systems directly, so it needs no API key: the SEC only asks that each request carry a name and email, which you set in `EDGAR_IDENTITY`.

At version 5.62.0 the server registers 13 tools, one per module imported in edgar/ai/mcp/server.py. They cover company profiles and financial statements, metadata and full-text filing search, a feed of filings submitted in the last few minutes, parsing any filing into structured data and pulling named sections (risk factors, MD&A) or the notes behind the numbers, multi-period trends with growth rates, peer comparison, Form 4 insider and 13F institutional ownership, fund data, and executive pay from proxy statements. It also serves seven ready-made prompts (due_diligence, earnings_analysis, industry_overview, insider_monitor, fund_analysis, filing_comparison, activist_tracking) and two documentation resources.

It runs over stdio by default; `--transport streamable-http` serves it at `/mcp` on port 8000 for a shared team deployment. It is a community project maintained by one person, not a product of the SEC.

What it needs

RuntimePython

Python with the `edgartools[ai]` extra, run through uv's `uvx` (as below) or installed with `pip install "edgartools[ai]"` and started as `python -m edgar.ai`. Claude Desktop does not inherit your shell PATH, so its config needs the full path to `uvx` or `python3`. A name and email for `EDGAR_IDENTITY`; no SEC account or key. Internet access to sec.gov.

Limits

Read-only: it fetches public SEC filings and cannot submit anything. Results are capped by per-tool defaults, e.g. edgar_search returns 10 by default, edgar_screen 25, edgar_monitor and edgar_ownership 20, and edgar_company 4 financial periods unless `limit` or `periods` is raised. If `EDGAR_IDENTITY` is unset the server still starts but only logs a warning (edgar/ai/mcp/server.py), even though its setup page calls the variable required; SEC requests then lack the identity the SEC asks for. The HTTP transport has no authentication of its own. Versions 5.25.1 and earlier fail with an outputSchema validation error in clients; the old run_mcp_server.py entry point is deprecated.

Who it suits

Analysts, researchers and developers who want an assistant to answer questions from primary SEC filings (10-K, 10-Q, 8-K, Form 4, 13F, DEF 14A, fund reports) without paying for a data API, running locally on their own machine. It only reads public data, so the risk surface is small. Those who want LLM-classified events, disclosure search across XBRL topics or AI summaries can look at the maker's separate hosted edgar.tools MCP server (which we also list), which does that processing server-side but truncates responses on its free tier and charges $24.99 a month for full results.

Tools 13

edgar_company
Profile, financial statements, recent filings and ownership for a ticker, CIK or company name
edgar_search
Find companies or filings by metadata such as name or form type
edgar_screen
Filter companies by industry, exchange or state using bundled reference data
edgar_text_search
Full-text search of filing contents through the SEC's EFTS, with form and date filters
edgar_monitor
List filings submitted to the SEC in the last few minutes, optionally by form
edgar_filing
Parse one filing, by company and form or accession number or URL, into structured data
edgar_read
Pull named sections such as risk factors or MD&A out of a filing
edgar_notes
Read the notes and disclosures behind financial statement figures
edgar_trends
Financial time series from XBRL with year-over-year and quarterly growth and CAGR
edgar_compare
Compare companies side by side or across an industry on financial metrics
edgar_ownership
Form 4 insider transactions or 13F institutional portfolios
edgar_fund
Mutual fund, ETF, BDC and money market fund lookup, holdings and yields
edgar_proxy
Executive compensation and pay-versus-performance from DEF 14A proxies

Similar servers