edgar-filings
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@edgar-filingsGet the segment revenue breakdown for Apple from its latest 10-K"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 symbols, segment revenue, or Form 4 lines without writing edgartools glue.
Pain it solves: models invent segment mix and insider trades. These tools return accession, concept, period, 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 three jobs only.
Install
SEC fair-access needs a User-Agent with a name and a real email (SEC FAQ):
EDGAR_IDENTITY=Your Name you@example.comCursor (uv)
Copy examples/cursor.mcp.json into ~/.cursor/mcp.json (or project .cursor/mcp.json) and replace the email. That file runs:
{
"mcpServers": {
"edgar-filings": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/Dxfory/edgar-mcp.git",
"edgar-filings-mcp"
],
"env": {
"EDGAR_IDENTITY": "Your Name you@example.com"
}
}
}
}Pin mcp>=1.9,<2. MCP 2.x renamed FastMCP.
Clone
git clone https://github.com/Dxfory/edgar-mcp.git
cd edgar-mcp
python -m venv .venv
.\.venv\Scripts\python -m pip install -e .Then point Cursor at .venv/Scripts/python.exe (Windows) or .venv/bin/python with args ["-m", "edgar_mcp"].
If PyPI SSL fails (common with a local proxy), install from a mirror:
.\.venv\Scripts\python -m pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simpleRelated MCP server: mcp-edgar
Tools
Tool | Returns |
| Every |
| Dimensioned XBRL revenue (product / business / geographic axes) |
| Newest Form 4 summaries and transaction lines |
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 — not open-market buys.
Run without Cursor
.\.venv\Scripts\python -m edgar_mcpstdio only. Do not print to stdout.
Offline tests (no network, no edgartools):
.\.venv\Scripts\python tests\run_offline.pyLicense
MIT. Filing data is from the SEC EDGAR system; this project is not affiliated with the SEC.
Available Tools
3 toolsget_form4B
Recent Form 4 insider filings: who, role, activity, and transaction lines.
limit: 1-20 filings, newest first. P/S are open market; A/M/F are not.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| ticker_or_cik | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does add useful behavioral context: 'newest first', the 1-20 limit, and the meaning of P/S versus A/M/F transaction codes. However, it does not explicitly declare that the operation is read-only, describe the output shape, or mention error/empty-response behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, each earning their place: the first establishes the resource and content, the second gives operational constraints and a transaction-code legend. There is no filler and the key identity is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with no output schema or annotations, the description covers the core invocation facts and adds useful behavioral notes. Yet it leaves an agent guessing about exact returned fields, empty results, and error behavior, and it never connects the tool to its siblings for selection purposes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for both parameters. It clarifies limit semantics with the 1-20 range and ordering, but ticker_or_cik is only named with no example, format guidance, or validation details, leaving the compensation incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource as 'Recent Form 4 insider filings' and lists the content areas returned (who, role, activity, transaction lines), making it easy to distinguish from the sibling tools. It lacks an explicit verb like 'retrieves' or 'returns', reading as a headline rather than a complete action statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given for when to use this tool versus get_trading_symbols or get_segment_revenue. The description provides the limit constraint and ordering but no context about prerequisites, ticker/CIK format, or typical use cases, so an agent receives no selection help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_segment_revenueA
Dimensioned XBRL revenue facts from the latest 10-K (product, business, geographic axes).
This is filing data, not a consolidated income statement. ticker_or_cik: ticker like NVDA or a CIK. accession: optional 10-K accession; default is the latest 10-K.
| Name | Required | Description | Default |
|---|---|---|---|
| accession | No | ||
| ticker_or_cik | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden. It discloses that this is filing data (not consolidated) and that it defaults to the latest 10-K. It does not mention whether the operation is read-only, potential side effects, rate limits, or output format. Since it's a data-fetch operation, the read-only nature is implied, but the description could be more explicit about behavior beyond the obvious.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core purpose. The secondary note about filing data and the parameter explanations are efficiently packed into a few lines. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema and no annotations, the description provides a good amount of context: the data source (10-K), the axes, and parameter defaults. It doesn't describe the exact structure of the returned revenue facts or any error conditions, but for a simple read tool it is reasonably complete. A more explicit note on the return format would push it to a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does: ticker_or_cik is explained as 'ticker like NVDA or a CIK', and accession is described as 'optional 10-K accession; default is the latest 10-K'. This adds meaningful context beyond the schema property names and types, though it could be more precise about CIK format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves dimensioned XBRL revenue facts from the latest 10-K, specifying the axes (product, business, geographic). This is a specific verb+resource. It doesn't explicitly differentiate from sibling tools (get_trading_symbols, get_form4), but the purpose is unambiguous and distinct enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides some context: 'This is filing data, not a consolidated income statement' hints at when to use it, and the default accession behavior is described. However, it does not name alternative tools or explicitly state when not to use it. The guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trading_symbolsA
Every dei:TradingSymbol fact on a 10-K, plus the legacy entity_info ticker scalar.
Use this when you need the common stock ticker versus preferred, notes, or dual-class symbols. ticker_or_cik: ticker like NVDA or a CIK. accession: optional 10-K accession; default is the latest 10-K.
| Name | Required | Description | Default |
|---|---|---|---|
| accession | No | ||
| ticker_or_cik | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It discloses the returned data sources, includes the 'legacy' ticker scalar, and explains the default accession behavior. It does not cover errors or authorization, but for a read-only retrieval these are less critical.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences with no filler. The main output is stated first, the selection guidance comes second, and parameter usage follows. Every sentence contributes meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter retrieval with no output schema, the description covers purpose, selection context, parameter semantics, and the default. The only notable omission is a more detailed return-shape description, but the stated output is reasonably clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It fully explains both parameters: 'ticker_or_cik: ticker like NVDA or a CIK' and 'accession: optional 10-K accession; default is the latest 10-K.' This is sufficient for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states exactly what the tool returns: 'Every dei:TradingSymbol fact on a 10-K, plus the legacy entity_info ticker scalar.' The phrase 'Use this when you need the common stock ticker versus preferred, notes, or dual-class symbols' further differentiates the intended purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear usage condition: use this when you need the common stock ticker versus preferred, notes, or dual-class symbols. It does not explicitly list exclusions or alternatives, but the stated use case is specific enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v0.1.0- First observed
get_form4 - First observed
get_segment_revenue - First observed
get_trading_symbols
TDQS
Scored across 3 tools
Each tool targets a clearly distinct concern: trading symbols, segment revenue, and Form 4 insider filings. There is no overlap in purpose or output.
All tool names follow the same get_verb_noun pattern in snake_case, making the API predictable and easy to navigate.
Three tools is on the smaller side but still within a reasonable scope for a focused EDGAR utility server. Each tool earns its place, though the count feels slightly thin given the breadth of SEC filings.
The set covers only selected 10-K XBRL facts and Form 4 filings, leaving out major EDGAR capabilities like full financial statements, other form types, and company facts. Agents needing common SEC data beyond these three functions will likely hit dead ends.
Maintenance
Related MCP Connectors
Provide AI assistants with real-time access to official SEC EDGAR filings and financial data. Enab…
SEC EDGAR financials, insider trading, and economic data for AI agents. US GAAP + IFRS.
SEC EDGAR filings for AI agents: company lookup, filings, financials, insider trades. No keys.
SEC EDGAR filings for AI agents: company lookup, filings, financials, insider trades. No keys.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to download, parse, and analyze SEC EDGAR filings, including 10-K/Q reports, XBRL financial statements, and insider trading data. It provides structured access to institutional holdings, corporate events, and financial facts for comprehensive investment research.5MIT
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to access SEC EDGAR data: search filings, extract sections, pull structured financials, and track insider transactions.13 npmMIT
- FlicenseNot gradedqualityCmaintenanceProvides AI assistants direct access to SEC EDGAR filing data — financials, filings, and filing text — with no API key required.-
- AlicenseNot gradedqualityDmaintenanceConnects AI assistants to SEC EDGAR filings for retrieving company data, financial statements, and insider transactions with exact precision.MIT