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