loading…
Search for a command to run...
loading…
Query SEC EDGAR filings, XBRL financials, and company data through MCP. STDIO & Streamable HTTP.
Query SEC EDGAR filings, XBRL financials, and company data through MCP. STDIO & Streamable HTTP.
Query SEC EDGAR filings, XBRL financials, and company data through MCP. STDIO & Streamable HTTP.
Public Hosted Server: https://secedgar.caseyjhand.com/mcp
Six tools for querying SEC EDGAR data, plus three for SQL analytics over the DuckDB-backed canvas dataframes those tools materialize:
| 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_fetch_frames |
Fetch SEC XBRL frames for one concept × one period across all reporting companies |
secedgar_search_concepts |
Discover supported XBRL concept names or reverse-lookup a raw tag |
secedgar_dataframe_describe |
List canvas dataframes with provenance, TTL, and schema |
secedgar_dataframe_query |
Run a single-statement SELECT across dataframes |
secedgar_dataframe_drop |
Drop a canvas dataframe by name. Opt-in via EDGAR_DATAFRAME_DROP_ENABLED=true — off by default since TTL already handles cleanup |
secedgar_company_searchEntry point for most EDGAR workflows — resolve tickers, names, or CIKs to entity details.
AAPL), company names (Apple), or CIK numbers (320193)secedgar_search_filingsFull-text search across all EDGAR filing documents since 1993.
"material weakness"), boolean operators (revenue OR income), wildcards (account*)cik:320193 or ticker:AAPL)ticker:/cik: is used) is materialized as a df_<id> dataframe — query it with secedgar_dataframe_querysecedgar_get_filingFetch a specific filing's metadata and document content by accession number.
secedgar_get_financialsGet historical XBRL financial data for a company with friendly concept name resolution.
"revenue", "net_income", "eps_diluted" auto-resolve to correct XBRL tagssecedgar://concepts resource for the full mappingsecedgar_fetch_framesFetch SEC XBRL frames for one concept × one period across all reporting companies.
secedgar_get_financialsCY2023), quarterly (CY2024Q2), and instant (CY2023Q4I) periodsdf_<id> dataframe — query it with secedgar_dataframe_querysecedgar_search_conceptsDiscover supported XBRL concept names before querying financials or cross-company comparisons.
income_statement, balance_sheet, cash_flow, per_share, entity_info) or taxonomyNetIncomeLoss to the supported friendly namessecedgar_get_financials, secedgar_fetch_frames, and secedgar://conceptssecedgar_dataframe_describe / secedgar_dataframe_query / secedgar_dataframe_dropIn-conversation SQL analytics over the dataframes that secedgar_fetch_frames, secedgar_search_filings, and secedgar_get_financials materialize on a shared DuckDB-backed canvas. Each data-returning call adds a dataset field with a df_XXXXX_XXXXX handle; pass that handle to secedgar_dataframe_query for joins, aggregates, window functions, percentiles — standard DuckDB SQL.
information_schema, pg_catalog, sqlite_master, duckdb_*) are denied at the bridge layer so callers can't enumerate dataframes they don't already hold a handle for. secedgar_dataframe_drop is the only destructive tool and is opt-in (EDGAR_DATAFRAME_DROP_ENABLED=true); TTL handles cleanup otherwise.EDGAR_DATASET_TTL_SECONDS). The canvas itself uses the framework's sliding TTL.register_as chaining. secedgar_dataframe_query can persist its result as a new dataframe (df_XXXXX_XXXXX) with a fresh TTL — pipe analyses without re-running the source query.| 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 |
| 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 |
Built on @cyanheads/mcp-ts-core:
none, jwt, oauth)SEC EDGAR–specific:
html-to-textsecedgar_fetch_frames, secedgar_search_filings, and secedgar_get_financials materialize their full upstream response as a DuckDB-backed canvas dataframe queryable via secedgar_dataframe_queryA 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"
}
}
}
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 [email protected]",
"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 [email protected]",
"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
git clone https://github.com/cyanheads/secedgar-mcp-server.git
cd secedgar-mcp-server
bun install
bun run build
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 [email protected]". 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 |
EDGAR_DATASET_TTL_SECONDS |
Per-table TTL for canvas-registered dataframes. Sliding window touched on every dataframe op. | 86400 |
EDGAR_DATAFRAME_DROP_ENABLED |
Set to true to expose secedgar_dataframe_drop — the only destructive tool on this server. Off by default; TTL handles cleanup. |
false |
CANVAS_PROVIDER_TYPE |
Canvas engine. Defaults to duckdb; set to none to disable the canvas (e.g. when running on Cloudflare Workers, where DuckDB has no V8-isolate build). |
duckdb |
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 |
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 build -t secedgar-mcp-server .
docker run -e EDGAR_USER_AGENT="MyApp [email protected]" -p 3010:3010 secedgar-mcp-server
| Directory | Purpose |
|---|---|
src/mcp-server/tools/definitions/ |
Tool definitions (*.tool.ts). Six SEC EDGAR tools plus three dataframe_* tools for SQL analytics. |
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/services/canvas-bridge/ |
Adapter over the framework DataCanvas: df_<id> minting, all-nullable schema derivation, per-table TTL bookkeeping, bridge-layer system-catalog SQL deny. |
src/config/ |
Server-specific environment variable parsing and validation with Zod. |
tests/ |
Unit and integration tests, mirroring the src/ structure. |
See CLAUDE.md and AGENTS.md for development guidelines and architectural rules. The short version:
try/catch in tool logicctx.log for logging, ctx.state for storagecreateApp() arraysIssues and pull requests are welcome. Run checks and tests before submitting:
bun run devcheck
bun run test
This project is licensed under the Apache 2.0 License. See the LICENSE file for details.
Выполни в терминале:
claude mcp add secedgar-mcp-server -- npx -y @cyanheads/secedgar-mcp-serverPRs, issues, code search, CI status
автор: GitHubDatabase, auth and storage
автор: SupabaseSecure file operations with configurable access controls.
Reference / test server with prompts, resources, and tools.
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development