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.
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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Real SEC, 13F, insider, congress & macro data your AI agent can cite. Hosted MCP, 24 tools.
MCP server connecting AI agents to non-custodial staking data across 130+ networks.
Hosted MCP server for personal tools: budgets, savings goals, spaced repetition, tips, countdowns.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/FindDataTechnology/fd-daas-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server