Skip to main content
Glama

DAAS — Data As a Service

Многоуровневая платформа данных для финансовых, экономических и статистических данных — единый файл SQLite (daas.db) за консолидированным MCP-сервером, при этом получение данных делегируется вниз, к вышестоящему fd-open-data-mcp.

Что это? Локальная платформа данных, которая превращает Python-библиотеки данных (akshare, yfinance, edgar, edinet-tools, dartlab, world_bank_data, ckanapi) в запрашиваемое хранилище с вычислением индикаторов и готовностью к дашбордам, основанное на одном файле SQLite. Вы управляете ею через навыки Claude Code (тонкие оболочки, вызывающие манифесты рабочих процессов) или через консолидированный MCP-сервер fd-daas-mcp — оба пути читают и пишут в одну и ту же базу данных.

Вышестоящий компонент: загрузчик данных fd-open-data-mcp — это соседний репозиторий в ~/finddata/fd-open-data-mcp (автоматически клонируется install.sh).

Сайт документации: полная ролевая документация находится в docs-site/ (MkDocs Material, двуязычный EN+ZH). Читайте её локально с помощью uv run mkdocs serve (открывается по адресу /DAAS/) или собирайте строго с помощью uv run mkdocs build --strict. См. docs-site/README.md о сборке/запуске/развёртывании.


Архитектура

Строгая нисходящая зависимость — уровень никогда не обращается вверх.

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 (соседний репозиторий): единственная поверхность получения данных. Семантический загрузчик на основе концепций с ранжированием/отказоустойчивостью/кэшированием; хранит мастер-справочник сущностей (entities, entity_datasource_links). Обслуживается по HTTP на :8300 (запасной вариант — stdio). Заменяет 11 прежних MCP-серверов получения данных по отдельным источникам.

  • L1 — fd-daas-mcp (этот репозиторий): консолидированный stdio-сервер, единственная точка входа в .mcp.json в корне репозитория. Предоставляет 161 инструмент в 9 группах (daas · cron · alerts · dashboard · composite · research · pdf · gateway · workflow) за одним сервером и одним Click CLI fd-daas-mcp. Тонкий консолидирующий слой — fd-daas-mcp/daas/fd_daas_mcp/ (server.py/registry.py/cli.py/selfcheck.py); код инструментов каждой группы живёт внутри пакета в fd-daas-mcp/<group>-mcp/.

  • L2 — манифесты рабочих процессов: манифесты хранятся в таблице workflows в daas.db (регистрируются через workflow_register, запускаются через workflow_run). build_workflow_from_goal раскладывает цель на естественном языке в манифест с помощью LLM.

  • L3 — пользовательская MCP-композиция: композитный манифест ({name, upstreams, tools, workflows, prompt}) формирует именованную MCP-поверхность, обслуживаемую внутри процесса на консолидированном сервере. CRUD через composite_*_manifest.

Навыки получения данных (fd-daas-based-data-fetch, fd-daas-fetch-data, fd-daas-research) — это тонкие оболочки: сбор параметров → workflow_run(name, params) → обработка контрольных точек. Они больше не вызывают Python-библиотеки данных напрямую — получение идёт вниз через L1→L0.

Полную архитектуру, соглашения и справочник схемы daas.db см. в CLAUDE.md и construction/mcp.md.


Related MCP server: coin-mcp

Установка и быстрый старт

Требования: Python 3.10+ и uv. Для получения данных через dartlab нужен 3.12 — запускайте их с uv run --python 3.12 --with dartlab ....

Установка в один клик (клонирует DAAS + вышестоящие репозитории, создаёт venv, инициализирует daas.db, локализует .mcp.json):

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

Переопределения через переменные окружения: DAAS_DEST (по умолчанию ~/code/DAAS), DAAS_BRANCH, FINDDATA_HOME (по умолчанию ~/finddata). Ручные шаги ниже.

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

Приведённые выше команды быстрого старта проверены на этом репозитории: SPY_ma5 — реальная строка в indicator_rules, а реестр fd-daas-mcp сообщает о 161 инструменте из 9 источников (failed=0, skipped_optional=1 для опциональной группы pdf).


Структура проекта

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

Один файл SQLite по пути из DAAS_DATABASE_URL (относительные пути sqlite:/// разрешаются относительно корня репозитория; PRAGMA foreign_keys=ON для каскадного удаления по внешним ключам, PRAGMA journal_mode=WAL + busy_timeout=10000 для обхода ошибки «database is locked»). Таблицы сгруппированы по ролям:

Роль

Таблицы

Что хранят

Реестр / каталог

sources, daas_functions, daas_function_columns, entities, entity_datasource_links, indicator_rules

Каталог источников/функций/колонок; акции/страны + их идентификаторы в источниках; привязки индикаторов (таблица + колонки + операция + параметры)

Вычисленные ряды

observations

Результат индикаторов — одна точка (source, function_name, indicator, date) на строку; апсертится run_indicator.py. Дашборды и алерты читают отсюда.

Полученные данные

scraw_<slug>

Сырые строки, полученные при загрузке (автосоздаются upsert.py). observations вычисляются из них.

Коллекции и правила

entity_collections*, indicator_collections*, rules, process_results

Именованные группы сущностей/индикаторов + журнал аудита добавлений/удалений; единое хранилище rules (json/script/position/llm) управляет членством + LLM-извлечением

Операционные MCP

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

Реестр дашбордов, движок алертов, состояние cron, состояние gateway/workflow/composite/research

Запрашивайте её напрямую из корня репозитория: sqlite3 daas.db "SELECT …".


Навыки (.claude/skills/)

Навыки — это обычный Markdown (SKILL.md) + Python-скрипты. Навыки получения данных — тонкие оболочки, которые собирают параметры и вызывают workflow_run — они больше не вызывают Python-библиотеки данных напрямую (получение идёт L1→L0).

Навык

Назначение

fd-daas-based-data-fetch (основная оболочка получения)

Разрешить сущность + индикатор через daas.db, затем workflow_run(name, params) для получения через fd-open-data-mcp и сохранения в scraw_* / observations.

fd-daas-fetch-data

Рабочий процесс сущность → покрытие → индикатор (sqlite3 + основные скрипты).

fd-daas-research

Оркестрация analyze → [collection] → indicators → dashboard → сохранение как пакета research + отчёт в markdown.

fd-daas-brainstorm

Уточнение исследовательской цели через диалог → daas-doc/research/<plan>.md (без состояния в daas.db).

fd-daas-indicators-creator

Сохранение полученного ряда в таблицу scraw_<slug> (ручное обновление — без cron).

fd-daas-dashboard-creator

Создание автономного HTML-дашборда на ECharts + его регистрация.

fd-daas-dashboard

Поиск / открытие / просмотр существующих дашбордов (только чтение).

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

Определение коллекции сущностей на основе правил / повседневные операции с коллекциями.

fd-daas-indicators-collection-creator

Формирование коллекции индикаторов + экспорт CSV/markdown с вычисленными значениями.

fd-daas-rules-creator

Создание унифицированного правила (json/script/position/llm), привязка к коллекции, пробный прогон, синхронизация.

fd-daas-pdf

Загрузка PDF/текста в локальное векторное хранилище (sqlite-vec) и семантический поиск. Требует дополнения [pdf].

fd-daas-scrapling-official

Скрапинг страниц с защитой от ботов (Cloudflare/JS-рендеринг) через Scrapling.

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

Создание/оптимизация и проверка/тестирование навыков daas.

fd-coding-mcp-creator

Создание пользовательской MCP-композиции (L3): интервью → манифест → регистрация → selfcheck.

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

Инфраструктура: создание/оптимизация навыков, сборщики reset/scraw/datasource, жизненный цикл изменений OpenSpec.


Группы MCP-инструментов (fd-daas-mcp)

Консолидированный сервер предоставляет 161 инструмент в 9 группах (failed=0, skipped_optional=1 для опциональной группы pdf). Каталог ведётся на уровне групп (детали по каждому инструменту — через собственную интроспекцию сервера / selfcheck).

Group

Prefix

Tools

Назначение

daas

daas_*

87

Каталог источников данных/функций/колонок/сущностей/индикаторов, вычисление индикаторов, LLM-извлечение, коллекции, покрытие сущностей, унифицированные правила.

dashboard

dashboard_*

11

Реестр автономных HTML-дашбордов (CRUD), запросы к таблицам, статистика, перегенерация индекса.

alerts

alerts_*

10

Движок правил оповещений для рядов наблюдений + 7 каналов уведомлений (Telegram/Discord/Slack/Twitter/DingTalk/Feishu/WeCom).

cron

cron_*

13

Реестр задач и расписаний на основе БД; разовый запуск run_now; история выполнения.

composite

composite_*

16

Пользовательская MCP-композиция (L3): подбор инструментов из апстримов + встраивание рабочих процессов + промпт.

research

research_*

9

Сохраняемый исследовательский пакет, связывающий коллекции/индикаторы/дашборд/пайплайн + markdown-отчёт.

gateway

gateway_*

7

CRUD для реестра апстримов L0 + маршрутизация вызовов к fd-open-data-mcp (бывшая gateway-половина leader).

workflow

workflow_*

8

Многошаговые загрузки данных на основе манифеста: регистрация/запуск/возобновление/просмотр (бывшая workflow-половина leader).

pdf

pdf_*

—

Локальный семантический поиск по PDF/тексту (sqlite-vec + sentence-transformers). Опционально — включается при импорте sqlite_vec.

Прежняя группа leader расформирована: её половина, отвечавшая за маршрутизацию через шлюз, стала gateway_*, а её половина, отвечавшая за манифесты рабочих процессов, стала workflow_*. Возможности harness-registry / snapshot / provenance удалены.

Запуск: fd-daas-mcp/bin/fd-daas-mcp-server (stdio). И сервер, и CLI fd-daas-mcp используют registry.build(), поэтому два интерфейса не могут разойтись.


Переменные окружения

Один файл .env в корне репозитория содержит всю конфигурацию; скрипты и MCP-сервер загружают его автоматически. (Ключи, помеченные как необязательные, нужны только для функций, которые они включают.)

Key

Назначение

Обязателен?

DAAS_DATABASE_URL

URL sqlite:/// к daas.db (относительный — разрешается от корня репозитория, или абсолютный). Необязательно: если не задан, по умолчанию используется ./daas.db (текущая записываемая директория) или ~/.fd-daas-mcp/daas.db. Выполните fd-daas-mcp init для инициализации.

необязательный

HTTP_PROXY

Исходящий прокси для библиотек данных.

необязательный

EDGAR_IDENTITY

Строка идентификации SEC EDGAR ("Name email@domain").

для edgar

EDINET_API_KEY

Ключ для загрузки документов EDINET (Япония).

для edinet

CKAN_PORTAL_URL

Базовый URL портала CKAN.

для ckan

LLM_BASE_URL, LLM_API_KEY, LLM_MODEL

Общий эндпоинт LLM для извлечения / планировщика рабочих процессов.

для LLM-функций

LEADER_MODELS, LEADER_MODEL_HIGH/BALANCE/FAST

Поуровневые переопределения моделей для планировщика рабочих процессов (build_workflow_from_goal). Имена сохранены; описательная метка — только «планировщик рабочих процессов».

необязательный

ALERTS_FEISHU_WEBHOOK_URL

Webhook Feishu для канала оповещений.

для оповещений Feishu

DASHBOARD_PORT

Порт для приложения дашбордов.

необязательный


Для ИИ-агентов

Если вы ИИ-агент (например, Claude Code), работающий в этом репозитории:

  • Загружайте данные через workflow-путь. Используйте fd-daas-based-data-fetch: найдите сущность + индикатор в daas.db через sqlite3, затем выполните workflow_run(name, params) — манифест направит загрузку через gateway_call → fd-open-data-mcp (L0) и сохранит её в scraw_<slug> / observations. Для многошаговых загрузок build_workflow_from_goal генерирует манифест.

  • Рабочий процесс: сопоставление → загрузка (через L0) → сохранение. Найдите сущность+индикатор в daas.db; загрузите через шлюз; сохраните в scraw_<slug> (сырые данные) или observations (вычисленный индикатор).

  • Для всего остального используйте MCP-сервер — просмотр каталога, создание индикаторов/коллекций/правил, планирование cron, оповещения, создание/поиск дашбордов, семантический поиск по PDF, создание композиций, исследовательские пакеты. Это инструменты fd-daas-mcp (161 инструмент в 9 группах).

  • Выполняйте запросы к daas.db через sqlite3 из корня репозитория (sqlite3 daas.db "…"). Используйте PRAGMA foreign_keys=ON для каскада внешних ключей.

  • Основной справочник по архитектуре и схеме: CLAUDE.md (в нём есть раздел ## daas.db со списком всех таблиц) и construction/mcp.md (многоуровневый справочник L0/L1/L2/L3).

Лицензия

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