fd-daas-mcp
OfficialDAAS - 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 konsolidiertenfd-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 voninstall.shgeklont).
Dokumentationsseite: Die vollständige, rollenbasierte Dokumentation befindet sich unter
docs-site/(MkDocs Material, EN+ZH zweisprachig). Lesen Sie sie lokal mituv run mkdocs serve(durchsucht unter/DAAS/) oder bauen Sie sie strikt mituv run mkdocs build --strict. Siehedocs-site/README.mdfü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:8300bereitgestellt (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 einerfd-daas-mcp-Click-CLI bereit. Die dünne Konsolidierungsschicht istfd-daas-mcp/daas/fd_daas_mcp/(server.py/registry.py/cli.py/selfcheck.py); der Tool-Code jeder Gruppe liegt im Paket unterfd-daas-mcp/<group>-mcp/.L2 – Workflow-Manifeste: Manifeste liegen in der Tabelle
workflowsindaas.db(registriert überworkflow_register, ausgeführt überworkflow_run).build_workflow_from_goalzerlegt 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 übercomposite_*_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 | shEnv-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 |
| Datenquellen-/Funktions-/Spaltenkatalog; Aktien/Länder + ihre Quellenkennungen; Indikatorbindungen (Tabelle + Spalten + Operation + Parameter) |
Berechnete Reihen |
| Indikatorausgabe – ein |
Abgerufene Quelldaten |
| Rohzeilen, die von einem Abruf gezogen werden (automatisch von |
Sammlungen + Regeln |
| Benannte Gruppen von Entitäten/Indikatoren + Add-in/Remove-out-Protokoll; der einheitliche |
MCP-Betrieb |
| 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 |
| Eine Entität + einen Indikator gegen |
| Entität → Abdeckung → Indikator-Workflow (sqlite3 + die Kernskripte). |
| Orchestriere analysieren → [Sammlung] → Indikatoren → Dashboard → als |
| Ein Forschungsziel per Dialog klären → |
| Eine abgerufene Reihe in eine |
| Ein eigenständiges ECharts-HTML-Dashboard erstellen + registrieren. |
| Vorhandene Dashboards finden / öffnen / inspizieren (schreibgeschützt). |
| Eine regelbasierte Entitätssammlung definieren / tägliche Sammlungsoperationen durchführen. |
| Eine Indikatorsammlung kuratieren + CSV/Markdown mit aufgelösten Scores exportieren. |
| Eine einheitliche Regel (json/script/position/llm) erstellen, an eine Sammlung anhängen, Trockenlauf, Synchronisierung. |
| Ein PDF/Text in einen lokalen Vektorstore (sqlite-vec) aufnehmen und semantisch suchen. Erfordert das |
| Anti-Bot-geschützte Seiten (Cloudflare/JS-Rendering) über Scrapling scrapen. |
| DAAS-Fähigkeiten erstellen/optimieren und überprüfen/testen. |
| Eine Benutzer-MCP-Komposition (L3) scaffolden: Interview → Manifest → Registrierung → Selbstprüfung. |
| 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 |
| 87 | Katalog für Datenquellen/Funktionen/Spalten/Entitäten/Indikatoren, Indikatorenberechnung, LLM-Extraktion, Sammlungen, Entitätsabdeckung, einheitliche Regeln. |
dashboard |
| 11 | Standalone-HTML-Dashboard-Registry (CRUD), Tabellenabfrage, Statistiken, Index-Neugenerierung. |
alerts |
| 10 | Alert-Regel-Engine für Beobachtungsreihen + 7 Benachrichtigungskanäle (Telegram/Discord/Slack/Twitter/DingTalk/Feishu/WeCom). |
cron |
| 13 | DB-gestützte Aufgaben- und Zeitplan-Registry; Ad-hoc- |
composite |
| 16 | Benutzer-MCP-Komposition (L3): Tools aus Upstreams kuratieren + Workflows einbetten + Prompt. |
research |
| 9 | Persistiertes Research-Bündel, das Sammlungen/Indikatoren/Dashboard/Pipeline verbindet + Markdown-Bericht. |
gateway |
| 7 | L0-Upstream-Registry-CRUD + Aufruf-Routing zu |
workflow |
| 8 | Manifestbasierte mehrstufige Datenabrufe: registrieren/ausführen/fortsetzen/prüfen (ehemalige |
| — | Lokale semantische Suche in PDF/Text (sqlite-vec + sentence-transformers). Optional — abhängig vom |
Die alte
leader-Gruppe ist aufgelöst: Ihre Gateway-Routing-Hälfte wurde zugateway_*, ihre Workflow-Manifest-Hälfte wurde zuworkflow_*. 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? |
|
| optional |
| Ausgehender Proxy für Datenbibliotheken. | optional |
| SEC-EDGAR-Identitätszeichenfolge ( | für edgar |
| Schlüssel für den Abruf japanischer EDINET-Dokumente. | für edinet |
| Basis-URL des CKAN-Portals. | für ckan |
| Gemeinsamer LLM-Endpunkt für Extraktion / Workflow-Planer. | für LLM-Funktionen |
| Gestaffelte Modell-Overrides für den Workflow-Planer ( | optional |
| Feishu-Webhook für den Alert-Kanal. | für Feishu-Alerts |
| 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 übersqlite3gegendaas.dbauf, dannworkflow_run(name, params)— das Manifest leitet den Abruf übergateway_call→fd-open-data-mcp(L0) weiter und speichert inscraw_<slug>/observations. Für mehrstufige Abrufe erzeugtbuild_workflow_from_goalein Manifest.Workflow: auflösen → abrufen (über L0) → speichern. Entität+Indikator in
daas.dbauflösen; über das Gateway abrufen; inscraw_<slug>(Rohdaten) oderobservations(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.dbmitsqlite3vom Repository-Stammverzeichnis aus ab (sqlite3 daas.db "…"). Verwenden SiePRAGMA foreign_keys=ONfür die FK-Kaskade.Maßgebliche Architektur- und Schema-Referenz:
CLAUDE.md(es enthält einen Abschnitt## daas.db, der jede Tabelle auflistet) undconstruction/mcp.md(die Referenz für die Schichten L0/L1/L2/L3).
Lizenz
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