EDGAR Filings MCP
Cursor / Claude tools that return SEC filing numbers, not web-search guesses.
Who this is for: people already in an IDE chat who need a ticker’s 10-K/10-Q symbols, segment revenue, BDC non-accrual, or Form 4 lines without writing edgartools glue.
Pain it solves: models invent segment mix, insider trades, and BDC credit quality. These tools return accession, concept, period, open_market, non-accrual method, and the EDGAR index URL so you can check the filing.
What it is not: a research product, a document reader, or a substitute for reading the 10-K. It wraps edgartools for four jobs only. China PE, humanoid robots, and unlisted credit CVs are out of scope — those filings are not on EDGAR.
Install
Three lines:
- Install
uv(docs). - Set
EDGAR_IDENTITYto a name and a real email (SEC FAQ). - Paste
examples/cursor.mcp.jsoninto the client config.
EDGAR_IDENTITY=Your Name you@example.com
macOS / Linux:
curl -LsSf https://astral.sh/uv/install.sh | sh
Windows (PowerShell):
irm https://astral.sh/uv/install.ps1 | iex
Then copy examples/cursor.mcp.json to ~/.cursor/mcp.json (Windows: %USERPROFILE%\.cursor\mcp.json). Copy examples/claude.mcp.json into Claude Desktop’s MCP config.
Pin mcp>=1.9,<2. MCP 2.x renamed FastMCP. The package already pins that range.
{
"mcpServers": {
"edgar-filings": {
"command": "uvx",
"args": ["edgar-filings-mcp"],
"env": {
"EDGAR_IDENTITY": "Your Name you@example.com"
}
}
}
}
PyPI package edgar-filings-mcp is live. Registry name is io.github.Dxfory/edgar-mcp. Skip Smithery hosted.
From git instead of PyPI:
uvx --from git+https://github.com/Dxfory/edgar-mcp.git edgar-filings-mcp
The first uvx launch downloads edgartools (pandas / pyarrow). If the client looks stuck, run the same command once in a terminal so uv can cache the wheels, then restart the MCP server. After that, initialize is a couple of seconds.
Clone (no uv)
git clone https://github.com/Dxfory/edgar-mcp.git
cd edgar-mcp
python -m venv .venv
macOS / Linux:
.venv/bin/python -m pip install -e .
Windows:
.\.venv\Scripts\python -m pip install -e .
Point the client at that interpreter with args ["-m", "edgar_mcp"].
If PyPI SSL fails (common with a local HTTPS proxy), use a mirror:
python -m pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple
Tools
| Tool | Returns |
|---|---|
get_trading_symbols |
Every dei:TradingSymbol on the latest 10-K or 10-Q, plus the legacy entity_info scalar |
get_segment_revenue |
Dimensioned XBRL revenue (product / business / geographic axes) |
get_bdc_nonaccrual |
BDC non-accrual rate, fair value, named investments, and extraction method |
get_form4 |
Newest Form 4 summaries, transaction lines, open_market, and code_counts |
form on the first three tools is 10-K (default) or 10-Q. get_bdc_nonaccrual only accepts SEC BDCs (814- filers) such as ARCC. There is no fifth tool.
Hot-theme footguns this server will / will not answer
| Theme | Agent invents | Tool | Stop |
|---|---|---|---|
| AI infrastructure | NVIDIA / hyperscaler “AI mix” | get_segment_revenue on NVDA (Data Center is tagged). AMZN/MSFT capex is not AI-only |
Do not add a fake AI-capex tool |
| Private credit / BDC | Non-accrual, NAV as credit quality, PIK as current | get_bdc_nonaccrual |
Non-accrual ≠ Fitch default rate; PIK can still be accrual |
| GP-led continuation vehicles | Deal price and “premium to par” | None | Private secondaries are not EDGAR |
| China PE / 具身智能 | Round sizes and factory hours | None | SSE/HKEX, not EDGAR |
Footguns the tools already warn about
entity_info.tickeris last-wins on repeatedTradingSymbolfacts. Dual-class and preferred tickers can replace the common symbol.- Segment mix is not in
get_financials(). Some statement “DETAILED” views drop reportable-segment lines; this server queries dimensioned facts instead. - Form 4
A/M/Fare grants, option exercises, and tax withholding —open_marketis false. - BDC
extraction_method=noneor a zero rate plus extractor warnings is a parse gap, not proof the book is clean. - Latest
10-Kcan be a10-K/A. The tools prefer the original form so Schedule-of-Investments footnotes are not dropped.
Run without Cursor
python -m edgar_mcp
stdio only. Do not print to stdout.
python tests/run_offline.py
python scripts/smoke_stdio.py
python scripts/pressure.py
smoke_stdio.py only checks initialize + four tool names (no EDGAR). After uvx is on PATH:
python scripts/smoke_stdio.py -- uvx edgar-filings-mcp
pressure.py hits live EDGAR and needs EDGAR_IDENTITY.
License
MIT. Filing data is from the SEC EDGAR system; this project is not affiliated with the SEC.
Release files for edgar-filings-mcp 1.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| edgar_filings_mcp-1.1.1.tar.gz | 13.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| edgar_filings_mcp-1.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 27.6 kB
Release files / edgar_filings_mcp-1.1.1.tar.gz
| Download URL | edgar_filings_mcp-1.1.1.tar.gz |
|---|---|
| Size | 13.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2fe5938614214f3d8726f20e2adf2efdbdd9c0ebcb064a9cff98218e3ae48903
|
|
BLAKE2b-256 checksum How to use checksums |
9713ec77ec2e14de56b58d80466bc33cd8080581eb8cb7f8405c6e308254028c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.
Transparency logRelease files / edgar_filings_mcp-1.1.1-py3-none-any.whl
| Download URL | edgar_filings_mcp-1.1.1-py3-none-any.whl |
|---|---|
| Size | 13.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9360db3f803861a999ac28d68d48ba1dd5ea663a04491511b3bef7aa0cfbe7b1
|
|
BLAKE2b-256 checksum How to use checksums |
cf312a5ad091018dec9fffc097998ebf16cb47885be57d07424f216dc6e31aa8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.
Transparency log