SEC filings and Earnings call transcripts data
Project description
Finance Data MCP
A Python-first toolkit for SEC filing ingestion, OCR-to-Markdown conversion, transcript collection, and retrieval across hybrid retrieval (dense + BM25) with reranking.
What this project does
- Downloads SEC filings and stores filing metadata.
- Converts filing PDFs to Markdown via olmOCR.
- Chunks and indexes filings/transcripts in Chroma.
- Supports:
- Hybrid search (dense + BM25 reciprocal-rank-fusion + reranker).
- Exposes workflows through:
- FastAPI (
server.py). - MCP server (
mcp_server.py).
- FastAPI (
Repository layout
finance_data/filings/: SEC download + helpers.finance_data/ocr/: olmOCR pipeline.finance_data/dataloader/: chunking, Chroma indexing, semantic + BM25 retrieval.finance_data/earnings_transcripts/: transcript fetch + persistence.finance_data/server_api/: API request/response models + batch helpers.server.py: FastAPI app.mcp_server.py: MCP entrypoint.docs/: setup and operations docs.
Quick start
1) Install dependencies
uv sync
For OCR/embedding flows:
uv sync --group ocr-md
For MCP workflows:
uv sync --group ocr-md --group mcp
2) Configure environment
Use .env or environment variables. Common settings:
SEC_API_ORGANIZATION,SEC_API_EMAILOLMOCR_SERVER,OLMOCR_MODEL,OLMOCR_WORKSPACEEMBEDDING_SERVER,EMBEDDING_MODELCHROMA_PERSIST_DIRMCP_HOST,MCP_PORT,MCP_NGROK_ALLOWED_HOSTS
See finance_data/settings.py for defaults.
3) Run services
Start model servers:
make vllm-olmocr-serve
make vllm-embd-serve
make vllm-reranker-serve
Start API:
make start-server
Start MCP:
uv run --group ocr-md --group mcp python mcp_server.py
Search capabilities
SEC filings API
- Hybrid (dense + BM25 + reranker):
POST /vector_store/search_sec_filings
Transcript API
- Hybrid (dense + BM25 + reranker):
POST /vector_store/search_transcripts
MCP tools
- Hybrid:
search_sec_filings_tool,search_transcripts_tool
Core workflows
SEC filing → Markdown
uv run python -m finance_data.filings.sec_data --ticker AMZN --year 2025
uv run python -m finance_data.ocr.olmocr_pipeline --pdf-dir sec_data/AMZN-2025
Embed and search filings (API)
curl -s -X POST "http://127.0.0.1:8081/vector_store/embed_sec_filings" \
-H "Content-Type: application/json" \
-d '{"ticker":"AMZN","year":"2025","filing_type":"10-K","force":false}'
curl -s -X POST "http://127.0.0.1:8081/vector_store/search_sec_filings" \
-H "Content-Type: application/json" \
-d '{"ticker":"AMZN","year":"2025","filing_type":"10-K","query":"operating income margin","top_k":5}'
Earnings transcripts
Fetch quarterly transcripts:
uv run python -m finance_data.earnings_transcripts.transcripts AMZN 2025
Embed + hybrid search transcripts:
curl -s -X POST "http://127.0.0.1:8081/vector_store/embed_transcripts" \
-H "Content-Type: application/json" \
-d '{"ticker":"AMZN","year":"2025","force":false}'
curl -s -X POST "http://127.0.0.1:8081/vector_store/search_transcripts" \
-H "Content-Type: application/json" \
-d '{"ticker":"AMZN","year":"2025","query":"AWS revenue growth","top_k":5}'
Docker
Use Makefile wrappers:
make docker-build
make docker-start
Stop/remove by API port:
make docker-stop
make docker-remove
Documentation
docs/README.mddocs/setup-and-operations.md
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
finance_data_llm-0.1.8.tar.gz
(53.7 kB
view details)
File details
Details for the file finance_data_llm-0.1.8.tar.gz.
File metadata
- Download URL: finance_data_llm-0.1.8.tar.gz
- Upload date:
- Size: 53.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","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 |
883138e287782306b36bb8fc0b391bef7a2cee7ed07bfc31f158821bc3b813f4
|
|
| MD5 |
f6e8329b44536b301a77be81d6240da8
|
|
| BLAKE2b-256 |
bf1488acd9c4d192c10465f04b7e2c44816dc0d5b46ee5f8fd69d598a7179f5d
|