Можно ли собрать BI-дашборды за 4 часа, если ты не аналитик? Эксперимент с MCP, PostgreSQL и Modus BI

Сейчас мы в команде Modus разрабатываем собственный MCP-сервер для Modus BI, чтобы пользователи могли взаимодействовать с платформой через естественный язык без глубоких знаний в статистике и SQL. В параллель с разработкой, мы решили проверить на реальной задаче, насколько такой подход жизнеспособен.

Задача нетривиальная, так как аналитика требует понимания структуры данных, формулирования гипотез, написания SQL-запросов, подбора статистических методов и учета искажающих факторов. Обычно это трудоемкий процесс.

Мотивация была простой:

  • понять, насколько MCP‑серверы могут упростить аналитику;

  • проверить, сможет ли не‑аналитик (вроде меня) сделать сложный многошаговый анализ;

  • автоматизировать создание дашбордов, чтобы получать их за минуты, а не дни.

Для проверки я взял открытую статистику ДТП Санкт‑Петербурга за 10 лет, подключил MCP‑серверы и составил Skill‑файлы для Claude Code, чтобы автоматизировать визуализацию. За 4 часа получилось собрать три дашборда, выполнить около 80 SQL-запросов и проверить 15 гипотез. В статье наш разработчик описывает, что из этого вышло.

Что такое MCP и зачем он тут

MCP (Model Context Protocol) — открытый стандарт, который дает LLM возможность работать с внешними инструментами через единый интерфейс. Проще говоря, MCP-сервер — это адаптер между моделью и конкретной системой. Через него ИИ получает доступ к функциям инструмента и возвращает результат в структурированном виде.

Ключевая идея MCP — единый протокол. Любая LLM (Claude, OpenAI, Gemini и другие) может работать с любым MCP-сервером без переписывания логики интеграции.

Примеры MCP-серверов и их задачи:

  • postgres — доступ к PostgreSQL (SQL-запросы, исследование схемы);

  • clickhouse — доступ к ClickHouse (OLAP-аналитика больших данных);

  • github — работа с GitHub (репозитории, issues, pull requests);

  • jira — управление задачами в Jira.

Если MCP дает доступ к инструментам, то Skills задают способ работы с ними. 

Skill (навыки) — это структурированный набор инструкций и правил (файл SKILL.md и при необходимости вспомогательные скрипты), который описывает:

  • как формулировать гипотезы;

  • какие шаги проверки выполнять;

  • какие статистические методы применять;

  • как оформлять результат.

В связке это работает так: LLM принимает задачу → Skill задает методологию → MCP выполняет действия в реальных системах.

Подробнее о формате Skills можно узнать на agentskills.io/specification.

Стек: Postgres + Modus BI + Claude

Чтобы пройти весь путь от гипотез до готовых дашбордов, мне нужен был минимальный, но связный технологический стек. В итоге все свелось к четырем компонентам, каждый из которых выполнял свою роль.

1. postgres-mcp — работа с данными

Данные о ДТП я загрузил в PostgreSQL, а доступ к ним обеспечивал MCP-сервер postgres-mcp. С его помощью модель могла:

  • исследовать структуру базы данных;

  • выполнять SQL-запросы;

  • получать данные для анализа.

Важно, что данные оставались в Postgres — их не нужно было никуда переносить, настраивать ETL-процессы или выгружать в CSV.

2. modusbi-mcp — автоматизация дашбордов

Второй компонент — мой MCP-сервер для Modus BI. Он дал модели возможность:

  • создавать датасеты из SQL;

  • добавлять на дашборд графики, таблицы и другие визуальные элементы;

  • автоматически компоновать их по сетке (layout);

  • применять единый дизайн (цвета, шрифты, градиенты).

Сейчас это версия для внутренних нужд, но он уже дает возможность полностью автоматизировать сборку дашбордов.

3. Skills — обучение AI специфическим задачам

Навыки, которые я подготовил для аналитики:

/analyze-data — анализ гипотезы с оркестрацией postgres-mcp и modusbi-mcp;

/create-dashboard — создание дашборда;

/generate-sql — генерация SQL‑запросов для аналитики;

/explain-chart — объяснение графиков и выводов;

/bi-visualization-expert — выбор правильных компонентов на дашборде;

/statistical-analysis — статистические методы для BI аналитики;

/sql-bi-expert — особенности SQL запросов для BI систем.

По сути, Skills преобразуют LLM из общего помощника в специализированного эксперта для аналитики.

4. Современные LLM

В качестве «мозга» я использовал Claude Code — интерфейс, который умеет работать с MCP‑серверами и Skills. Но это не жесткая привязка: протокол MCP открыт, поэтому можно использовать любые LLM.

Полезные коллекции навыков Claude можно найти в K-Dense-AI Scientific Skills и Awesome Claude Skills.

Кейс: проверка 15 гипотез о ДТП Санкт-Петербурга

Я взял открытые данные ГИБДД по ДТП в Санкт-Петербурге за 10 лет — с 2015 по 2025 год. В базе получилось:
  • 56 671 происшествие;

  • 2 206 погибших;

  • 65 859 раненых;

  • 10 таблиц, связанных по идентификаторам;

  • ключевые поля: datetime, severity, light, region, injured_count, dead_count и дополнительные таблицы по участникам, погоде, дорожным условиям, объектам рядом и т. д.

Данные остались в том виде, в каком их публикует ГИБДД. Я сознательно не стал ничего причесывать, чтобы проверить, справится ли связка LLM + MCP с реальной, не всегда идеальной структурой.

Шаг 1. Визуализация структуры данных (Mermaid-схемы)

Прежде чем формулировать гипотезы, я попросил Claude визуализировать структуру базы данных. Промпт был простой:

«Создай Mermaid ERD для базы данных ДТП. Используй подключенный MCP Postgres для чтения базы данных.»

Модель через postgres-mcp изучила схему, получила список таблиц, их поля и связи, и сгенерировала ER-диаграмму в формате Mermaid.

Я увидел, какие таблицы есть, как они связаны, какие поля содержат ключевую информацию. Это помогло быстро сориентироваться в данных без ручного изучения документации.

Кроме того, Claude построил workflow-схему анализа:

1. Mermaid-схемы → понять структуру.

2. Формулировка гипотез → что проверять.

3. Итерация 1: Проверка через MCP postgres.

4. Итерация 2: Проверка через MCP postgres. После анализа данных оставляем необходимое.

5. Утверждаем дашборды для создания.

6. Создаем дашборды используя MCP ModusBI.

7. Задаем дизайн, добавляем выводы в дашбордах.

Шаг 2. Формулировка гипотез

Имея Mermaid-схемы, я попросил LLM сформулировать гипотезы. Мой промпт:

«Изучи структуру базы данных по mermaid-схеме, используя Skills для аналитика. /analyze-data /data-analyst-expert /statistical-analysis Предложи 15 гипотез, которые:

  • можно проверить статистически (есть данные);

  • Actionable (можем повлиять на ситуацию);

  • социально значимы (помогут снизить аварийность).

Составь план их проверки в виде таблицы и html-документа.»

Модель, используя postgres-mcp, просканировала таблицы, доступные поля и сформировала 15 гипотез, разбитых по категориям: временные паттерны, погода и дорожные условия, профиль участников, транспорт, география, нарушения.


Рисунок 1. План проверки 15 гипотез. Разбивка по категориям, гипотезы H1–H9

Вот те самые гипотезы, предложенные Claude:

H1 Ночь (22:00–06:00) тяжелее дня.

H2 Пятница и суббота — пик аварийности.

H3 Зимние месяцы опаснее летних.

H4 Снегопад увеличивает тяжесть ДТП.

H5 Гололед — главный зимний фактор смертности.

H6 Отсутствие освещения критично для пешеходов.

H7 Новички (стаж <3 лет) чаще становятся виновниками.

H8 Мужчины 18–25 лет — группа максимального риска.

H9 Пешеходы-нарушители гибнут чаще.

H10 Старые автомобили (>15 лет) опаснее новых.

H11 Мотоциклисты — уязвимая группа.

H12 Пешеходные переходы — места повышенной опасности.

H13 Есть районы — «черные точки» (правило Парето).

H14 Превышение скорости — главный убийца.

H15 Алкоголь + ночь = максимальный риск.


Рисунок 2. План проверки 15 гипотез. Разбивка по категориям, гипотезы H10–H15

Шаг 3. Проверка гипотез. Итерация 1

Я попросил модель проверить все гипотезы, используя навык /analyze-data. Мой следующий промпт выглядел так:

«Используя агент-планировщик проверь все 15 гипотез шаг за шагом.

Используй SKILL аналитика данных:

/analyze-data

/data-analyst-expert

/statistical-analysis.

Сделай таблицу ПОСЛЕ: какие гипотезы проверили, каким способом какие выборки получили, какие нам графики интереснее отобразить, в каком виде, чтобы посмотреть графическое представление гипотез, 

какие дополнительные величины вывести, чтобы показать дополнительно значимость гипотезы или ее отсутствие».

Эта итерация потребовала интенсивного взаимодействия с базой. На проверку 15 гипотез ушло более 15 минут, за это время postgres-mcp выполнил около 80 SQL-запросов.


Рисунок 3. Таблица ПОСЛЕ: результаты проверки

LLM последовательно изложила процесс проверки каждой гипотезы:


Рисунок 4. Детальная логика проверки (по шагам analyze-data)

Дополнительно модель подготовила таблицы «Статистическая строгость проверки», «Детальная логика проверки» для каждой гипотезы, «Итоговая статистика проверки», а также указала критические проблемы с данными.


Рисунок 5. Итоговая статистика проверки

Полный файл с результатами доступен в GitHub-репозитории.

Шаг 4: Проверка гипотез с учетом confounding факторов. Итерация 2

Перед тем как запускать вторую итерацию, стало понятно, что простое сравнение может давать искажённые выводы. Например, мужчин за рулём существенно больше, чем женщин, а ясных дней — больше, чем снежных. Без нормализации такие различия легко принять за закономерность.

В следующем промпте я просил учесть дополнительные факторы:

«Учти, что мужчин за рулем больше, чем женщин. Ясных дней больше, чем дождливых, а дождливых — чем снежных. Мотоциклисты ездят чаще летом. Районы разные по размеру и населенности. Проанализируй прочие факторы, влияющие на качество выборки. Сделай выборки с учетом этого. Составь итоговую таблицу и дополни текущие таблицы. Используй SKILL аналитика данных.»

Над этим запросом LLM также работала достаточно долго. В итоге дополнительно составила таблицы «Exposure & confounding» и «Рекомендации по метрикам».


Рисунок 6. Итерация 2: проверка Exposure & Confounding факторов

Также LLM предложила три варианта дашбордов, которые можно создать на основе подтвержденных гипотез.

  1. «Главные убийцы» — факторы, сильнее всего влияющие на смертность (пешеходы, ночь, дождь, освещение).

  2. «Уязвимые группы» — профили участников с высоким риском (пол, стаж, мотоциклисты, возраст авто).

  3. «География рисков» — районы и инфраструктурные проблемы (карты смертности, неосвещенные переходы, ДТП вне переходов). 

Рисунок 7. Готовые дашборды: пример варианта с корреляциями

Все результаты также доступны на GitHub.

Создание дашборда через modusbi-mcp

После двух итераций проверки у меня на руках были подтвержденные гипотезы, опровергнутые мифы и несколько неожиданных парадоксов.


Рисунок 8. Неожиданные открытия и парадоксы

Оставалось визуализировать результаты. Я написал Claude следующий промпт:

«/bi-visualization-expert /create-dashboard Учитывая полученные гипотезы, предложи, какие отдельные отчеты можно создать и какие компоненты отобразить, чтобы предоставить пользователю информацию. Составь таблицу с предложениями и согласуй со мной».

Модель сгенерировала HTML-файл с предложениями по дашбордам. Я выбрал три для создания.


Рисунок 9. Отчет 1: Executive Dashboard — Безопасность дорожного движения

Затем я написал следующий промпт:

«/bi-visualization-expert /create-dashboard /sql-bi-expert На основе созданной таблицы создай 3 предложенных дашборда: безопасность дорожного движения, пешеходная безопасность, временные паттерны ДТП. Старайся использовать один датасет для вывода в нескольких отчетах».

Модель через modusbi-mcp, используя навык /create-dashboard и данные, полученные на предыдущих шагах, сгенерировала датасеты, компоненты и layout. Примерно через 5 минут в Modus BI появилось три готовых дашборда.

Конечно, не обошлось без мелких недочетов. Например, не всегда с первого раза получалось задать нужный тип диаграммы. В отдельных графиках пришлось уточнять подписи осей и сортировку. Но и это правилось не вручную, а через уточняающие промпты.


Рисунок 10: Готовый дашборд 

Следующим запросом я постарался изменить дизайн отчета:

«/create-dashboard /bi-visualization-expert Сделай дизайн дашборда в голубых тонах. Добавь градиенты. Следуй современным трендам BI-дизайна».


Рисунок 11: Отчет с измененным дизайном

Конечно, текущая версия MCP-сервера пока не покрывает 100% возможностей, и иногда требовалась небольшая ручная коррекция. Но даже сейчас результат впечатляет.

Важный момент: после того как дашборды созданы, работать с ними через BI-платформу гораздо удобнее, чем каждый раз перегенерировать отчеты через LLM. Во-первых, данные в дашбордах можно просто обновлять в источнике — не нужно заново формировать страницы. Во-вторых, в отчеты легко добавить фильтры, чтобы проверять гипотезы в разных разрезах, не возвращаясь к модели.

Что я получил в результате

За четыре часа работы (включая две итерации и финальные правки) я получил готовый к использованию аналитический продукт. 

Примерная разбивка времени:

анализ структуры — ~10 минут

формулировка гипотез — ~15 минут

проверка гипотез — ~30+ минут

сборка дашбордов — ~5 минут

дополнительные итерации и правки — остальное время.  

Вот что удалось сделать.

  • postgres-mcp выполнил около 80 SQL-запросов к базе данных;

  • modusbi-mcp создал 17 датасетов и 20 визуальных компонентов с единым дизайном и раскладкой.

На основе выявленных факторов модель оценила, сколько жизней можно спасти за 10 лет при реализации конкретных мер:

  • защита пешеходов → ~200 жизней;

  • патрулирование и освещение в ночные часы → ~390 жизней;

  • кампания «Дождь = опасность» + водоотведение → ~100 жизней;

  • контроль скорости → ~150 жизней;

  • программа утилизации старых авто → ~50 жизней.

Суммарно около 800 спасенных жизней за 10 лет только за счет топ-5 мер:


Рисунок 12: ТОП-5 статистически значимых факторов (для дашборда)

Выводы: что это дает разным ролям

Для разработчика

MCP + Skills — это автоматизация рутины. Сервер позволяет быстро проводить аналитику данных, оптимизировать запросы, тестировать индексы на тестовых контурах, проверять миграции, проводить e2e-тесты и многое другое.

Для аналитика

LLM не заменяет аналитика, но ускоряет его в 5–10 раз. Особенно на этапе разведки данных и проверки множества гипотез. Модель честно сообщает об отсутствии данных, указывает на confounding-факторы и предлагает корректные метрики. Когда нужно учесть сложные взаимосвязи или интерпретировать результаты, человек все равно необходим.

У человека обычно недостаточно времени и возможности сосредоточиться полноценно на различных статистических моделях и гипотезах. ИИ помогает автоматизировать этот процесс: предложить новые идеи, более детально критически проверить имеющиеся.

Для руководителя

Руководитель получает готовые дашборды с проверенными гипотезами за часы, а не недели. Не нужно ждать, пока аналитики соберут данные, напишут запросы и оформят отчеты. Modus BI + MCP дают возможность получать ответы на бизнес-вопросы сразу, без погружения в технические детали.

P.S. Присоединяйтесь к нашему BI-сообществу в Telegram и будьте в курсе последних новостей!