Featured

Deploy OpenClaw in 60 seconds — 20% off logoDeploy OpenClaw in 60 seconds — 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger
Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger
Crawl and scrape any site into clean data, 10% off logoCrawl and scrape any site into clean data, 10% off

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits, and new users get 10% off their first purchase.

Try Firecrawl free
6,000+ web scrapers for your AI agent, start free logo6,000+ web scrapers for your AI agent, start free

Apify gives your agent live web data: 6,000+ prebuilt scrapers and actors, MCP-ready. Sign up free with $5 in usage credits.

Try Apify free
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data — no proxies, no parsers, no maintenance.

Start building free
SetupClaw: done-for-you OpenClaw for founders & exec teams logoSetupClaw: done-for-you OpenClaw for founders & exec teams

White-glove OpenClaw for founders and exec teams (4–50+ employees): we install, harden, integrate your tools, and maintain it — secured from day one.

Get it set up for you
SEO data APIs for your agent, $1 free credit logoSEO data APIs for your agent, $1 free credit

DataForSEO gives your agent live access to SERP results, keyword data, backlinks, and on-page SEO data through one API. New accounts get a $1 credit, good for up to 20,000 keyword or backlink lookups.

Try DataForSEO free
Reach 48,000+ AI builders

A flat monthly placement in front of developers actively installing AI tools. No lock-in, cancel anytime.

Advertise here

Works with

Claude CodeClaude DesktopCursorVS CodeClineCodex CLIOpenClaw+ any MCP client

Install to Claude Code

This server doesn't publish a one-line install command. Follow the setup in the source repository.

Summary

Clean, normalized SEC EDGAR / FRED / ETF / index data for AI agents.

README.md

<!-- mcp-name: io.github.birthday-tools/edgarmcp -->

EdgarMCP

![PyPI](https://pypi.org/project/mcp-edgar/) ![License: MIT](LICENSE) ![CI](https://github.com/birthday-tools/edgarmcp/actions/workflows/ci.yml)

An MCP server that gives AI agents clean, normalized access to financial data: company fundamentals and insider trades from SEC EDGAR, macro series from FRED, real-time quotes via the Tradernet WebSocket feed, ETF/fund holdings from SEC NPORT-P, look-through analytics, and index snapshots.

Raw sources (XBRL, bulky filing HTML, ownership XML) are expensive and error-prone for agents — they burn tokens and trip up on parsing. EdgarMCP returns agent-ready JSON.

Installation

pip install mcp-edgar

This installs the edgarmcp console script (a stdio MCP server).

Quick start

Add it to an MCP client. For Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "edgarmcp": {
      "command": "edgarmcp",
      "env": {
        "FRED_API_KEY": "your-free-fred-key",
        "OPENFIGI_API_KEY": "optional-openfigi-key"
      }
    }
  }
}

Both keys are optional: without FRED_API_KEY the FRED-backed tools degrade gracefully; without OPENFIGI_API_KEY holding resolution runs in anonymous mode.

Tools

| Tool | Purpose | |---|---| | get_company_facts(ticker) | Normalized fundamentals (revenue, EPS, margins, debt) | | get_financial_statement(ticker, statement, period) | Income/balance/cashflow as structured JSON | | get_filings(ticker, form_type, limit) | Recent SEC filings (10-K/10-Q/8-K) with metadata and document URLs | | parse_filing_section(url, section) | Extract a 10-K section (Risk Factors, MD&A) as clean text | | get_insider_trades(ticker, limit) | Form 3/4/5 insider transactions (who, role, buy/sell, volume) | | get_macro_series(series_id, start, end) | FRED macro series (rates, inflation, unemployment) with metadata | | get_quote(ticker) | Real-time L1 quote (last/bid/ask/volume) via the Tradernet WebSocket feed | | get_etf_holdings(ticker, limit) | ETF/fund holdings (top by weight) + AUM, NAV, asset/country mix from SEC NPORT-P | | get_holdings_analysis(symbol, limit) | Look-through of an ETF/index: sector breakdown + weighted net-margin/ROE with coverage | | get_index(index) | Index snapshot (S&P 500, NASDAQ-100, Dow, NASDAQ Composite): level from FRED, tracking ETF, holdings preview |

Configuration

| Variable | Description | Default | |---|---|---| | EDGAR_USER_AGENT | User-Agent for SEC requests | EdgarMCP/0.1 (contact: info+sec@birthday.tools) | | EDGAR_RATE_LIMIT | Requests per second | 10 | | EDGAR_CACHE_DIR | File cache directory | edgar_cache | | FRED_API_KEY | Free FRED key for get_macro_series / index levels | — | | OPENFIGI_API_KEY | Optional OpenFIGI key for higher CUSIP/ISIN rate limit | — | | EDGAR_TELEMETRY | Enable anonymous opt-in usage telemetry (1/true/yes/on) | off | | EDGAR_TELEMETRY_URL | Telemetry endpoint (only used when telemetry is enabled) | https://t.birthday.tools/v1/events |

Variables are read from the environment; locally you can put them in a .env file.

Telemetry

Telemetry is opt-in and off by default. Enable it by setting EDGAR_TELEMETRY=1. When enabled, the server periodically sends an anonymous, aggregated payload:

  • a random install id (generated once, stored locally),
  • the package version, Python minor version (e.g. 3.12), and OS (darwin/linux/windows),
  • per-tool call counts and per-tool error counts.

It never sends request content — no tickers, arguments, results, error messages, IP addresses, file paths, or environment. Sending is fire-and-forget and never blocks or breaks a tool call. Override the endpoint with EDGAR_TELEMETRY_URL, or leave telemetry disabled (the default) to send nothing.

Architecture

Three isolated layers: a platform-independent data layer (HTTP client with a host allowlist, ticker/name/CUSIP/ISIN resolution, XBRL normalizers, filing/ownership/NPORT-P parsers, FRED, the Tradernet WebSocket client, OpenFIGI identifier mapping, look-through and index analytics); a cache layer (aggressive caching of immutable filings and FIGI mappings; mutable FRED series are not cached); and a thin MCP layer. The data layer knows nothing about MCP and ports unchanged between a marketplace and self-hosting.

Security

  • Outbound requests are restricted to an HTTPS host allowlist (SSRF defense), centralized

across all sources (SEC, FRED, OpenFIGI).

  • Ownership and NPORT XML is parsed with defusedxml (XXE / billion-laughs defense).
  • Secrets (FRED / OpenFIGI keys) are redacted from error messages and never placed in URLs

or cache keys.

  • Real-time quotes come from Tradernet's public anonymous WebSocket feed

(wss://wss.tradernet.com/); a dedicated client with a hardcoded URL.

  • CUSIP/ISIN holding resolution goes through OpenFIGI (api.openfigi.com, allowlisted);

on failure it falls back to name matching.

Data licenses

SEC EDGAR data is public domain, used with a descriptive User-Agent and the 10 req/s limit. FRED data is provided by the Federal Reserve Bank of St. Louis under its terms of use. Real-time quotes come from Tradernet's public anonymous WebSocket feed. CUSIP/ISIN → ticker mapping uses OpenFIGI (Bloomberg; free tier, 25 req/min anonymous, 250 req/min with a key).

License

MIT © 2026 birthday.tools

See related servers & alternatives →

Related MCP servers

Browse all →

Related guides

Hand-picked reading to help you choose and use AI & ML servers.