SEC Filings and Earnings Call
O servidor MCP fornece fluxos de trabalho completos para arquivamentos SEC e transcrições de chamadas de lucros—incluindo resolução de tickers, recuperação de documentos, OCR, incorporação, descoberta de recursos em disco e busca semântica—expostos via MCP e alimentados pelos mesmos backends olmOCR e de incorporação dos backends vLLM.
Documentação
Finance Data MCP
Um kit de ferramentas Python-first para ingestão de arquivos SEC, conversão de OCR para Markdown, coleta de transcrições e recuperação através de recuperação híbrida (dense + BM25) com reranking.
O que este projeto faz
- Baixa arquivos SEC e armazena metadados dos arquivos.
- Converte PDFs de arquivos para Markdown via olmOCR.
- Divide em chunks e indexa arquivos/transcrições no Chroma.
- Suporta:
- Busca híbrida (dense + BM25 reciprocal-rank-fusion + reranker).
- Expõe fluxos de trabalho através de:
- FastAPI (
server.py). - Servidor MCP (
mcp_server.py).
- FastAPI (
Estrutura do repositório
finance_data/filings/: download SEC + utilitários.finance_data/ocr/: pipeline olmOCR.finance_data/dataloader/: divisão em chunks, indexação Chroma, recuperação semântica + BM25.finance_data/earnings_transcripts/: busca de transcrições + persistência.finance_data/server_api/: modelos de requisição/resposta da API + utilitários de lote.server.py: aplicativo FastAPI.mcp_server.py: ponto de entrada MCP.docs/: documentação de configuração e operações.
Início rápido
1) Instalar dependências
uv sync
Para fluxos de OCR/embedding:
uv sync --group ocr-md
Para fluxos de trabalho MCP:
uv sync --group ocr-md --group mcp
2) Configurar ambiente
Use .env ou variáveis de ambiente. Configurações comuns:
SEC_API_ORGANIZATION,SEC_API_EMAILOLMOCR_SERVER,OLMOCR_MODEL,OLMOCR_WORKSPACEEMBEDDING_SERVER,EMBEDDING_MODELCHROMA_PERSIST_DIRMCP_HOST,MCP_PORT,MCP_NGROK_ALLOWED_HOSTS
Consulte finance_data/settings.py para valores padrão.
3) Executar serviços
Inicie os servidores de modelo:
make vllm-olmocr-serve
make vllm-embd-serve
make vllm-reranker-serve
Inicie a API:
make start-server
Inicie o MCP:
uv run --group ocr-md --group mcp python mcp_server.py
Capacidades de busca
API de arquivos SEC
- Híbrido (dense + BM25 + reranker):
POST /vector_store/search_sec_filings
API de transcrições
- Híbrido (dense + BM25 + reranker):
POST /vector_store/search_transcripts
Ferramentas MCP
- Híbrido:
search_sec_filings_tool,search_transcripts_tool
Fluxos de trabalho principais
Arquivo SEC → 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
Incorporar e buscar arquivos (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}'
Transcrições de resultados
Buscar transcrições trimestrais:
uv run python -m finance_data.earnings_transcripts.transcripts AMZN 2025
Incorporar + buscar transcrições híbridas:
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 wrappers do Makefile:
make docker-build
make docker-start
Parar/remover pela porta da API:
make docker-stop
make docker-remove
Documentação
docs/README.mddocs/setup-and-operations.md