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.
Установка и быстрый старт
Требования: 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 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