edgar-mcp
This server provides read-only access to SEC EDGAR public filings and company data, enabling research into companies, securities offerings, and financial disclosures.
Resolve Issuers: Find a company's CIK, legal name, tickers, and exchange by name or ticker.
List Filings: Retrieve the most recent SEC filings for a company, optionally filtered by form type (e.g.,
10-K,8-K,C,D).Search Filings: Full-text search across all filing documents with optional date range and form type filters.
Get Filing Details: Open a specific filing to view its metadata, form type, filing date, and associated documents.
Parse Offerings: Extract detailed information from Form C (Reg CF), Form D (Reg D), and Form A (Reg A) — including offering amounts, investors, industry, financials, and key personnel.
Get Recent Offerings: Retrieve recent Reg CF, Reg D, or Reg A securities offerings, with optional state filtering.
Company Financials: Get headline annual financials (revenue, net income, assets, liabilities) from XBRL data.
Insider Data: List a company's officers, directors, and major owners, plus recent insider trading transactions (Form 4) with owner, role, shares, and price details.
Filing Document Text: Fetch paginated clean text from a filing document for reading or summarization.
Click on "Install 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-mcpShow me recent 10-K filings for Microsoft"
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-mcp
SEC EDGAR filings, inside your agent. An MCP server that
lets an LLM resolve companies, search filings, and pull recent securities offerings straight from
the SEC — built on Anthropic's official mcp Python SDK.
All tools are read-only and hit public SEC endpoints (no API key required).
Status: 11 tools, working today (see below). Published on PyPI as
mcpwright-edgarand in the official MCP Registry. See the roadmap for what's next.
Tools
Tool | What it does |
| Resolve a ticker or company name → CIK, legal name, tickers, exchange. Works for exchange-listed and private / non-exchange filers (Reg CF / Reg A issuers, funds). |
| An issuer's most recent filings, newest first. Optional form-type filter (e.g. |
| Full-text search across filing documents. |
| Recent securities offerings, newest first — |
| Open one filing: form, filing date, primary-document link, and every document in the filing. |
| Parse a Form D (Reg D) raise: offering amount, sold/remaining, min investment, # investors, industry, revenue range, security types, exemptions, and the officers/directors/promoters. |
| Parse a Form C (Reg CF) raise: target/max amount, price, security type, deadline, intermediary, employees, and a two-year financial snapshot (revenue, net income, assets, debt). |
| Headline financials from a public company's XBRL facts: latest annual revenue, gross/operating income, net income, assets, liabilities, equity, cash. |
| Fetch a document's text (HTML stripped) for reading/summarizing — paginated, since filings can exceed 1M characters. |
| A company's insiders (officers, directors, >10% owners) from recent Section 16 filings, with roles. |
| Recent insider transactions (Form 4): owner, role, buy/sell/grant, shares, price, shares owned after. |
Related MCP server: AdvisorFinder MCP Server
Install
Requires Python 3.12+. The zero-clone way to run it (the PyPI package is
mcpwright-edgar; the command, server, and tools are all "edgar"):
uvx mcpwright-edgarClaude Code
claude mcp add edgar -- uvx mcpwright-edgarClaude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"edgar": { "command": "uvx", "args": ["mcpwright-edgar"] }
}
}OpenAI Agents SDK (Python)
It's a standard MCP server, so it works with any MCP-capable client — not just Claude. With the OpenAI Agents SDK:
from agents import Agent, Runner
from agents.mcp import MCPServerStdio
async def main():
async with MCPServerStdio(
name="edgar",
params={
"command": "uvx",
"args": ["mcpwright-edgar"],
"env": {"EDGAR_MCP_USER_AGENT": "your-app you@example.com"},
},
) as edgar:
agent = Agent(
name="Analyst",
instructions="Use the EDGAR tools for SEC filings and company data.",
mcp_servers=[edgar],
)
result = await Runner.run(
agent, "Recent Reg D raises in California — who's behind the biggest?"
)
print(result.final_output)Any other MCP client (Cursor, VS Code, Cline, Goose, Zed, …)
They all launch a stdio MCP server the same way — point yours at:
{
"mcpServers": {
"edgar": {
"command": "uvx",
"args": ["mcpwright-edgar"],
"env": { "EDGAR_MCP_USER_AGENT": "your-app you@example.com" }
}
}
}Hosted chat connectors (e.g. ChatGPT connectors) expect a remote MCP server over Streamable HTTP;
mcpwright-edgarruns locally over stdio. Running it behind Streamable HTTP for a hosted endpoint is straightforward if you need that.
SEC etiquette: the SEC requires a descriptive
User-Agentwith contact info and rate-limits to ~10 req/s. Set your own via theEDGAR_MCP_USER_AGENTenv var (e.g."your-app your-email@example.com"). The client throttles and retries for you.
Caching: responses are cached in-memory (byte-budgeted LRU) to cut latency and SEC load — immutable filing-archive content for days, the ticker map for 24h, everything else briefly. Set
EDGAR_MCP_CACHE=0to disable.
Develop
git clone https://github.com/mcpwright/edgar-mcp && cd edgar-mcp
uv sync
uv run pytest # tests (mocked SEC responses)
uv run ruff check . && uv run ruff format --check . # lint + format
uv run mypy src tests # strict type checking
uv run mcp dev src/edgar_mcp/server.py # poke the tools in the MCP InspectorRoadmap
get_recent_offerings(form=C|D)— recent Reg CF / Reg D raisesget_filing(accession_or_url)— open a filing and list its documentsget_form_d_details(...)— parse Reg D offering data (amount, investors, people)get_form_c_details(...)— parse Reg CF offering data (target/max, financials, terms)get_insiders/get_insider_trades— Section 16 (Form 3/4/5) insiders & tradesState filter on
get_recent_offerings(industry isn't filterable — EDGAR omits SIC on these listings; screen viaget_form_d_details.industry_group)Reg A (Form 1-A) support in
get_recent_offeringsget_company_facts(cik)— XBRL headline financialsget_filing_text— return a document's text for summarizationPublished to PyPI (
mcpwright-edgar) + the official MCP Registry (io.github.mcpwright/edgar-mcp)get_form_a_details— parse Reg A (Form 1-A) offering dataOlder-filing metadata (beyond the recent-submissions window)
Privacy
edgar-mcp runs entirely on your machine and collects, stores, or transmits no personal
data — no accounts, no tracking, no telemetry. Its only outbound requests go to the U.S.
SEC's EDGAR services (data.sec.gov, efts.sec.gov, www.sec.gov) to fetch the public
filings you ask for; no API key is needed. One honest note: the SEC's fair-access policy asks
for a descriptive User-Agent with contact info (EDGAR_MCP_USER_AGENT="your-app you@example.com") — whatever you set there is sent to the SEC with each request, and nowhere
else. Responses are cached in memory only; nothing is persisted to disk.
Full policy: https://mcpwright.com/privacy/
Questions & feedback
Questions, ideas, or "could it do X?" → Discussions
Bugs & concrete feature requests → Issues
Contributions welcome — and if you build something with it, I'd love to hear about it.
Part of mcpwright · built by Devender Gollapally
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mcpwright/edgar-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server