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).

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_EMAIL
  • OLMOCR_SERVER, OLMOCR_MODEL, OLMOCR_WORKSPACE
  • EMBEDDING_SERVER, EMBEDDING_MODEL
  • CHROMA_PERSIST_DIR
  • MCP_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.md
  • docs/setup-and-operations.md