fd-daas-mcp
OfficialDAAS — 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 CLIfd-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»). Таблицы сгруппированы по ролям:
Роль | Таблицы | Что хранят |
Реестр / каталог |
| Каталог источников/функций/колонок; акции/страны + их идентификаторы в источниках; привязки индикаторов (таблица + колонки + операция + параметры) |
Вычисленные ряды |
| Результат индикаторов — одна точка |
Полученные данные |
| Сырые строки, полученные при загрузке (автосоздаются |
Коллекции и правила |
| Именованные группы сущностей/индикаторов + журнал аудита добавлений/удалений; единое хранилище |
Операционные MCP |
| Реестр дашбордов, движок алертов, состояние cron, состояние gateway/workflow/composite/research |
Запрашивайте её напрямую из корня репозитория: sqlite3 daas.db "SELECT …".
Навыки (.claude/skills/)
Навыки — это обычный Markdown (SKILL.md) + Python-скрипты. Навыки получения данных — тонкие оболочки, которые собирают параметры и вызывают workflow_run — они больше не вызывают Python-библиотеки данных напрямую (получение идёт L1→L0).
Навык | Назначение |
| Разрешить сущность + индикатор через |
| Рабочий процесс сущность → покрытие → индикатор (sqlite3 + основные скрипты). |
| Оркестрация analyze → [collection] → indicators → dashboard → сохранение как пакета |
| Уточнение исследовательской цели через диалог → |
| Сохранение полученного ряда в таблицу |
| Создание автономного HTML-дашборда на ECharts + его регистрация. |
| Поиск / открытие / просмотр существующих дашбордов (только чтение). |
| Определение коллекции сущностей на основе правил / повседневные операции с коллекциями. |
| Формирование коллекции индикаторов + экспорт CSV/markdown с вычисленными значениями. |
| Создание унифицированного правила (json/script/position/llm), привязка к коллекции, пробный прогон, синхронизация. |
| Загрузка PDF/текста в локальное векторное хранилище (sqlite-vec) и семантический поиск. Требует дополнения |
| Скрапинг страниц с защитой от ботов (Cloudflare/JS-рендеринг) через Scrapling. |
| Создание/оптимизация и проверка/тестирование навыков daas. |
| Создание пользовательской MCP-композиции (L3): интервью → манифест → регистрация → selfcheck. |
| Инфраструктура: создание/оптимизация навыков, сборщики reset/scraw/datasource, жизненный цикл изменений OpenSpec. |
Группы MCP-инструментов (fd-daas-mcp)
Консолидированный сервер предоставляет 161 инструмент в 9 группах (failed=0, skipped_optional=1 для опциональной группы pdf). Каталог ведётся на уровне групп (детали по каждому инструменту — через собственную интроспекцию сервера / selfcheck).
Group | Prefix | Tools | Назначение |
daas |
| 87 | Каталог источников данных/функций/колонок/сущностей/индикаторов, вычисление индикаторов, LLM-извлечение, коллекции, покрытие сущностей, унифицированные правила. |
dashboard |
| 11 | Реестр автономных HTML-дашбордов (CRUD), запросы к таблицам, статистика, перегенерация индекса. |
alerts |
| 10 | Движок правил оповещений для рядов наблюдений + 7 каналов уведомлений (Telegram/Discord/Slack/Twitter/DingTalk/Feishu/WeCom). |
cron |
| 13 | Реестр задач и расписаний на основе БД; разовый запуск |
composite |
| 16 | Пользовательская MCP-композиция (L3): подбор инструментов из апстримов + встраивание рабочих процессов + промпт. |
research |
| 9 | Сохраняемый исследовательский пакет, связывающий коллекции/индикаторы/дашборд/пайплайн + markdown-отчёт. |
gateway |
| 7 | CRUD для реестра апстримов L0 + маршрутизация вызовов к |
workflow |
| 8 | Многошаговые загрузки данных на основе манифеста: регистрация/запуск/возобновление/просмотр (бывшая workflow-половина |
| — | Локальный семантический поиск по PDF/тексту (sqlite-vec + sentence-transformers). Опционально — включается при импорте |
Прежняя группа
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 | Назначение | Обязателен? |
| URL | необязательный |
| Исходящий прокси для библиотек данных. | необязательный |
| Строка идентификации SEC EDGAR ( | для edgar |
| Ключ для загрузки документов EDINET (Япония). | для edinet |
| Базовый URL портала CKAN. | для ckan |
| Общий эндпоинт LLM для извлечения / планировщика рабочих процессов. | для LLM-функций |
| Поуровневые переопределения моделей для планировщика рабочих процессов ( | необязательный |
| Webhook Feishu для канала оповещений. | для оповещений Feishu |
| Порт для приложения дашбордов. | необязательный |
Для ИИ-агентов
Если вы ИИ-агент (например, 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.
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