mcp server
sec-edgar-mcp-remote
Remote MCP server + JSON API for SEC EDGAR: Form 4 insider trades, cluster buys, filings, XBRL financials, full-text search (Cloudflare Workers)
Set up
Hosted by its author. Add the URL to your agent — nothing to install.
Settings → Connectors → Add custom connector
Name: sec-edgar-mcp-remote
URL: https://sec-edgar-api.kidriahx.workers.dev/mcpsame format Cursor, GitHub Copilot CLI, Junie, JetBrains AI Assistant, Augment (Auggie CLI), Factory Droid, Kiro, Devin CLI +12
Values in angle brackets are placeholders. Restart Claude Desktop after editing its config.Claude Desktop docs
README
synced Oct 25, 2026SEC EDGAR MCP (remote)
A remote Model Context Protocol server and JSON API for U.S. SEC EDGAR data, running on Cloudflare Workers. It gives AI agents Form 4 insider trades, market-wide cluster buys, company filings, XBRL financials and EDGAR full-text search as compact JSON, with no XML parsing or CIK lookups needed.
- Remote MCP endpoint (Streamable HTTP, stateless):
https://sec-edgar-api.kidriahx.workers.dev/mcp - Server card:
https://sec-edgar-api.kidriahx.workers.dev/.well-known/mcp/server-card.json - REST API spec:
https://sec-edgar-api.kidriahx.workers.dev/openapi.yaml - MCP Registry name:
io.github.monriah-studio/sec-edgar-mcp - Tutorial: Give your AI agent SEC EDGAR data: a free remote MCP server for insider trades and XBRL financials (dev.to)
Data comes straight from SEC EDGAR (public domain) under SEC fair-access rules: a declared User-Agent, a global rate limit of about 8.7 req/s (under SEC's 10 req/s) and caching. Not affiliated with the SEC. Not investment advice.
Tools
| Tool | What it returns |
|---|---|
get_insider_trades | Form 4 transactions for a company (ticker/CIK) or an insider (reporting-owner CIK): who bought or sold, role, shares, price, dollar value, 10b5-1 flag and filing link, with buy/sell totals. |
get_market_insider_buys | Open-market insider purchases across the whole market, grouped by company, with cluster-buy detection (2+ insiders). |
get_company_filings | Latest 10-K, 10-Q, 8-K (with item numbers), S-1, proxy and other filings, with direct document links. |
get_company_snapshot | Revenue, margins, net income, EPS, cash flow, balance sheet and debt, with YoY growth, from XBRL. |
get_company_concept | Annual or quarterly history of any XBRL tag (e.g. NetIncomeLoss, Revenues). |
search_filings | EDGAR full-text search with phrase, form and date filters. |
resolve_company | Ticker ↔ CIK lookup. |
Connect a client
Any MCP client that supports Streamable HTTP can use the URL directly. For example:
{
"mcpServers": {
"sec-edgar": {
"type": "http",
"url": "https://sec-edgar-api.kidriahx.workers.dev/mcp"
}
}
}
Claude Code users can run claude mcp add --transport http sec-edgar https://sec-edgar-api.kidriahx.workers.dev/mcp. Each client uses a slightly different format, so see the agent kit below for exact files.
If the operator has set MCP_API_KEYS, send a key as Authorization: Bearer <key>, X-API-Key: <key> or ?api_key=<key>. The public endpoint above needs no key.
Example prompts:
- "Which companies had cluster insider buying (2+ insiders) in the last 30 days?"
- "Show NVIDIA's last 10 insider sales and whether they were under 10b5-1 plans."
- "Compare Apple's revenue, net margin and debt-to-equity with last year."
- "Find 8-K filings this year that mention 'share repurchase'."
More are in prompts/.
Agent kit
Everything you need to plug the server into an agent, tested against the live endpoint:
docs/SETUP.md: a step-by-step setup guide for each client, plus troubleshooting.kit/: copy-paste configs for Claude Desktop (viamcp-remoteor a custom connector), Claude Code, Cursor, VS Code, Windsurf, and a generic Streamable HTTP example (curl, Node SDK, Python SDK).skills/: four Agent Skills (SKILL.md) that teach the agent reliable workflows:insider-buying-scan: market-wide cluster buys, then per-company trade detail and contextcompany-financial-snapshot: a multi-year XBRL table (revenue, net income, cash) that de-duplicates periods correctlyfiling-monitor: an 8-K digest for a watchlist, with decoded item numbersearnings-prep: a one-page brief before an earnings report
prompts/: 10 example prompts and the tools each one should trigger.test/skills.mjs:node test/skills.mjsruns every skill workflow against the live endpoint (Node 18+, no install).
Need bulk or scheduled data?
This MCP server is free and is meant for interactive, agent-sized lookups: one company or a handful of filings per call. If you need more than that, such as daily 8-K alerts across the whole market, filings for hundreds of tickers, keyword sweeps over a date range, or results delivered to a dataset, webhook or spreadsheet on a schedule, we also publish a paid Apify Actor built on the same SEC sources:
SEC EDGAR Filings & Financials API (Apify)
companyFilings: 8-K or any form by tickermarketFilings: every filing of chosen forms across all companies in a date range, with 8-K item and full-text keyword filtersfinancials: XBRL snapshots for a list of tickers- Scheduling and change detection (
onlyNewSinceLastRun), so you only get filings you haven't seen - Pay per result: $0.002 per filing row and $0.005 per company snapshot, with a
maxResultscap. Apify's free plan includes monthly platform credit.
You don't need it to use anything in this repo. The MCP server stays free, and the Actor is optional for batch and scheduled jobs. Insider trades aren't part of that Actor; for those, use this server's get_insider_trades and get_market_insider_buys.
REST endpoints
The same Worker also serves a REST API (see openapi.yaml):
/v1/insider-trades/{tickerOrCik}, /v1/insider-buys, /v1/filings/{tickerOrCik}, /v1/company/{tickerOrCik}/snapshot, /v1/company/{tickerOrCik}/facts, /v1/company/{tickerOrCik}/concept/{taxonomy}/{tag}, /v1/search, /v1/resolve/{tickerOrCik}, plus /health.
Run locally
Requires Node.js 18+. No Cloudflare account is needed for local dev.
npm install
npx wrangler dev --test-scheduled # serves http://localhost:8787 (MCP at /mcp)
node test/unit.mjs # unit tests
node test/harness.mjs http://localhost:8787 # REST against live EDGAR
node test/mcp.mjs http://localhost:8787 # MCP: lists tools and calls each one
curl "localhost:8787/__scheduled?cron=*/10+*+*+*+*" # run the insider-buy cron once
Optional local secrets go in .dev.vars (git-ignored; see .dev.vars.example).
Deploy your own (Cloudflare Workers Free)
npx wrangler loginnpx wrangler kv namespace create CACHE, then put the printed id inwrangler.toml([[kv_namespaces]]).- Set
SEC_USER_AGENTinwrangler.tomlto your own name and a monitored email (SEC fair-access requirement). npx wrangler deploy- Optional:
npx wrangler secret put MCP_API_KEYS(protects/mcp) andnpx wrangler secret put RAPIDAPI_PROXY_SECRET(protects REST).
The Durable Object rate limiter (SecRateLimiter) and the */10 * * * * cron are created automatically.
Project layout
src/index.js: router and REST endpointssrc/sec.js: SEC client, global rate limiter (Durable Object), cachingsrc/form4.js: Form 4 XML parsersrc/mcp/: MCP server (tools.jsdefines the 7 tools)test/: unit tests, live harness, MCP test, skill-workflow smoke test (skills.mjs) and sample responseskit/: client configs,skills/: Agent Skills,prompts/: example prompts,docs/SETUP.md: setup guideserver.json: MCP Registry metadata
License
MIT © 2026 MonRiah Studio. See LICENSE.