Skip to main content
Glama
README.md
# edgar-mcp

An MCP server that lets Claude search the full text of SEC filings.

Ask Claude *"which companies discussed agentic AI in their 10-Ks this year?"*
and it searches EDGAR directly — 235 real filings, with links. 

https://github.com/user-attachments/assets/afa2e1e5-ee79-42ad-a736-6f016b8f6c64

## The hardest problem

EDGAR filters by CIK, a ten-digit identifier that means nothing to a human
and everything to the API. The obvious design accepts a CIK as a tool
parameter and lets the model supply it. That fails in the worst possible
way: a language model will confidently invent a CIK for any company it
hasn't memorized, and a wrong company's filings look exactly like the right
company's — correctly formatted, plausible, and completely wrong, with
nothing to signal the error. So the tools accept a ticker or company name
and resolve it in code against the SEC's own mapping file. Where the name is
ambiguous — "American" matches 66 companies — the resolver returns the
candidate list rather than picking the best-scoring match, and Claude asks
which one you meant. The model handles the easy cases through context; the
code catches the ones it gets wrong.

## Install

```bash
npm install -g @alinarashid/edgar-mcp
```

Add to `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "edgar": {
      "command": "npx",
      "args": ["-y", "@alinarashid/edgar-mcp"],
      "env": {
        "SEC_USER_AGENT": "your-app your@email.com"
      }
    }
  }
}
```

`SEC_USER_AGENT` is required. The SEC rejects requests that don't identify
the caller, and a missing header returns 403 rather than an empty result.

Restart Claude Desktop.

## Tools

**`search_filings`** — full-text search across every filing since 2001.
Filter by form type, date range, and company. Returns the filing company,
form, date, and a document link.

**`list_company_filings`** — one company's filings, newest first. Accepts a
ticker or name. Filter by form type, or you will mostly get Form 4 insider
trades.

## Examples

> Which companies mentioned "agentic AI" in their 10-K filings this year?

> Show me American Airlines' recent quarterly reports.

> Find 8-K filings from 2026 that mention "material weakness".

## Known limits

- **Search returns metadata, not text.** It tells you which filings match,
  not what they say. Follow the URL to read the language.
- **Ranking is keyword relevance, not company size.** A short filing that
  repeats a phrase outranks a 300-page 10-K that mentions it twice.
- **Public companies only.** Private companies file nothing with the SEC.
- **Searching within a company includes third-party filings** tagged with
  that CIK, such as shareholder proposals filed by outside groups.

## Notes

The full-text endpoint at `efts.sec.gov` is undocumented — the SEC
publishes no parameter list, response schema, or stability guarantee. This
package reads defensively and may need updating if the shape changes.

Requests are serialized to roughly 8 per second, under the SEC's published
ceiling of 10.

## License

MIT

TDQS

A4.1/5.0

Scored across 2 tools

Disambiguation5/5

The two tools are sharply distinct: one searches full-text across all filings, the other lists filings for a specific company. There is no overlap in purpose or likely misselection.

Naming Consistency5/5

Both tool names follow a consistent verb_noun pattern: search_filings and list_company_filings. The convention is uniform and predictable.

Tool Count3/5

Two tools is at the thin end of the range, but the server's stated scope of accessing EDGAR filings can reasonably be covered by search and list operations. It feels minimal rather than bloated.

Completeness2/5

The tools cover discovery (keyword search and per-company listing) but lack any retrieval tool to actually read a filing's content. Search results intentionally return metadata only, and without a fetch-filing tool, agents cannot access the underlying text, creating a dead end.

Maintenance

ActivityMaintained
ResponsivenessNo issues