Skip to main content
Glama

DAAS - Datos como Servicio

Plataforma en capas para datos financieros, económicos y estadísticos: un único archivo SQLite (daas.db) detrás de un servidor MCP consolidado, con la obtención de datos delegada al upstream fd-open-data-mcp.

¿Qué es esto? Una plataforma de datos local que convierte librerías de Python (akshare, yfinance, edgar, edinet-tools, dartlab, world_bank_data, ckanapi) en un almacén consultable, con cálculo de indicadores y listo para paneles, respaldado por un único archivo SQLite. Lo conduces mediante habilidades de Claude Code (cáscaras delgadas que llaman a manifiestos de flujos de trabajo) o mediante el servidor MCP consolidado fd-daas-mcp — ambas rutas leen/escriben la misma base de datos.

Upstream: El obtenedor de datos fd-open-data-mcp es un repositorio hermano en ~/finddata/fd-open-data-mcp (clonado automáticamente por install.sh).

Sitio de documentación: La documentación completa basada en roles vive en docs-site/ (Material de MkDocs, bilingüe EN+ZH). Léela localmente con uv run mkdocs serve (navega en /DAAS/), o constrúyela estrictamente con uv run mkdocs build --strict. Consulta docs-site/README.md para construir/servir/desplegar.


Arquitectura

Dependencia estrictamente descendente — una capa nunca alcanza hacia arriba.

L3  user MCP compositions  (composite manifests, served in-proc on fd-daas-mcp)
L2  workflow manifests      (daas.db `workflows` table + engine, run via workflow_run)
L1  fd-daas-mcp            (consolidated infra: daas/cron/alerts/dashboard/composite/research/pdf/gateway/workflow)
L0  fd-open-data-mcp       (sole data-fetch upstream; concept-based semantic fetcher + entity master)
  • L0 — fd-open-data-mcp (repositorio hermano): la única superficie de obtención de datos. Un obtenedor semántico basado en conceptos con ranking/fallback/caché; contiene el maestro de entidades (entities, entity_datasource_links). Servido por HTTP en :8300 (fallback stdio). Reemplaza a los 11 MCP de obtención de datos por fuente anteriores.

  • L1 — fd-daas-mcp (este repositorio): el servidor stdio consolidado, única entrada en la raíz del repo .mcp.json. Expone 161 herramientas en 9 grupos (daas · cron · alerts · dashboard · composite · research · pdf · gateway · workflow) detrás de un único servidor y una única CLI Click fd-daas-mcp. La capa de consolidación delgada es fd-daas-mcp/daas/fd_daas_mcp/ (server.py/registry.py/cli.py/selfcheck.py); el código de herramientas de cada grupo vive dentro del paquete en fd-daas-mcp/<grupo>-mcp/.

  • L2 — Manifiestos de flujos de trabajo: los manifiestos viven en la tabla workflows en daas.db (registrados vía workflow_register, ejecutados vía workflow_run). build_workflow_from_goal descompone un objetivo en lenguaje natural en un manifiesto mediante un LLM.

  • L3 — Composición de MCP de usuario: un manifiesto compuesto ({name, upstreams, tools, workflows, prompt}) cura una superficie MCP nombrada servida en-proceso en el servidor consolidado. CRUD vía composite_*_manifest.

Las habilidades de obtención (fd-daas-based-data-fetch, fd-daas-fetch-data, fd-daas-research) son cáscaras delgadas: recopilación de parámetros → workflow_run(nombre, parámetros) → manejo de puntos de control. Ya no llaman a librerías de Python directamente — la obtención desciende a través de L1→L0.

Para la arquitectura completa, convenciones y la referencia del esquema de daas.db, consulta CLAUDE.md y construction/mcp.md.


Related MCP server: coin-mcp

Instalación e Inicio Rápido

Requisitos: Python 3.10+ y uv. Las obtenciones de dartlab necesitan 3.12 — ejecútalas con uv run --python 3.12 --with dartlab ....

Instalación con un clic (clona DAAS + upstreams, aprovisiona venvs, inicializa daas.db, localiza .mcp.json):

curl -fsSL https://raw.githubusercontent.com/FindDataTechnology/fd-daas-mcp/master/install.sh | sh

Variables de entorno: DAAS_DEST (por defecto ~/code/DAAS), DAAS_BRANCH, FINDDATA_HOME (por defecto ~/finddata). Pasos manuales abajo.

# 1. Provision the root venv (data libs are declared deps)
uv sync

# 2. Provision the database - creates daas.db (full schema + dep-free starter
#    catalog of sources). DAAS_DATABASE_URL is OPTIONAL: unset, it defaults to
#    ./daas.db (writable cwd) or ~/.fd-daas-mcp/daas.db. Set it only to relocate.
fd-daas-mcp/.venv/bin/fd-daas-mcp init       # one-shot provision + seed
fd-daas-mcp/.venv/bin/fd-daas-mcp doctor      # read-only health check (path, schema, row counts)

# 3. Configure credentials - create a repo-root .env for the source keys you need
#    (listed in Environment Variables below). Scripts auto-load .env; no manual export.

# 4. Compute an existing indicator (upserts into observations)
uv run python .claude/skills/fd-daas-based-data-fetch/scripts/run_indicator.py SPY_ma5

# 5. Query daas.db directly (db lives at the resolved DAAS_DATABASE_URL, default ./daas.db)
sqlite3 daas.db "SELECT name, datasource, op FROM indicator_rules LIMIT 10"
sqlite3 daas.db "SELECT source, COUNT(*) FROM observations GROUP BY source"

# 6. Launch / health-check the consolidated server
fd-daas-mcp/bin/fd-daas-mcp-server                       # stdio server (what .mcp.json launches)
fd-daas-mcp/.venv/bin/python -m daas.fd_daas_mcp.selfcheck   # registry + tool health check (target: failed=0)

# 7. Run a workflow manifest (L2 — the fetch path goes L1→L0)
fd-daas-mcp/.venv/bin/python -c "
from daas_mcp_workflow_tools import workflow_run   # or via the MCP tool
print(workflow_run('fetch-and-persist', params_json='{\"entity\":\"SPY\",\"indicator\":\"ma5\"}'))
"

Los comandos de Inicio Rápido anteriores han sido verificados contra este repositorio: SPY_ma5 es una fila real de indicator_rules, y el registro de fd-daas-mcp reporta 161 herramientas en 9 fuentes (failed=0, skipped_optional=1 para el grupo opcional pdf).


Estructura del Proyecto

daas/
├── .claude/skills/          # Claude Code skills (fd-daas-based-data-fetch is the core fetch shell)
├── fd-daas-mcp/             # Consolidated MCP server — sole .mcp.json entry (161 tools, 9 groups)
│   ├── alerts-mcp/          #   alert rule engine + 7 notification channels
│   ├── composite-mcp/       #   user MCP composition (curate tools + embed workflows + prompt)
│   ├── cron-mcp/            #   task + schedule registry (DB-backed)
│   ├── daas-mcp/            #   datasource/function/indicator/entity catalog + compute + rules
│   ├── dashboard-mcp/       #   standalone-HTML dashboard registry + query
│   ├── gateway-mcp/         #   L0 upstream registry + call routing (former leader gateway half)
│   ├── workflow-mcp/        #   manifest-based multi-step data workflows (former leader workflow half)
│   ├── pdf-mcp/             #   local PDF/text semantic search (sqlite-vec) [optional]
│   ├── research-mcp/        #   persisted research bundle (collections + indicators + dashboard + report)
│   ├── bin/fd-daas-mcp-server      # launcher
│   └── daas/fd_daas_mcp/   # server.py / registry.py / cli.py / selfcheck.py
├── daas.db                  # Shared SQLite database (ships as a demo dataset: registry + observations + scraw_*)
├── dashboards/              # Standalone HTML dashboards (+ index.html, daas.md)
├── construction/            # Architecture docs (mcp.md — layered L0/L1/L2/L3)
└── .env                     # DAAS_DATABASE_URL, proxy, source auth keys, LLM config, ...

Modelo de Datos de daas.db

Un único archivo SQLite en la ruta de DAAS_DATABASE_URL (las rutas relativas sqlite:/// se resuelven contra la raíz del repo; PRAGMA foreign_keys=ON para cascada de claves foráneas, PRAGMA journal_mode=WAL + busy_timeout=10000 para evitar "base de datos bloqueada"). Las tablas se agrupan por rol:

Rol

Tablas

Qué contienen

Registro / catálogo

sources, daas_functions, daas_function_columns, entities, entity_datasource_links, indicator_rules

Catálogo de fuentes/funciones/columnas; acciones + sus identificadores de fuente; enlaces de indicadores (tabla + columnas + operador + parámetros)

Series calculadas

observations

Salida de indicadores — un punto (source, function_name, indicator, date) por fila; actualizado por run_indicator.py. Los paneles y alertas leen esto.

Datos de fuente obtenidos

scraw_<slug>

Filas crudas traídas por una obtención (auto-creadas por upsert.py). observations se calculan a partir de estas.

Colecciones + reglas

entity_collections*, indicator_collections*, rules, process_results

Grupos nombrados de entidades/indicadores + registro de auditoría de altas/bajas; el almacén unificado de rules (json/script/position/llm) impulsa la membresía + la extracción con LLM

Operacional MCP

dashboards, alert_rules, alert_events, schedules, tasks, gateway_upstreams, workflows, workflow_runs, workflow_run_steps, composites, researches

Registro de paneles, motor de alertas, estado de cron, estado de gateway/flujos de trabajo/compuestos/investigaciones

Consúltala directamente desde la raíz del repo: sqlite3 daas.db "SELECT …".


Habilidades (.claude/skills/)

Las habilidades son Markdown plano (SKILL.md) + scripts de Python. Las habilidades de obtención son cáscaras delgadas que recopilan parámetros y llaman a workflow_run — ya no llaman a librerías de datos de Python directamente (la obtención desciende L1→L0).

Habilidad

Propósito

fd-daas-based-data-fetch (cáscara de obtención principal)

Resuelve una entidad + indicador contra daas.db, luego workflow_run(nombre, parámetros) para obtener vía fd-open-data-mcp y persistir en scraw_* / observations.

fd-daas-fetch-data

Flujo de trabajo entidad → cobertura → indicador (sqlite3 + los scripts principales).

fd-daas-research

Orquesta analizar → [colección] → indicadores → panel → persistir como un paquete de research + informe Markdown.

fd-daas-brainstorm

Clarifica un objetivo de investigación mediante diálogo → daas-doc/research/<plan>.md (sin estado en daas.db).

fd-daas-indicators-creator

Persiste una serie obtenida en una tabla scraw_<slug> (refresco manual — sin cron).

fd-daas-dashboard-creator

Construye un panel HTML ECharts independiente + lo registra.

fd-daas-dashboard

Encuentra / abre / inspecciona paneles existentes (solo lectura).

fd-daas-entities-collection-creator / fd-daas-entities-collection

Define una colección de entidades basada en reglas / operaciones diarias de colección.

fd-daas-indicators-collection-creator

Cura una colección de indicadores + exporta CSV/markdown con puntuaciones resueltas.

fd-daas-rules-creator

Redacta una regla unificada (json/script/position/llm), la adjunta a una colección, prueba en seco, sincroniza.

fd-daas-pdf

Ingiere un PDF/texto en un almacén vectorial local (sqlite-vec) y busca semánticamente. Requiere el extra [pdf].

fd-daas-scrapling-official

Extrae páginas protegidas contra bots (Cloudflare/renderizado JS) vía Scrapling.

fd-daas-skill-creator / fd-daas-skill-review

Crea/optimiza y revisa/prueba habilidades daas.

fd-coding-mcp-creator

Anda una composición de MCP de usuario (L3): entrevista → manifiesto → registro → autoverificación.

fd-coding-skill-creator, fd-coding-daas-*, openspec-*

Infraestructura: crea/optimiza habilidades, constructores de reinicio/datos crudos/fuentes, ciclo de vida de cambios OpenSpec.


Grupos de Herramientas MCP (fd-daas-mcp)

El servidor consolidado expone 161 herramientas en 9 grupos (failed=0, skipped_optional=1 para el grupo opcional pdf). El catálogo es a nivel de grupo (detalle por herramienta vía la introspección del propio servidor / selfcheck).

Grupo

Prefijo

Herramientas

Propósito

daas

daas_*

87

Catálogo de fuentes de datos/funciones/columnas/entidades/indicadores, cálculo de indicadores, extracción con LLM, colecciones, cobertura de entidades, reglas unificadas.

dashboard

dashboard_*

11

Registro de paneles HTML independientes (CRUD), consulta de tablas, estadísticas, regeneración de índices.

alerts

alerts_*

10

Motor de reglas de alertas sobre series de observaciones + 7 canales de notificación (Telegram/Discord/Slack/Twitter/DingTalk/Feishu/WeCom).

cron

cron_*

13

Registro de tareas y programaciones respaldado por BD; run_now ad hoc; historial de ejecución.

composite

composite_*

16

Composición MCP de usuario (L3): seleccionar herramientas de fuentes ascendentes + incrustar flujos de trabajo + prompt.

research

research_*

9

Paquete de investigación persistente que vincula colecciones/indicadores/paneles/pipeline + informe markdown.

gateway

gateway_*

7

CRUD del registro de fuentes ascendentes L0 + enrutamiento de llamadas a fd-open-data-mcp (antigua mitad de pasarela de leader).

workflow

workflow_*

8

Obtenciones de datos de varios pasos basadas en manifiesto: registrar/ejecutar/reanudar/inspeccionar (antigua mitad de flujo de trabajo de leader).

pdf

pdf_*

—

Búsqueda semántica local de PDF/texto (sqlite-vec + sentence-transformers). Opcional: condicionada a la importación de sqlite_vec.

El grupo heredado leader se disuelve: su mitad de enrutamiento de pasarela pasó a ser gateway_*, y su mitad de manifiesto de flujo de trabajo pasó a ser workflow_*. Las capacidades de registro de harness / snapshot / procedencia se eliminan.

Lanzamiento: fd-daas-mcp/bin/fd-daas-mcp-server (stdio). Tanto el servidor como la CLI fd-daas-mcp consumen registry.build(), por lo que las dos superficies no pueden divergir.


Variables de entorno

Un único .env en la raíz del repositorio contiene toda la configuración; los scripts y el servidor MCP lo cargan automáticamente. (Las claves marcadas como opcionales solo se necesitan para las funciones que habilitan).

Clave

Propósito

¿Obligatoria?

DAAS_DATABASE_URL

URL sqlite:/// a daas.db (relativa resuelta contra la raíz del repositorio, o absoluta). Opcional: si no se define, por defecto ./daas.db (directorio de trabajo escribible) o ~/.fd-daas-mcp/daas.db. Ejecute fd-daas-mcp init para aprovisionar.

opcional

HTTP_PROXY

Proxy de salida para bibliotecas de datos.

opcional

EDGAR_IDENTITY

Cadena de identidad SEC EDGAR ("Name email@domain").

para edgar

EDINET_API_KEY

Clave de obtención de documentos EDINET de Japón.

para edinet

CKAN_PORTAL_URL

URL base del portal CKAN.

para ckan

LLM_BASE_URL, LLM_API_KEY, LLM_MODEL

Endpoint LLM compartido para extracción / planificador de flujos de trabajo.

para funciones LLM

LEADER_MODELS, LEADER_MODEL_HIGH/BALANCE/FAST

Anulaciones de modelo por nivel para el planificador de flujos de trabajo (build_workflow_from_goal). Se conservan los nombres; la única etiqueta descriptiva es «planificador de flujos de trabajo».

opcional

ALERTS_FEISHU_WEBHOOK_URL

Webhook de Feishu para el canal de alertas.

para alertas feishu

DASHBOARD_PORT

Puerto para la aplicación de paneles.

opcional


Para agentes de IA

Si usted es un agente de IA (p. ej., Claude Code) que opera en este repositorio:

  • Obtenga datos a través de la ruta de flujo de trabajo. Use fd-daas-based-data-fetch: resuelva la entidad + el indicador contra daas.db mediante sqlite3, luego workflow_run(name, params) — el manifiesto enruta la obtención a través de gateway_call → fd-open-data-mcp (L0) y persiste en scraw_<slug> / observations. Para obtenciones de varios pasos, build_workflow_from_goal emite un manifiesto.

  • Flujo de trabajo: resolver → obtener (vía L0) → persistir. Resuelva entidad+indicador en daas.db; obtenga a través de la pasarela; persista en scraw_<slug> (crudo) o observations (indicador calculado).

  • Use el servidor MCP para todo lo demás — exploración del catálogo, creación de indicadores/colecciones/reglas, programación cron, alertas, creación/búsqueda de paneles, búsqueda semántica de PDF, creación de compuestos, paquetes de investigación. Estas son las herramientas fd-daas-mcp (161 en 9 grupos).

  • Consulte daas.db con sqlite3 desde la raíz del repositorio (sqlite3 daas.db "…"). Use PRAGMA foreign_keys=ON para la cascada de claves foráneas.

  • Referencia autoritativa de arquitectura + esquema: CLAUDE.md (tiene una sección ## daas.db que enumera todas las tablas) y construction/mcp.md (la referencia en capas L0/L1/L2/L3).


Licencia

Apache 2.0.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Economic data MCP server that connects FRED, BLS, BEA, IMF, World Bank, and ECB to any MCP-compatible client, with built-in methodology rules to guide LLMs in selecting appropriate economic indicators.
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    A comprehensive cryptocurrency market-data MCP server with 49 tools across six data sources, enabling LLMs to answer market questions via natural language.
    49
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Unified MCP server for querying CSV, Postgres, and REST API data sources via embedded DuckDB, enabling cross-source SQL joins with no external query service.
    7
    14 npm
    MIT