Skip to main content
Glama
birthday-tools

EdgarMCP

EdgarMCP

PyPI License: MIT CI

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).

Related MCP server: Signal8 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

A
license - permissive license
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • The financial MCP for AI agents - 90+ financial tables, SEC filings, signals, alt-data.

  • Real SEC, 13F, insider, congress & macro data your AI agent can cite. Hosted MCP, 24 tools.

  • Give your AI deep fundamentals on US public companies — metrics, segments, peers. Free.

View all MCP Connectors

Latest Blog Posts

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/birthday-tools/edgarmcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server