Query SEC EDGAR filings, XBRL financials, and company data through MCP. STDIO & Streamable HTTP.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Query SEC EDGAR filings, XBRL financials, and company data through MCP. STDIO & Streamable HTTP.
Public Hosted Server: https://secedgar.caseyjhand.com/mcp
Fourteen tools for querying SEC EDGAR data, plus three for SQL analytics over the DuckDB-backed canvas dataframes those tools materialize:
| Tool | Description |
|---|---|
secedgar_company_search | Find companies and retrieve entity info with optional recent filings |
secedgar_search_filings | Search EDGAR filings since 1993 β full-text (2001+) plus archive-backed browse for pre-2001 ranges |
secedgar_get_filing | Fetch a specific filing's metadata and document content |
secedgar_get_financials | Get historical XBRL financial data for a company |
secedgar_get_snapshot | One-call financial profile β the latest value of every supported concept, grouped by statement |
secedgar_get_material_events | 8-K filings with item codes decoded and filterable β earnings, officer changes, non-reliance |
secedgar_get_insider_transactions | Form 4 / 4-A insider transactions (buys, sells, grants, exercises) parsed from ownership XML |
secedgar_get_institutional_holdings | 13F-HR quarterly institutional holdings parsed from the information table |
secedgar_find_holders | Reverse 13F lookup β which institutional managers reported holding an issuer |
secedgar_get_beneficial_owners | 5%+ blockholders of an issuer, parsed from structured SCHEDULE 13D / 13G filings |
secedgar_get_fund_holdings | ETF and mutual fund portfolio holdings from the quarterly NPORT-P report |
secedgar_fetch_frames | Fetch SEC XBRL frames for one concept Γ one period across all reporting companies |
secedgar_compare_companies | Compare named companies across several concepts, aligned on calendar periods |
secedgar_search_concepts | Discover supported XBRL concept names or reverse-lookup a raw tag |
secedgar_dataframe_describe | List canvas dataframes with provenance, TTL, and schema |
secedgar_dataframe_query | Run a single-statement SELECT across dataframes |
secedgar_dataframe_drop | Drop a canvas dataframe by name. Opt-in via EDGAR_DATAFRAME_DROP_ENABLED=true β off by default since TTL already handles cleanup |
secedgar_company_searchEntry point for most EDGAR workflows β resolve tickers, names, or CIKs to entity details.
AAPL, VOO), company names (Apple), or CIK numbers (320193)company_tickers_mf.json; fund results include series_id and class_id for downstream scopingFacebook β Meta Platforms, Square β Block)Microsfot β MICROSOFT CORP / MSFT)filed_after / filed_before) and under-filled form filters page into the older submissions archive, reaching filings that predate the ~1000-entry recent window (e.g. a 2005 10-K); history_scanned_through discloses the scan depth, and the full filtered history materializes as a df_<id> dataframe when it exceeds the inline filing_limitsecedgar_search_filingsSearch EDGAR filings since 1993. Full-text search covers 2001-present (the EFTS index floor); pre-2001 date ranges are served from the archives β pre-2001 full-text matching requires entity scope.
"material weakness"), boolean operators (revenue OR income), wildcards (account*)cik:320193 or ticker:AAPL) β scoped server-side by CIK, so filings made under a former company name (same CIK) are includedquery to list filings by form type (forms=["S-1"]) and/or entity (ticker:/cik:), optionally narrowed by date β a bare date range is not a valid search and must be paired with forms or entity targetingsource field (efts / submissions / full-index), preserved into the df_<id> dataframeticker:/cik: scope to bound the work: the form + date pre-filter picks candidates, up to 50 are read, and scan reports candidates / scanned / matched rather than presenting a partial read as a complete one. SEC's request rate is the cost β roughly 5s for a full 50-document scan. Each read covers the whole accession .txt (pre-1997 filings expose no per-document URL), so a match can sit in an attached exhibit rather than the body of the requested formperiod_ending, ticker, file_description, sic, and location exist only on source: efts rows, so a merged result carries them on some rows and not othersdf_<id> dataframe β query it with secedgar_dataframe_querysecedgar_get_filingFetch a specific filing's metadata and document content by accession number.
binary in the document catalog and rejected with a binary_document error instead of being returned as decoded bytesnext_offset from a truncated response as offset on the next call to continue reading; first-page truncated responses include a detected outline (headings with offsets) for targeted navigationsection param: jumps directly to a named heading by case-insensitive substring match (e.g. "risk factors", "item 7", "certain relationships"); on a miss, the error carries the detected outline so you can pick the correct headingaccession + document (bounded LRU, 8 entries), making subsequent paged calls cheapsecedgar_get_financialsGet historical XBRL financial data for a company with friendly concept name resolution.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/secedgar-mcp-server)<a href="https://allmcps.com/mcp/secedgar-mcp-server"><img src="https://allmcps.com/api/badge/secedgar-mcp-server?style=directory" alt="Secedgar MCP Server on AllMCPs" /></a>