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.


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

Требования: 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_callfd-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.

-
license - not tested
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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.

View all MCP Connectors

Latest Blog Posts

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