1. Conduid
  2. Finance
  3. io.github.cyanheads/secedgar-mcp-server
MCP server · Finance

io.github.cyanheads/secedgar-mcp-server

Query SEC EDGAR filings, XBRL financials, and company data through MCP. STDIO & Streamable HTTP.

Unclaimed finance
37Low

Scored 6 months ago · breakdown

About io.github.cyanheads/secedgar-mcp-server

io.github.cyanheads/secedgar-mcp-server is an MCP server in the Finance category: query SEC EDGAR filings, XBRL financials, and company data through MCP. STDIO & Streamable HTTP.

Install

Claude Code
claude mcp add io-github-cyanheads-secedgar-mcp-server -- npx -y @cyanheads/secedgar-mcp-server
npx
npx -y @cyanheads/secedgar-mcp-server

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Tools (17)

secedgar_company_searchFind companies and retrieve entity info with optional recent filings

Parameters not published.

secedgar_compare_companiesCompare named companies across several concepts, aligned on calendar periods

Parameters not published.

secedgar_dataframe_describeList canvas dataframes with provenance, TTL, and schema

Parameters not published.

secedgar_dataframe_dropDrop a canvas dataframe by name. Opt-in via `EDGAR_DATAFRAME_DROP_ENABLED=true` — off by default since TTL already handles cleanup, and uncallable until the flag is set

Parameters not published.

secedgar_dataframe_queryRun a single-statement SELECT across dataframes

Parameters not published.

secedgar_fetch_framesFetch SEC XBRL frames for one concept × one period across all reporting companies

Parameters not published.

secedgar_find_holdersReverse 13F lookup — which institutional managers reported holding an issuer

Parameters not published.

secedgar_get_beneficial_owners5%+ blockholders of an issuer, parsed from structured SCHEDULE 13D / 13G filings

Parameters not published.

secedgar_get_filingFetch a specific filing's metadata and document content

Parameters not published.

secedgar_get_financialsGet historical XBRL financial data for a company

Parameters not published.

Show all 17 tools
secedgar_get_fund_holdingsETF and mutual fund portfolio holdings from the quarterly NPORT-P report

Parameters not published.

secedgar_get_insider_transactionsForm 4 / 4-A insider transactions (buys, sells, grants, exercises) parsed from ownership XML

Parameters not published.

secedgar_get_institutional_holdings13F-HR quarterly institutional holdings parsed from the information table

Parameters not published.

secedgar_get_material_events8-K filings with item codes decoded and filterable — earnings, officer changes, non-reliance

Parameters not published.

secedgar_get_snapshotOne-call financial profile — the latest value of every supported concept, grouped by statement

Parameters not published.

secedgar_search_conceptsDiscover supported XBRL concept names or reverse-lookup a raw tag

Parameters not published.

secedgar_search_filingsSearch EDGAR filings since 1993 — full-text (2001+) plus archive-backed browse for pre-2001 ranges

Parameters not published.

Ask AI

✦

Ask AI about io.github.cyanheads/secedgar-mcp-server

Powered by Claude · Grounded in docs

I know everything about io.github.cyanheads/secedgar-mcp-server. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

  • ✓README presentThe repository ships documentation.

5 checks have not been run yet.

README

npm Framework MCP SDK

License TypeScript Bun

Public Hosted Server: https://secedgar.caseyjhand.com/mcp


Tools

Six tools for querying SEC EDGAR data:

Tool Description
secedgar_company_search Find companies and retrieve entity info with optional recent filings
secedgar_search_filings Full-text search across all EDGAR filing documents since 1993
secedgar_get_filing Fetch a specific filing's metadata and document content
secedgar_get_financials Get historical XBRL financial data for a company
secedgar_compare_metric Compare a financial metric across all reporting companies
secedgar_search_concepts Discover supported XBRL concept names or reverse-lookup a raw tag

secedgar_company_search

Entry point for most EDGAR workflows — resolve tickers, names, or CIKs to entity details.

  • Supports ticker symbols (AAPL), company names (Apple), or CIK numbers (320193)
  • Optionally includes recent filings with form type filtering
  • Returns entity metadata: SIC code, exchanges, fiscal year end, state of incorporation

secedgar_search_filings

Full-text search across all EDGAR filing documents since 1993.

  • Exact phrases ("material weakness"), boolean operators (revenue OR income), wildcards (account*)
  • Entity targeting within query string (cik:320193 or ticker:AAPL)
  • Date range filtering, form type filtering, pagination up to 10,000 results
  • Returns form distribution for narrowing follow-up searches

secedgar_get_filing

Fetch a specific filing's metadata and document content by accession number.

  • Accepts accession numbers in dash or no-dash format
  • Converts HTML filings to readable plain text
  • Configurable content limit (1K–200K characters, default 50K)
  • Can fetch specific exhibits by document name

secedgar_get_financials

Get historical XBRL financial data for a company with friendly concept name resolution.

  • Friendly names like "revenue", "net_income", "eps_diluted" auto-resolve to correct XBRL tags
  • Handles historical tag changes (e.g., ASC 606 revenue recognition)
  • Automatic deduplication to one value per standard calendar period
  • Filter by annual, quarterly, or all periods
  • See secedgar://concepts resource for the full mapping

secedgar_compare_metric

Compare a financial metric across all reporting companies for a specific period.

  • Same friendly concept names as secedgar_get_financials
  • Supports annual (CY2023), quarterly (CY2024Q2), and instant (CY2023Q4I) periods
  • Sorted ranking with configurable limit and direction
  • Enriches results with ticker symbols where available

secedgar_search_concepts

Discover supported XBRL concept names before querying financials or cross-company comparisons.

  • Search by friendly name, label, or raw XBRL tag
  • Filter by statement group (income_statement, balance_sheet, cash_flow, per_share, entity_info) or taxonomy
  • Reverse-lookup raw tags like NetIncomeLoss to the supported friendly names
  • Returns the same catalog used by secedgar_get_financials, secedgar_compare_metric, and secedgar://concepts

Resources

URI Description
secedgar://concepts Common XBRL financial concepts grouped by statement, mapping friendly names to XBRL tags
secedgar://filing-types Common SEC filing types with descriptions, cadence, and use cases

Prompts

Prompt Description
secedgar_company_analysis Guides a structured analysis of a public company's SEC filings: identify recent filings, extract financial trends, surface risk factors, and note material events

Features

Built on @cyanheads/mcp-ts-core:

  • Declarative tool definitions — single file per tool, framework handles registration and validation
  • Structured output schemas with automatic formatting for human-readable display
  • Unified error handling across all tools
  • Pluggable auth (none, jwt, oauth)
  • Structured logging with request-scoped context
  • Runs locally (stdio/HTTP) from the same codebase

SEC EDGAR–specific:

  • Rate-limited HTTP client respecting SEC's 10 req/s limit with automatic inter-request delay
  • CIK resolution from tickers, company names, or raw CIK numbers with local caching
  • Friendly XBRL concept name mapping with historical tag change handling
  • Searchable concept catalog with statement-group metadata and reverse XBRL tag lookup
  • HTML-to-text conversion for filing documents via html-to-text
  • No API keys required — SEC EDGAR is a free, public API

Getting started

Public Hosted Instance

A public instance is available at https://secedgar.caseyjhand.com/mcp — no installation required. Point any MCP client at it via Streamable HTTP:

{
  "mcpServers": {
    "secedgar-mcp-server": {
      "type": "streamable-http",
      "url": "https://secedgar.caseyjhand.com/mcp"
    }
  }
}

Self-Hosted / Local

Add the following to your MCP client configuration file.

{
  "mcpServers": {
    "secedgar-mcp-server": {
      "type": "stdio",
      "command": "bunx",
      "args": ["@cyanheads/secedgar-mcp-server@latest"],
      "env": {
        "EDGAR_USER_AGENT": "YourAppName your-email@example.com",
        "MCP_TRANSPORT_TYPE": "stdio"
      }
    }
  }
}

Or with npx (no Bun required):

{
  "mcpServers": {
    "secedgar-mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@cyanheads/secedgar-mcp-server@latest"],
      "env": {
        "EDGAR_USER_AGENT": "YourAppName your-email@example.com",
        "MCP_TRANSPORT_TYPE": "stdio"
      }
    }
  }
}

For Streamable HTTP, set the transport and start the server:

MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 bun run start:http
# Server listens at http://localhost:3010/mcp

Prerequisites

Installation

  1. Clone the repository:
git clone https://github.com/cyanheads/secedgar-mcp-server.git
  1. Navigate into the directory:
cd secedgar-mcp-server
  1. Install dependencies:
bun install
  1. Build:
bun run build

Configuration

All configuration is validated at startup via Zod schemas in src/config/server-config.ts. Key environment variables:

Variable Description Default
EDGAR_USER_AGENT Required. User-Agent header for SEC compliance. Format: "AppName contact@email.com". SEC blocks IPs without a valid User-Agent. —
EDGAR_RATE_LIMIT_RPS Max requests/second to SEC APIs. Do not exceed 10. 10
EDGAR_TICKER_CACHE_TTL Seconds to cache the company tickers lookup file. 3600
MCP_TRANSPORT_TYPE Transport: stdio or http stdio
MCP_HTTP_PORT HTTP server port 3010
MCP_AUTH_MODE Authentication: none, jwt, or oauth none
MCP_LOG_LEVEL Log level (debug, info, warning, error, etc.) info
LOGS_DIR Directory for log files (Node.js only). <project-root>/logs

Running the server

Local development

  • Build and run the production version:

    bun run rebuild
    bun run start:http   # or start:stdio
    
  • Run checks and tests:

    bun run devcheck     # Lints, formats, type-checks
    bun run test         # Runs test suite
    

Docker

docker build -t secedgar-mcp-server .
docker run -e EDGAR_USER_AGENT="MyApp my@email.com" -p 3010:3010 secedgar-mcp-server

Project structure

Directory Purpose
src/mcp-server/tools/definitions/ Tool definitions (*.tool.ts). Six SEC EDGAR tools.
src/mcp-server/resources/definitions/ Resource definitions. XBRL concepts and filing types.
src/mcp-server/prompts/definitions/ Prompt definitions. Company analysis prompt.
src/services/edgar/ SEC EDGAR API client, XBRL concept mapping, HTML-to-text conversion.
src/config/ Server-specific environment variable parsing and validation with Zod.
tests/ Unit and integration tests, mirroring the src/ structure.

Development guide

See CLAUDE.md and AGENTS.md for development guidelines and architectural rules. The short version:

  • Handlers throw, framework catches — no try/catch in tool logic
  • Use ctx.log for logging, ctx.state for storage
  • Register new tools and resources in the createApp() arrays

Contributing

Issues and pull requests are welcome. Run checks and tests before submitting:

bun run devcheck
bun run test

License

This project is licensed under the Apache 2.0 License. See the LICENSE file for details.

README copy captured when this server was indexed; it may lag the repository. The original is authoritative.

Questions

About io.github.cyanheads/secedgar-mcp-server

How do I install io.github.cyanheads/secedgar-mcp-server?

Run claude mcp add io-github-cyanheads-secedgar-mcp-server -- npx -y @cyanheads/secedgar-mcp-server, then add the server to your MCP client's configuration.

Is io.github.cyanheads/secedgar-mcp-server safe to use with an AI agent?

Its trust score is 37 out of 100 (low). It passes 1 of the 1 static security checks run so far. It has no ConduID identity yet, so agent calls to it are not receipted.

Is io.github.cyanheads/secedgar-mcp-server still maintained?

Conduid hasn't recorded a commit date for this repository yet. Check the repository directly for recent activity.