search_sec_filings_toolLABSCO SUMMARY
Two tools on top of a pipeline you have to run first.
Search is the easy part; the work is upstream — download the filing, OCR it into Markdown, embed it into Chroma. Nothing comes back until that has happened for the ticker and year you are asking about. In exchange the retrieval is genuinely hybrid rather than vector-only: BM25 and dense results fused, then reranked.
What it is
The MCP surface of a Python toolkit that downloads SEC filings, converts them to Markdown with olmOCR, chunks and indexes them in Chroma alongside earnings transcripts, and searches the result. The MCP server exposes the search half; ingestion runs through the CLI and a FastAPI app.
What you get
- Hybrid search over indexed SEC filings — dense retrieval and BM25 fused by reciprocal rank, then reranked —
search_sec_filings_tool - The same pipeline over earnings-call transcripts —
search_transcripts_tool - Queries scoped by ticker, year and filing type, so a question lands inside one 10-K rather than the whole index
Requirements
This is a stack, not a one-line install. uv sync --group ocr-md --group mcp, then start the model servers with make vllm-olmocr-serve, make vllm-embd-serve and make vllm-reranker-serve before running python mcp_server.py. Configuration comes from .env: SEC_API_ORGANIZATION and SEC_API_EMAIL for SEC access, OLMOCR_SERVER, OLMOCR_MODEL and OLMOCR_WORKSPACE for OCR, EMBEDDING_SERVER and EMBEDDING_MODEL for embeddings, CHROMA_PERSIST_DIR for the vector store, and MCP_HOST, MCP_PORT and MCP_NGROK_ALLOWED_HOSTS for the network side. Filings must be downloaded and embedded before either tool returns anything.
Setup effort
Build from source — get the source and build it, then follow the project's own run instructions
USE CASES
Answering a question from a specific 10-K
Search inside one company's filing for a year and read the passages that actually mention the thing you asked about.
Comparing what management said with what was filed
Query the transcript index and the filing index for the same topic and read them side by side.
Tracking guidance across quarters
Search the transcripts for a phrase such as demand trends across a year rather than reading four calls end to end.
2 tools
Listed in project docs. Your client may show a different list.
search_transcripts_toolBEFORE YOU INSTALL
What to know first
Tools you get
2 tools named in the project's documentation.
Requires
- uv
- A local checkout of the repository with uv sync --group ocr-md --group mcp
- The model servers and the API running (make vllm-olmocr-serve, make vllm-embd-serve, make vllm-reranker-serve, make start-server)
INSTALLATION
Connect your client
This project publishes no client configuration, so the entry for your client is yours to write.
Server setup
uv run --group ocr-md --group mcp python mcp_server.py