LLM-optimized SEC EDGAR MCP server
Project description
sec-engine
LLM-optimized SEC EDGAR MCP server. Provides nine tools that wrap the SEC's public JSON APIs for financial data extraction and analysis — no authentication required.
Tools
| Tool | Purpose |
|---|---|
resolve |
Ticker/CIK to company identity (name, SIC, exchanges, fiscal year end) |
filings |
List SEC filings with form type and date filtering |
search_filings |
Full-text search across every filer, 2001-present |
snapshot |
Latest key metrics (~20) + full XBRL concept index |
concept_history |
Time series for one XBRL metric across all filings |
cross_company |
Compare one metric across ALL filers for peer/sector screening |
filing_section |
Extract narrative text from 10-K/10-Q Items (MD&A, Risk Factors, etc.) |
filing_documents |
List every file in a filing's archive directory |
filing_document |
Read any file in any filing, of any form type |
Reaching filings that aren't 10-K/10-Q
filing_section parses Item N headers, so it only works on Item-structured
filings. Everything else — Form 144, Form 4, N-CSR, 424B3, DEF 14A, exhibits —
goes through filing_document, which dispatches on file type:
- XML (Form 144, Forms 3/4/5) parses into nested structured data. Repeated rows such as a Form 144's Table II become arrays.
- HTML is stripped to clean text.
Prospectuses and N-CSRs routinely exceed 5 MB. Pass contains= to jump
straight to a phrase and get context windows back, rather than paging through
the document with offset=.
When the filer differs from the issuer — as it does for Form 144 and Form 4 —
the filing won't appear under the issuer in filings(). Use search_filings,
which returns the archive_cik and document name needed to fetch it.
Installation
pip install sec-engine
Or with uv:
uv pip install sec-engine
Usage
Claude Desktop
Add to your Claude Desktop config (claude_desktop_config.json):
{
"mcpServers": {
"sec-engine": {
"command": "sec-engine"
}
}
}
Docker Compose
Edit SEC_EDGAR_USER_AGENT in compose.yml with your name and email, then:
docker compose up --build
Direct (stdio)
sec-engine
Direct (streamable HTTP)
SEC_ENGINE_TRANSPORT=streamable-http sec-engine
The server supports both stdio and streamable HTTP transports via the Model Context Protocol.
Configuration
All configuration is via environment variables:
| Variable | Default | Description |
|---|---|---|
SEC_EDGAR_USER_AGENT |
SEC-Engine/0.1 (sec-engine-mcp) |
User-Agent sent to SEC.gov (SEC requires a descriptive UA) |
SEC_ENGINE_TRANSPORT |
stdio |
Transport protocol: stdio or streamable-http |
SEC_ENGINE_HOST |
127.0.0.1 |
Listen address (streamable-http only) |
SEC_ENGINE_PORT |
8000 |
Listen port (streamable-http only) |
SEC_ENGINE_PATH |
/mcp |
HTTP endpoint path (streamable-http only) |
SEC_ENGINE_ALLOWED_HOSTS |
Comma-separated allowed hosts for DNS rebinding protection (e.g. *) |
Requirements
- Python >= 3.11
Disclaimer
This software retrieves publicly available data from the SEC EDGAR system. It is provided as-is for informational purposes only and does not constitute financial, legal, or investment advice. The authors are not responsible for how you use this data or any consequences arising from its use. You are solely responsible for complying with all applicable SEC policies, regulations, and terms of service.
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sec_engine-0.6.0.tar.gz.
File metadata
- Download URL: sec_engine-0.6.0.tar.gz
- Upload date:
- Size: 17.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c826000b6ce880d19770b2594b1ee63737cab7fc55a017a692edb927a4f7b5b1
|
|
| MD5 |
d880acb3ee62872d45212cfbe8caa390
|
|
| BLAKE2b-256 |
7040c2129d4ffe6eaf0258f1e83ad8697274724c080a98b2f4d7f7c635fb59ec
|
File details
Details for the file sec_engine-0.6.0-py3-none-any.whl.
File metadata
- Download URL: sec_engine-0.6.0-py3-none-any.whl
- Upload date:
- Size: 17.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
961a4615e0c04cdfbf61aca1a9a433838adf1acf5fe16535fc75e20f8a85e9e9
|
|
| MD5 |
eaa85511fd71f7e6639301be0dc04a49
|
|
| BLAKE2b-256 |
dacc313073571151b6a1961949853023302bad77e60ff3043113445ebbf29afa
|