Prototype · Preview: every server in the official registry, synced every 30 minutes. Reviews and accounts come in a later step.
PopNx MCPMCP servers for people who use AI · explained in plain words

Secedgar MCP Server

by cyanheadsversion 0.18.1i★ –iComputer or cloud
Registry nameio.github.cyanheads/secedgar-mcp-server

Install

Overview

Description from the maker (original English)

Query SEC EDGAR filings, XBRL financials, and company data via MCP. STDIO or Streamable HTTP.

PopNx MCP’s three pillars

These three are never merged into one score: opinions, measurements and popularity are different things.

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

  • Connection: Computer or cloud
  • Transport: stdio, Streamable HTTP
  • Category: Other
  • You need to fill in: EDGAR_USER_AGENT

Install

Pick the AI app you use, then copy the settings.

Before you install

  • Basic checks: 3 of 3 passed
  • Runs on the maker’s server: what you ask it goes through their server.
  • Can do 16 things (tools) secedgar_company_search, secedgar_search_filings, secedgar_get_filing, secedgar_get_financials …
  • You fill in yourself: EDGAR_USER_AGENT, EDGAR_RATE_LIMIT_COOLDOWN_SECONDS, MCP_LOG_LEVEL

You need

  • Runs in the cloudNothing to install; it connects over the internet
  • npmNode.js installed (for the npx command)

Which app do you use?

Pick your app above. We remember it, so next time the button says “Install in …”.

Works in Claude on the web, desktop and mobile:

  1. Open Settings → Connectors
  2. Press Add custom connector
  3. Paste the address below and press Add
  4. If it asks you to sign in, sign in with the maker
SettingsConnectors1+ Add2https://…3
https://secedgar.caseyjhand.com/mcp

Or run it on your computer

Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json

{
  "mcpServers": {
    "secedgar": {
      "command": "npx",
      "args": [
        "-y",
        "@cyanheads/secedgar-mcp-server"
      ],
      "env": {
        "EDGAR_USER_AGENT": "your-value",
        "EDGAR_RATE_LIMIT_COOLDOWN_SECONDS": "your-value",
        "MCP_LOG_LEVEL": "your-value"
      }
    }
  }
}

Run this in your terminal

claude mcp add --transport http secedgar https://secedgar.caseyjhand.com/mcp

Or run it on your computer

claude mcp add secedgar --env EDGAR_USER_AGENT=your-value --env EDGAR_RATE_LIMIT_COOLDOWN_SECONDS=your-value --env MCP_LOG_LEVEL=your-value -- npx -y @cyanheads/secedgar-mcp-server

Fill in the empty values before running it.

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "secedgar": {
      "url": "https://secedgar.caseyjhand.com/mcp"
    }
  }
}

Or run it on your computer

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "secedgar": {
      "command": "npx",
      "args": [
        "-y",
        "@cyanheads/secedgar-mcp-server"
      ],
      "env": {
        "EDGAR_USER_AGENT": "your-value",
        "EDGAR_RATE_LIMIT_COOLDOWN_SECONDS": "your-value",
        "MCP_LOG_LEVEL": "your-value"
      }
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "secedgar": {
      "type": "http",
      "url": "https://secedgar.caseyjhand.com/mcp"
    }
  }
}

Or run it on your computer

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "secedgar": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@cyanheads/secedgar-mcp-server"
      ],
      "env": {
        "EDGAR_USER_AGENT": "your-value",
        "EDGAR_RATE_LIMIT_COOLDOWN_SECONDS": "your-value",
        "MCP_LOG_LEVEL": "your-value"
      }
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

ChatGPT connects only to servers on the internet:

  1. Open ChatGPT on the web → Settings → Connectors (Apps)
  2. Press Create or Add (some plans need Developer mode under Advanced first)
  3. Paste the address below, give it a name and save
  4. If it asks you to sign in, sign in with the maker
SettingsConnectors1+ Create2https://…3
https://secedgar.caseyjhand.com/mcp

Menu names can differ slightly by plan and over time.

Your choice stays on this device in a cookie; no account needed.

Values you fill in

  • EDGAR_USER_AGENT required env
    User-Agent header for SEC compliance. Format: "AppName contact@email.com".
  • EDGAR_RATE_LIMIT_COOLDOWN_SECONDS env
    Seconds to stop sending to SEC after a 429: calls are refused locally, then one probe request goes out.
  • MCP_LOG_LEVEL env
    Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

What it can do

Tool names and descriptions exactly as the server reported them on Nov 6, 2026. The maker wrote them, not us; we show them as plain text.

  • secedgar_company_search

    Find companies and retrieve entity info with optional recent filings. Entry point for most EDGAR workflows — resolves tickers, names, or CIKs to entity details, with accession numbers in the result feeding secedgar_get_filing for document content. When a date or form filter carri

  • secedgar_search_filings

    Search EDGAR filings since 1993. Full-text search covers 2001-present (the EFTS index floor); pre-2001 date ranges (to 1993) are served from the archives by form and entity/date. Pre-2001 free text needs entity scope (ticker:/cik:) — with it, the tool reads the entity's matching

  • secedgar_get_filing

    Fetch a specific filing's metadata and document content by accession number. Returns the primary document as readable text. Use offset/next_offset for multi-page access to large filings (10-K, S-1 can exceed 1M chars): pass the next_offset from a truncated response as offset, wit

  • secedgar_get_financials

    Get historical XBRL financial data for a company. Accepts friendly concept names (e.g., "revenue", "net_income", "assets") or raw XBRL tags. Discover available friendly names with secedgar_search_concepts. Handles historical tag changes and deduplicates data automatically. The fu

  • secedgar_get_snapshot

    Build a company financial profile in one call: the latest value of every supported XBRL concept, grouped by statement. Reads the filer's complete companyfacts payload once rather than one request per concept, so it replaces a run of secedgar_get_financials calls when the question

  • secedgar_get_material_events

    Retrieve a company's 8-K filings with their item codes decoded, optionally filtered to specific items. 8-K item codes are how material events are actually scoped — 1.01 material agreements, 2.02 results of operations, 4.02 non-reliance on previously issued financials, 5.02 office

  • secedgar_get_insider_transactions

    Fetch Form 4 insider transactions (purchases, sales, grants, exercises) for a company by parsing SEC EDGAR ownership XML. Returns the reporting person, their relationship to the issuer, transaction date, type, shares traded (absolute magnitude), direction (acquire/dispose), price

  • secedgar_get_institutional_holdings

    Read an institutional manager's 13F-HR information table for a quarter. company is the filer: a 10-digit CIK, ticker, or name; names outside the ticker file use EDGAR entity search, and ambiguous names return candidates. For managers holding an issuer, use secedgar_find_holders a

  • secedgar_find_holders

    Find which institutional managers reported holding an issuer, by searching 13F-HR information tables for one reporting quarter. This is the reverse direction of secedgar_get_institutional_holdings: that tool takes a manager and returns its portfolio, this one takes an issuer and

  • secedgar_get_beneficial_owners

    List the 5%-and-over beneficial owners of a public company, parsed from the structured SCHEDULE 13D and SCHEDULE 13G filings made about it. The input is the ISSUER — the company being held — which is the opposite direction from secedgar_get_institutional_holdings, where the input

  • secedgar_get_fund_holdings

    List what an ETF or mutual fund holds, parsed from the NPORT-P portfolio report it files with the SEC every quarter. The input is the fund — a ticker like VOO, a fund series ID, or the registrant trust — which is the opposite direction from the ownership tools: secedgar_get_insti

  • secedgar_fetch_frames

    Fetch SEC XBRL frames for one concept × one period across all reporting companies. Inline response returns a page of the ranked companies — start at the top or pass offset/next_offset to walk further down the ranking; the full frames response (all reporters) is materialized as df

  • secedgar_compare_companies

    Compare 2-10 named companies across 1-8 XBRL concepts, aligned on fiscal years (annual) or calendar quarters (quarterly). This is the middle shape between secedgar_get_financials (one company, one concept, full history) and secedgar_fetch_frames (one concept, one period, every re

  • secedgar_search_concepts

    Search supported XBRL financial concepts by keyword, statement group, or taxonomy. Use before secedgar_get_financials, secedgar_compare_companies, or secedgar_fetch_frames to discover the right friendly name, or pass a raw XBRL tag (e.g., "NetIncomeLoss") to reverse-lookup which

  • secedgar_dataframe_describe

    List the dataframes (df_XXXXX_XXXXX) registered by the data-returning secedgar_* tools — any tool whose response carries a `dataset` handle stages its full result set here. Each entry surfaces source tool, query parameters, creation/expiry timestamps, row count, column schema, an

  • secedgar_dataframe_query

    Run a single-statement SELECT against the canvas dataframes registered by the data-returning secedgar_* tools — any tool whose response carries a `dataset` handle. Inspect a dataframe with secedgar_dataframe_describe first; its column schema is what the SQL has to match. Read-onl

Basic checksi

We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 8, 2026

  • ✓ Pass

    Maker matches the repo

    The registry name was verified with the GitHub account cyanheads, which owns the repo

  • … Not checked yet

    Still maintained

    We have not read this repo from GitHub yet

  • … Not checked yet

    Has a licence

    We have not read this repo from GitHub yet

  • ✓ Pass

    Endpoint responds

    Responded in 183 ms (HTTP 200)

  • – Not applicable

    Sign-in with OAuth

    No sign-in needed

  • ✓ Pass

    No hidden instructions in tool descriptions

    Read 16 tool descriptions and found no hidden instructions to the AI

Compared with others in Otheri

  • More stars than 0% of the other 18584 servers in this category
  • Published to the registry more recently than 90% of the other 18584 servers in this category
  • Basic checks equal to or better than 100% of the other 18584 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is Secedgar MCP Server safe?

It passed 3 of 3 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.

What keys or codes does it need?

You need to fill in: EDGAR_USER_AGENT

Does it run on my computer or in the cloud?

Either way works: install it on your computer or connect to the cloud version.

Is it still maintained?

The GitHub repo last changed –, and the latest version (0.18.1) reached the registry 4 days ago.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.

What can I use instead?

In the same category: Spec Driven Development, Remote Desktop Commander, aamio rendezvous

Alternatives

Servers in the same category from other makers, sorted by stars.

Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

Spec Driven Development

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

by formulahendryEarly↓ 66/wk★ 440Updated 14 months ago

Runs on your computer

Remote Desktop Commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

by desktop-commanderGrowing★ 211Updated 3 days ago

Runs in the cloud✓ desktopcommander.app

aamio rendezvous

Meet an agent you have not met, exchange messages that expire, and prove it happened. No account.

by aamio.atEarlyUpdated today

Runs in the cloud✓ aamio.at

README from the maker

Open the README

Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.

@cyanheads/secedgar-mcp-server Query SEC EDGAR filings, XBRL financials, and company data via MCP. STDIO or Streamable HTTP. 16 Tools (+1 opt-in) • 2 Resources • 1 Prompt

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


Overview

SEC EDGAR filings, financials, and ownership data. Look up companies by ticker, name, or CIK, search filings back to 1993, compare financials across companies, and trace ownership through insider trades, 13F holdings, 13D/13G blockholders, and fund portfolios. No API key required.

Tools
ToolDescription
secedgar_company_searchFind companies and retrieve entity info with optional recent filings
secedgar_search_filingsSearch EDGAR filings since 1993: full text from 2001, archive browse before that
secedgar_get_filingFetch a filing's metadata and document text, paged or by section
secedgar_get_financialsGet historical XBRL financial data for one company and concept
secedgar_get_snapshotOne-call financial profile: the latest value of every supported concept
secedgar_get_material_events8-K filings with item codes decoded and filterable
secedgar_get_insider_transactionsForm 4 / 4-A insider transactions parsed from ownership XML
secedgar_get_institutional_holdings13F-HR quarterly holdings of one institutional manager
secedgar_find_holdersReverse 13F lookup: which managers reported holding an issuer
secedgar_get_beneficial_owners5%+ blockholders of an issuer from structured SCHEDULE 13D / 13G filings
secedgar_get_fund_holdingsETF and mutual fund portfolio holdings from the quarterly NPORT-P report
secedgar_fetch_framesOne XBRL concept × one period across every reporting company
secedgar_compare_companiesCompare named companies across several concepts, aligned on fiscal years or calendar quarters
secedgar_search_conceptsDiscover supported XBRL concept names or reverse-lookup a raw tag
secedgar_dataframe_describeList canvas dataframes with provenance, TTL, and schema
secedgar_dataframe_queryRun a single-statement SELECT across dataframes
secedgar_dataframe_dropDrop a canvas dataframe by name; opt-in via EDGAR_DATAFRAME_DROP_ENABLED=true
Resources
ResourceDescription
secedgar://conceptsXBRL financial concepts grouped by statement, mapping friendly names to XBRL tags
secedgar://filing-typesCommon SEC filing types, plus the 8-K item-code tables for both numbering regimes

secedgar_search_concepts serves the same concept catalog to tool-only clients.

Prompts
PromptDescription
secedgar_company_analysisStructured analysis of a company's SEC filings: financial trends, risk factors, material events
Skills
SkillDescription
secedgar-guideWhich tool answers each ownership question, where CIKs, accession numbers, CUSIPs, and fund series IDs come from, and the coverage limits to check before reporting data absent

The skill ships in skills/secedgar-guide/SKILL.md. Plugin hosts load it from the package, and MCP clients that support the Skills extension read it from the server as skill://secedgar-guide/SKILL.md.

Capability reference

secedgar_company_search tool
  • query takes a ticker (equities, ETFs, mutual funds), a current or former company name, or a CIK; include_filings (default on) adds up to filing_limit filings (default 10; a value up to 1,000 is served at the 50 inline cap), filtered by forms, filed_after, and filed_before
  • Returns SIC code, exchanges, fiscal year end, and state of incorporation, plus series_id / class_id for a fund ticker; fails as no_match (with near matches in data.suggestions) or, for a name matching several companies, ambiguous_company, listing up to 10 by CIK, name, and ticker to retry with, plus the full count in total_matches
  • A date or form filter can reach into the archive (up to 10 pages); history_scanned_through reports how far it got

secedgar_search_filings tool
  • Full-text query (phrases, OR, -exclusion, wildcard*, ticker: / cik: scoping), or browse by forms and/or entity with no query; filed_after / filed_before work alone (a lone filed_after runs through today, a lone filed_before starts at 2001-01-01, or at 1993-01-01 before 2001); limit up to 100 (default 20; a value up to 1,000 is served at 100), offset up to 9,999; only sort: "relevance" on a 2001-onward search without ticker: / cik: scope pages EDGAR server-side, where offsets reach 9,900 (a page of 100 there ends at its 10,000-document cap) and a deeper one fails as offset_out_of_range
  • Full text covers 2001 onward; earlier ranges back to 1993 come from the archives, where free text needs ticker: / cik: scope and reads up to 50 documents (scan reports the counts)
  • One row per filing, tagged with source (efts, submissions, full-index); full-text rows list matched_documents (filenames for secedgar_get_filing); the response carries total, form_distribution, total_is_exact, and total_documents for full-text searches

secedgar_get_filing tool
  • accession_number in dash or 18-digit form, optional cik to speed the lookup, document for an exhibit, include_xbrl for XBRL artifacts; content_limit 1,000–200,000 characters per page (default 50,000; up to 1,000,000 is served at 200,000)
  • Page with offset / next_offset until content_truncated is false, or jump with section (a heading such as item 1 or part i), then drop section to page on, since it outranks offset; the first page of a truncated document carries an outline of up to 50 headings with offsets
  • documents splits the filing into primary, exhibits, and auxiliary; binary entries (scans, PDFs, archives) fail as binary_document, and a section miss returns section_not_found with the outline
  • A structured XML form the filer's submissions feed records through SEC's stylesheet (a recent Form 4, SCHEDULE 13D, or NPORT-P) reads as SEC renders it, with its labels and line breaks, so section reaches its Items; documents still lists the raw XML, which document returns as filed. A holdings report whose raw file passes 600 KB reads as filed
  • A 2000–2001 document the archive doesn't serve under its listed name (0001.htm) is read under its accession-prefixed name, and document takes either spelling; if neither is served, the full submission .txt is read instead and the notice says so
  • Without cik, the filer is found through EDGAR full-text search and the accession number's prefix, then, when none of those directories serves the filing, through the filers on the filing's index page — so a pre-2001 filing made through a filing agent resolves on its own, and a full-text search outage falls back instead of failing the call

secedgar_get_financials tool
  • company (ticker or CIK) plus concept as a friendly name or raw XBRL tag; taxonomy us-gaap (default), ifrs-full, or dei; period_type annual, quarterly, or all; unit picks one SEC unit key (ZAR, USD, USD/EUR) when a concept is reported in several; limit 1–100 trims the inline series
  • Returns a deduplicated series, newest first, one value per calendar period with form, filed, accession_number, and tag, all in one unit (other units are named in caveats); tags_tried lists the tags checked, and an empty result fails as no_concept_data, no_frame_data, no_period_data, or no_unit_data
  • A concept that is neither a friendly name nor an UpperCamelCase tag fails as unknown_concept, with a formula for standard combinations (free_cash_flow, ebitda, working_capital) or up to three closest friendly names

secedgar_get_snapshot tool
  • company, taxonomy us-gaap (default) or ifrs-full, and period_type annual, quarterly, or both (default); one companyfacts read covers every supported concept, and nothing is staged as a dataframe
  • Each lines entry reports the latest annual and quarterly value for a duration concept, or the latest instant value for balance-sheet and entity-info concepts, each with the tag it came from, under the line's taxonomy; concepts the filer doesn't report land in gaps with tags_tried

secedgar_get_material_events tool
  • company plus up to 20 items codes, dotted (2.02) since 2004-08-23 and single integers (12) before; the two regimes don't overlap, so pair them across the changeover; filed_after / filed_before work alone and reach into the archive; limit 1–1,000, served at 100 (default 20)
  • Each filing decodes its items to code, label, and regime (current / legacy); item_distribution counts every code in the window, and total_8k_scanned against total_matched shows what the filter removed
  • A date window reads up to 10 archive pages; history_scanned_through and dataset.truncated report what went unread

secedgar_get_insider_transactions tool
  • company is the issuer, as a ticker, CIK, or current or former name; a name matching several companies fails as ambiguous_company, listing up to 10 by CIK, name, and ticker to retry with, plus the full count in total_matches; transaction_type purchase (code P), sale (code S), or all (default); limit 1–1,000, served at 100 (default 20); does not cover Forms 3 or 5
  • Without a date window it scans up to 100 of the newest Form 4 / 4-A filings; filed_after / filed_before (inclusive, either alone) read any period since mid-2003, up to 100 filings; `history_scanned_th

Only the beginning is shown; read the rest in the repo

Ask PopNx