fd-daas-mcp
OfficialDAAS - 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 consolidadofd-daas-mcp— ambas rutas leen/escriben la misma base de datos.
Upstream: El obtenedor de datos
fd-open-data-mcpes un repositorio hermano en~/finddata/fd-open-data-mcp(clonado automáticamente porinstall.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 conuv run mkdocs serve(navega en/DAAS/), o constrúyela estrictamente conuv run mkdocs build --strict. Consultadocs-site/README.mdpara 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 Clickfd-daas-mcp. La capa de consolidación delgada esfd-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 enfd-daas-mcp/<grupo>-mcp/.L2 — Manifiestos de flujos de trabajo: los manifiestos viven en la tabla
workflowsendaas.db(registrados víaworkflow_register, ejecutados víaworkflow_run).build_workflow_from_goaldescompone 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íacomposite_*_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 | shVariables 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 |
| Catálogo de fuentes/funciones/columnas; acciones + sus identificadores de fuente; enlaces de indicadores (tabla + columnas + operador + parámetros) |
Series calculadas |
| Salida de indicadores — un punto |
Datos de fuente obtenidos |
| Filas crudas traídas por una obtención (auto-creadas por |
Colecciones + reglas |
| Grupos nombrados de entidades/indicadores + registro de auditoría de altas/bajas; el almacén unificado de |
Operacional MCP |
| 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 |
| Resuelve una entidad + indicador contra |
| Flujo de trabajo entidad → cobertura → indicador (sqlite3 + los scripts principales). |
| Orquesta analizar → [colección] → indicadores → panel → persistir como un paquete de |
| Clarifica un objetivo de investigación mediante diálogo → |
| Persiste una serie obtenida en una tabla |
| Construye un panel HTML ECharts independiente + lo registra. |
| Encuentra / abre / inspecciona paneles existentes (solo lectura). |
| Define una colección de entidades basada en reglas / operaciones diarias de colección. |
| Cura una colección de indicadores + exporta CSV/markdown con puntuaciones resueltas. |
| Redacta una regla unificada (json/script/position/llm), la adjunta a una colección, prueba en seco, sincroniza. |
| Ingiere un PDF/texto en un almacén vectorial local (sqlite-vec) y busca semánticamente. Requiere el extra |
| Extrae páginas protegidas contra bots (Cloudflare/renderizado JS) vía Scrapling. |
| Crea/optimiza y revisa/prueba habilidades daas. |
| Anda una composición de MCP de usuario (L3): entrevista → manifiesto → registro → autoverificación. |
| 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 |
| 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 |
| 11 | Registro de paneles HTML independientes (CRUD), consulta de tablas, estadísticas, regeneración de índices. |
alerts |
| 10 | Motor de reglas de alertas sobre series de observaciones + 7 canales de notificación (Telegram/Discord/Slack/Twitter/DingTalk/Feishu/WeCom). |
cron |
| 13 | Registro de tareas y programaciones respaldado por BD; |
composite |
| 16 | Composición MCP de usuario (L3): seleccionar herramientas de fuentes ascendentes + incrustar flujos de trabajo + prompt. |
research |
| 9 | Paquete de investigación persistente que vincula colecciones/indicadores/paneles/pipeline + informe markdown. |
gateway |
| 7 | CRUD del registro de fuentes ascendentes L0 + enrutamiento de llamadas a |
workflow |
| 8 | Obtenciones de datos de varios pasos basadas en manifiesto: registrar/ejecutar/reanudar/inspeccionar (antigua mitad de flujo de trabajo de |
| — | Búsqueda semántica local de PDF/texto (sqlite-vec + sentence-transformers). Opcional: condicionada a la importación de |
El grupo heredado
leaderse disuelve: su mitad de enrutamiento de pasarela pasó a sergateway_*, y su mitad de manifiesto de flujo de trabajo pasó a serworkflow_*. 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? |
| URL | opcional |
| Proxy de salida para bibliotecas de datos. | opcional |
| Cadena de identidad SEC EDGAR ( | para edgar |
| Clave de obtención de documentos EDINET de Japón. | para edinet |
| URL base del portal CKAN. | para ckan |
| Endpoint LLM compartido para extracción / planificador de flujos de trabajo. | para funciones LLM |
| Anulaciones de modelo por nivel para el planificador de flujos de trabajo ( | opcional |
| Webhook de Feishu para el canal de alertas. | para alertas feishu |
| 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 contradaas.dbmediantesqlite3, luegoworkflow_run(name, params)— el manifiesto enruta la obtención a través degateway_call→fd-open-data-mcp(L0) y persiste enscraw_<slug>/observations. Para obtenciones de varios pasos,build_workflow_from_goalemite 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 enscraw_<slug>(crudo) oobservations(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.dbconsqlite3desde la raíz del repositorio (sqlite3 daas.db "…"). UsePRAGMA foreign_keys=ONpara la cascada de claves foráneas.Referencia autoritativa de arquitectura + esquema:
CLAUDE.md(tiene una sección## daas.dbque enumera todas las tablas) yconstruction/mcp.md(la referencia en capas L0/L1/L2/L3).
Licencia
Apache 2.0.
This server cannot be deployed
Maintenance
Related MCP Connectors
Hosted MCP: 3665 structured web-data tools across 472 platform groups.
Hosted MCP servers for US federal data: 19 servers, 147 tools, one endpoint.
75 MCP tools: SEC financials, FRED economics, IRS 990, FDA, FX, UK Companies House.
MCP server for querying and analyzing data from ad platforms, analytics tools, and spreadsheets
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEconomic 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
- AlicenseAqualityDmaintenanceA comprehensive cryptocurrency market-data MCP server with 49 tools across six data sources, enabling LLMs to answer market questions via natural language.49MIT
- FlicenseAqualityDmaintenanceMCP server that enables semantic search over macroeconomic data using the Lambda Capture API.110-
- AlicenseAqualityBmaintenanceUnified MCP server for querying CSV, Postgres, and REST API data sources via embedded DuckDB, enabling cross-source SQL joins with no external query service.714 npmMIT