SEC Filings and Earnings Call
El servidor MCP proporciona flujos de trabajo completos para presentaciones ante la SEC y transcripciones de llamadas de resultados, que incluyen resolución de tickers, recuperación de documentos, OCR, incrustación, descubrimiento de recursos en disco y búsqueda semántica, expuestos a través de MCP y respaldados por los mismos backends de olmOCR e incrustación que los backends de vLLM.
Documentación
Finance Data MCP
Un kit de herramientas centrado en Python para la ingesta de presentaciones SEC, conversión de OCR a Markdown, recopilación de transcripciones y recuperación mediante recuperación híbrida (densa + BM25) con reordenamiento.
Qué hace este proyecto
- Descarga presentaciones SEC y almacena metadatos de las presentaciones.
- Convierte los PDF de las presentaciones a Markdown mediante olmOCR.
- Divide en fragmentos e indexa presentaciones/transcripciones en Chroma.
- Admite:
- Búsqueda híbrida (densa + BM25 fusión de rango recíproco + reordenador).
- Expone flujos de trabajo mediante:
- FastAPI (
server.py). - Servidor MCP (
mcp_server.py).
- FastAPI (
Estructura del repositorio
finance_data/filings/: descarga SEC + utilidades.finance_data/ocr/: pipeline de olmOCR.finance_data/dataloader/: división en fragmentos, indexación en Chroma, recuperación semántica + BM25.finance_data/earnings_transcripts/: obtención y persistencia de transcripciones.finance_data/server_api/: modelos de solicitud/respuesta de la API + utilidades por lotes.server.py: aplicación FastAPI.mcp_server.py: punto de entrada de MCP.docs/: documentación de configuración y operaciones.
Inicio rápido
1) Instalar dependencias
uv sync
Para flujos de OCR/incrustación:
uv sync --group ocr-md
Para flujos de trabajo MCP:
uv sync --group ocr-md --group mcp
2) Configurar el entorno
Use .env o variables de entorno. Configuraciones comunes:
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 ver los valores predeterminados.
3) Ejecutar servicios
Inicie los servidores de modelos:
make vllm-olmocr-serve
make vllm-embd-serve
make vllm-reranker-serve
Inicie la API:
make start-server
Inicie MCP:
uv run --group ocr-md --group mcp python mcp_server.py
Capacidades de búsqueda
API de presentaciones SEC
- Híbrida (densa + BM25 + reordenador):
POST /vector_store/search_sec_filings
API de transcripciones
- Híbrida (densa + BM25 + reordenador):
POST /vector_store/search_transcripts
Herramientas MCP
- Híbrida:
search_sec_filings_tool,search_transcripts_tool
Flujos de trabajo principales
Presentación 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
Incrustar y buscar presentaciones (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}'
Transcripciones de resultados trimestrales
Obtenga transcripciones trimestrales:
uv run python -m finance_data.earnings_transcripts.transcripts AMZN 2025
Incruste y busque transcripciones de forma híbrida:
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 los envoltorios del Makefile:
make docker-build
make docker-start
Detenga/elimine por puerto de la API:
make docker-stop
make docker-remove
Documentación
docs/README.mddocs/setup-and-operations.md