Skip to main content
Glama

DAAS - Data As a Service

Mehrschichtige Datenplattform für Finanz-, Wirtschafts- und Statistikdaten – eine einzelne SQLite-Datei (daas.db) hinter einem konsolidierten MCP-Server, wobei der Datenabruf an das fd-open-data-mcp-Upstream delegiert wird.

Was ist das? Eine lokale Datenplattform, die Python-Datenbibliotheken (akshare, yfinance, edgar, edinet-tools, dartlab, world_bank_data, ckanapi) in einen abfragbaren, indikatorberechnenden, dashboard-fähigen Speicher verwandelt, der von einer einzigen SQLite-Datei unterstützt wird. Sie steuern es über Claude Code Skills (dünne Hüllen, die Workflow-Manifeste aufrufen) oder über den konsolidierten fd-daas-mcp-MCP-Server – beide Pfade lesen/schreiben dieselbe Datenbank.

Upstream: Der fd-open-data-mcp-Datenabrufer ist ein Schwester-Repository unter ~/finddata/fd-open-data-mcp (wird automatisch von install.sh geklont).

Dokumentationsseite: Die vollständige, rollenbasierte Dokumentation befindet sich unter docs-site/ (MkDocs Material, EN+ZH zweisprachig). Lesen Sie sie lokal mit uv run mkdocs serve (durchsucht unter /DAAS/) oder bauen Sie sie strikt mit uv run mkdocs build --strict. Siehe docs-site/README.md für Build/Serve/Deploy.


Architektur

Strikte Abwärtsabhängigkeit – eine Schicht greift nie nach oben.

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 (Schwester-Repository): die einzige Datenabruf-Oberfläche. Ein konzeptbasierter semantischer Abrufer mit Ranking/Failover/Caching; enthält den Entitäts-Master (entities, entity_datasource_links). Wird über HTTP unter :8300 bereitgestellt (stdio-Fallback). Ersetzt die 11 früheren pro-Quelle-Datenabruf-MCPs.

  • L1 – fd-daas-mcp (dieses Repository): der konsolidierte stdio-Server, einziger Eintrag in der Repository-Wurzel .mcp.json. Stellt 161 Tools in 9 Gruppen (daas · cron · alerts · dashboard · composite · research · pdf · gateway · workflow) hinter einem Server und einer fd-daas-mcp-Click-CLI bereit. Die dünne Konsolidierungsschicht ist fd-daas-mcp/daas/fd_daas_mcp/ (server.py/registry.py/cli.py/selfcheck.py); der Tool-Code jeder Gruppe liegt im Paket unter fd-daas-mcp/<group>-mcp/.

  • L2 – Workflow-Manifeste: Manifeste liegen in der Tabelle workflows in daas.db (registriert über workflow_register, ausgeführt über workflow_run). build_workflow_from_goal zerlegt ein natürlichsprachliches Ziel per LLM in ein Manifest.

  • L3 – Benutzer-MCP-Komposition: Ein zusammengesetztes Manifest ({name, upstreams, tools, workflows, prompt}) kuratiert eine benannte MCP-Oberfläche, die im Prozess auf dem konsolidierten Server bereitgestellt wird. CRUD über composite_*_manifest.

Die Fetch-Skills (fd-daas-based-data-fetch, fd-daas-fetch-data, fd-daas-research) sind dünne Hüllen: Parametererfassung → workflow_run(name, params) → Checkpoint-Behandlung. Sie rufen keine Python-Datenbibliotheken mehr direkt auf – der Abruf geht über L1→L0 nach unten.

Für die vollständige Architektur, Konventionen und das daas.db-Schema siehe CLAUDE.md und construction/mcp.md.


Related MCP server: coin-mcp

Installation & Schnellstart

Voraussetzungen: Python 3.10+ und uv. dartlab-Abrufe benötigen 3.12 – führen Sie sie mit uv run --python 3.12 --with dartlab ... aus.

Ein-Klick-Installation (klont DAAS + Upstreams, richtet venvs ein, initialisiert daas.db, lokalisiert .mcp.json):

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

Env-Overrides: DAAS_DEST (Standard ~/code/DAAS), DAAS_BRANCH, FINDDATA_HOME (Standard ~/finddata). Manuelle Schritte unten.

# 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\"}'))
"

Die obigen Schnellstart-Befehle wurden gegen dieses Repository verifiziert: SPY_ma5 ist eine echte indicator_rules-Zeile, und die fd-daas-mcp-Registry meldet 161 Tools in 9 Quellen (failed=0, skipped_optional=1 für die optionale pdf-Gruppe).


Projektstruktur

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

daas.db Datenmodell

Eine SQLite-Datei am Pfad in DAAS_DATABASE_URL (relative sqlite:///-Pfade werden relativ zur Repository-Wurzel aufgelöst; PRAGMA foreign_keys=ON für FK-Kaskade, PRAGMA journal_mode=WAL + busy_timeout=10000 zur Vermeidung von „database is locked"). Tabellen gruppieren sich nach Rolle:

Rolle

Tabellen

Inhalt

Registry / Katalog

sources, daas_functions, daas_function_columns, entities, entity_datasource_links, indicator_rules

Datenquellen-/Funktions-/Spaltenkatalog; Aktien/Länder + ihre Quellenkennungen; Indikatorbindungen (Tabelle + Spalten + Operation + Parameter)

Berechnete Reihen

observations

Indikatorausgabe – ein (source, function_name, indicator, date)-Punkt pro Zeile; per run_indicator.py upsertet. Dashboards & Alerts lesen dies.

Abgerufene Quelldaten

scraw_<slug>

Rohzeilen, die von einem Abruf gezogen werden (automatisch von upsert.py erstellt). observations werden daraus berechnet.

Sammlungen + Regeln

entity_collections*, indicator_collections*, rules, process_results

Benannte Gruppen von Entitäten/Indikatoren + Add-in/Remove-out-Protokoll; der einheitliche rules-Speicher (json/script/position/llm) treibt Mitgliedschaft + LLM-Extraktion

MCP-Betrieb

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

Dashboard-Registry, Alert-Engine, Cron-Zustand, Gateway-/Workflow-/Composite-/Research-Zustand

Direkt aus der Repository-Wurzel abfragen: sqlite3 daas.db "SELECT …".


Fähigkeiten (.claude/skills/)

Fähigkeiten sind einfaches Markdown (SKILL.md) + Python-Skripte. Die Fetch-Skills sind dünne Hüllen, die Parameter sammeln und workflow_run aufrufen – sie rufen keine Python-Datenbibliotheken mehr direkt auf (Abruf geht L1→L0).

Fähigkeit

Zweck

fd-daas-based-data-fetch (Kern-Fetch-Shell)

Eine Entität + einen Indikator gegen daas.db auflösen, dann workflow_run(name, params) zum Abruf über fd-open-data-mcp und Persistieren in scraw_* / observations.

fd-daas-fetch-data

Entität → Abdeckung → Indikator-Workflow (sqlite3 + die Kernskripte).

fd-daas-research

Orchestriere analysieren → [Sammlung] → Indikatoren → Dashboard → als research-Bundle + Markdown-Bericht persistieren.

fd-daas-brainstorm

Ein Forschungsziel per Dialog klären → daas-doc/research/<plan>.md (kein daas.db-Zustand).

fd-daas-indicators-creator

Eine abgerufene Reihe in eine scraw_<slug>-Tabelle persistieren (manuelle Aktualisierung – kein Cron).

fd-daas-dashboard-creator

Ein eigenständiges ECharts-HTML-Dashboard erstellen + registrieren.

fd-daas-dashboard

Vorhandene Dashboards finden / öffnen / inspizieren (schreibgeschützt).

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

Eine regelbasierte Entitätssammlung definieren / tägliche Sammlungsoperationen durchführen.

fd-daas-indicators-collection-creator

Eine Indikatorsammlung kuratieren + CSV/Markdown mit aufgelösten Scores exportieren.

fd-daas-rules-creator

Eine einheitliche Regel (json/script/position/llm) erstellen, an eine Sammlung anhängen, Trockenlauf, Synchronisierung.

fd-daas-pdf

Ein PDF/Text in einen lokalen Vektorstore (sqlite-vec) aufnehmen und semantisch suchen. Erfordert das [pdf]-Extra.

fd-daas-scrapling-official

Anti-Bot-geschützte Seiten (Cloudflare/JS-Rendering) über Scrapling scrapen.

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

DAAS-Fähigkeiten erstellen/optimieren und überprüfen/testen.

fd-coding-mcp-creator

Eine Benutzer-MCP-Komposition (L3) scaffolden: Interview → Manifest → Registrierung → Selbstprüfung.

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

Infrastruktur: Fähigkeiten erstellen/optimieren, Reset-/Scraw-/Datenquellen-Builder, OpenSpec-Änderungslebenszyklus.


MCP-Tool-Gruppen (fd-daas-mcp)

Der konsolidierte Server stellt 161 Tools in 9 Gruppen bereit (failed=0, skipped_optional=1 für die optionale pdf-Gruppe). Der Katalog ist auf Gruppenebene (Details pro Tool über die eigene Introspection des Servers / selfcheck).

Gruppe

Präfix

Tools

Zweck

daas

daas_*

87

Katalog für Datenquellen/Funktionen/Spalten/Entitäten/Indikatoren, Indikatorenberechnung, LLM-Extraktion, Sammlungen, Entitätsabdeckung, einheitliche Regeln.

dashboard

dashboard_*

11

Standalone-HTML-Dashboard-Registry (CRUD), Tabellenabfrage, Statistiken, Index-Neugenerierung.

alerts

alerts_*

10

Alert-Regel-Engine für Beobachtungsreihen + 7 Benachrichtigungskanäle (Telegram/Discord/Slack/Twitter/DingTalk/Feishu/WeCom).

cron

cron_*

13

DB-gestützte Aufgaben- und Zeitplan-Registry; Ad-hoc-run_now; Ausführungsverlauf.

composite

composite_*

16

Benutzer-MCP-Komposition (L3): Tools aus Upstreams kuratieren + Workflows einbetten + Prompt.

research

research_*

9

Persistiertes Research-Bündel, das Sammlungen/Indikatoren/Dashboard/Pipeline verbindet + Markdown-Bericht.

gateway

gateway_*

7

L0-Upstream-Registry-CRUD + Aufruf-Routing zu fd-open-data-mcp (ehemalige leader-Gateway-Hälfte).

workflow

workflow_*

8

Manifestbasierte mehrstufige Datenabrufe: registrieren/ausführen/fortsetzen/prüfen (ehemalige leader-Workflow-Hälfte).

pdf

pdf_*

—

Lokale semantische Suche in PDF/Text (sqlite-vec + sentence-transformers). Optional — abhängig vom sqlite_vec-Import.

Die alte leader-Gruppe ist aufgelöst: Ihre Gateway-Routing-Hälfte wurde zu gateway_*, ihre Workflow-Manifest-Hälfte wurde zu workflow_*. Harness-Registry-/Snapshot-/Provenienz-Funktionen wurden entfernt.

Start: fd-daas-mcp/bin/fd-daas-mcp-server (stdio). Sowohl der Server als auch die fd-daas-mcp-CLI nutzen registry.build(), sodass die beiden Oberflächen nicht auseinanderdriften können.


Umgebungsvariablen

Eine einzelne .env im Repository-Stammverzeichnis enthält die gesamte Konfiguration; Skripte und der MCP-Server laden sie automatisch. (Als optional markierte Schlüssel werden nur für die Funktionen benötigt, die sie aktivieren.)

Schlüssel

Zweck

Erforderlich?

DAAS_DATABASE_URL

sqlite:///-URL zu daas.db (relativ zum Repository-Stammverzeichnis aufgelöst oder absolut). Optional: Wenn nicht gesetzt, Standardwert ./daas.db (beschreibbares Arbeitsverzeichnis) oder ~/.fd-daas-mcp/daas.db. Führen Sie fd-daas-mcp init aus, um die Datenbank bereitzustellen.

optional

HTTP_PROXY

Ausgehender Proxy für Datenbibliotheken.

optional

EDGAR_IDENTITY

SEC-EDGAR-Identitätszeichenfolge ("Name email@domain").

für edgar

EDINET_API_KEY

Schlüssel für den Abruf japanischer EDINET-Dokumente.

für edinet

CKAN_PORTAL_URL

Basis-URL des CKAN-Portals.

für ckan

LLM_BASE_URL, LLM_API_KEY, LLM_MODEL

Gemeinsamer LLM-Endpunkt für Extraktion / Workflow-Planer.

für LLM-Funktionen

LEADER_MODELS, LEADER_MODEL_HIGH/BALANCE/FAST

Gestaffelte Modell-Overrides für den Workflow-Planer (build_workflow_from_goal). Namen beibehalten; nur die beschreibende Bezeichnung ist „workflow planner“.

optional

ALERTS_FEISHU_WEBHOOK_URL

Feishu-Webhook für den Alert-Kanal.

für Feishu-Alerts

DASHBOARD_PORT

Port für die Dashboard-Anwendung.

optional


Für KI-Agenten

Wenn Sie ein KI-Agent (z. B. Claude Code) sind, der in diesem Repository arbeitet:

  • Rufen Sie Daten über den Workflow-Pfad ab. Verwenden Sie fd-daas-based-data-fetch: Lösen Sie die Entität + den Indikator über sqlite3 gegen daas.db auf, dann workflow_run(name, params) — das Manifest leitet den Abruf über gateway_call → fd-open-data-mcp (L0) weiter und speichert in scraw_<slug> / observations. Für mehrstufige Abrufe erzeugt build_workflow_from_goal ein Manifest.

  • Workflow: auflösen → abrufen (über L0) → speichern. Entität+Indikator in daas.db auflösen; über das Gateway abrufen; in scraw_<slug> (Rohdaten) oder observations (berechneter Indikator) speichern.

  • Verwenden Sie den MCP-Server für alles andere — Durchsuchen des Katalogs, Erstellen von Indikatoren/Sammlungen/Regeln, Cron-Planung, Alerts, Erstellen/Finden von Dashboards, semantische PDF-Suche, Composite-Erstellung, Research-Bündel. Dies sind die fd-daas-mcp-Tools (161 in 9 Gruppen).

  • Fragen Sie daas.db mit sqlite3 vom Repository-Stammverzeichnis aus ab (sqlite3 daas.db "…"). Verwenden Sie PRAGMA foreign_keys=ON für die FK-Kaskade.

  • Maßgebliche Architektur- und Schema-Referenz: CLAUDE.md (es enthält einen Abschnitt ## daas.db, der jede Tabelle auflistet) und construction/mcp.md (die Referenz für die Schichten L0/L1/L2/L3).


Lizenz

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