Ready Data Discovery Tool
БесплатноНе проверенEnables local data discovery by indexing metadata from SQLite, CSV, and Markdown sources, providing hybrid keyword and TF-IDF semantic search via MCP tools (lis
Описание
Enables local data discovery by indexing metadata from SQLite, CSV, and Markdown sources, providing hybrid keyword and TF-IDF semantic search via MCP tools (listSources, indexSource, search, getSchema) and a REST API.
README
Локальный MVP-инструмент для поиска и обнаружения данных. Проект индексирует метаданные, схемы, примеры строк, примеры значений и Markdown-документацию из нескольких локальных источников, сохраняет каталог в SQLite и отдаёт результаты через Web UI, REST API и MCP-ready функции.
Это инструмент обнаружения данных, а не система Text-to-SQL.
Что делает проект
- Подключает локальные источники данных: SQLite-базу, папку с CSV-файлами и Markdown-документацию.
- Показывает доступные источники, таблицы/файлы, колонки и документы.
- Собирает метаданные: количество строк, типы данных, примеры строк, примеры значений и время последней индексации.
- Индексирует данные во внутренний каталог
storage/catalog.db. - Использует SQLite FTS5 для поиска по ключевым словам.
- Использует локальный семантический слой на основе TF-IDF и косинусного сходства. поверх Markdown-документации, описаний,
metadata, примеров значений иpreview. - Возвращает ранжированные результаты с происхождением данных:
source,sourceType,table,column,path,matchedBy,keywordScore,semanticScore. - Возвращает фрагменты Markdown-документов, а для таблиц и колонок — примеры строк и примеры значений.
- Предоставляет MCP-ready инструменты:
listSources,indexSource,search,getSchema.
Что проект НЕ делает
- Не является Text-to-SQL системой.
- Не генерирует SQL из пользовательского текста.
- Не выполняет LLM query planning.
- Не реализует ETL/ELT-пайплайн.
- Не реализует CDC.
- Не является production RBAC системой.
- Не использует внешние платные API.
- Не отправляет данные во внешние сервисы по умолчанию.
Быстрый запуск
make install
make seed
make index
make run
После запуска откройте:
http://localhost:8000
Ручной запуск без make
python -m pip install -e ".[dev]"
python scripts/generate_seed_data.py
python scripts/index_all.py
python -m uvicorn app.main:app --reload
Тестовые данные
Команда:
make seed
создаёт воспроизводимые локальные данные:
data/shop.dbusersorderspaymentsproducts
data/csv/events.csvdata/csv/support_tickets.csvdata/csv/marketing_campaigns.csvdata/docs/users.mddata/docs/orders.mddata/docs/payments.md
Генератор использует фиксированное зерно 42, поэтому данные одинаково воспроизводятся при повторных запусках.
Индексирование
Команда:
make index
индексирует все настроенные источники и записывает результат во внутреннюю SQLite-базу каталога:
storage/catalog.db
В каталоге сохраняются:
- источники;
- элементы каталога;
- история запусков индексирования;
- поисковый индекс FTS5.
Индексируются не все строки целиком, а представления, полезные для поиска данных: схемы, названия, описания, примеры строк, примеры значений и документация.
UI
Минимальный Web UI реализован через FastAPI и Jinja2-шаблоны.
/Главная страница со списком источников и строкой поиска./search?q=customer+emailСтраница с ранжированными результатами поиска./schema?sourceId=sqlite_shop&path=sqlite_shop.usersСтраница просмотра схемы: колонки,metadataи примеры строк.
UI остаётся тонким слоем и использует ту же бизнес-логику, что REST API и MCP-инструменты.
REST API
Примеры:
curl http://localhost:8000/api/sources
curl -X POST http://localhost:8000/api/sources/sqlite_shop/index
curl "http://localhost:8000/api/search?q=payment%20method"
curl "http://localhost:8000/api/search?q=email&sourceId=csv_folder&type=column"
curl "http://localhost:8000/api/schema?sourceId=sqlite_shop&path=sqlite_shop.users"
/api/search возвращает объекты такого формата:
{
"type": "column",
"score": 0.91,
"sourceId": "sqlite_shop",
"path": "sqlite_shop.users.email",
"metadata": {
"sourceId": "sqlite_shop",
"path": "sqlite_shop.users.email",
"sourceType": "sqlite",
"resultType": "column",
"matchedBy": "hybrid",
"keywordScore": 1.34,
"semanticScore": 0.11,
"parentTable": "users",
"table": "users",
"column": "email"
},
"preview": ["[email protected]", "[email protected]"]
}
Поиск
Поиск реализован как локальный гибридный механизм:
SQLite FTS5 для поиска по ключевым словам Ищет по именам источников, таблиц и колонок, тексту документации,
metadataи примерам значений.Локальный семантический поиск на основе TF-IDF Использует
TfidfVectorizerи Cosine Similarity по вспомогательному тексту:- Markdown-документации;
- именам элементов;
- путям;
- описаниям;
metadata;- примерам значений;
- фрагментам в
preview.
Гибридное ранжирование результатов Результаты FTS5 и TF-IDF объединяются по
(sourceId, path). Вmetadataсохраняются:keywordScore;semanticScore;matchedBy.
Итоговый
scoreпримерно объединяетkeywordScoreиsemanticScoreс весами0.65 / 0.35.Происхождение результатов и поле
previewКаждый результат содержит сведения о происхождении: источник, таблицу, колонку или документ. Документы возвращают фрагмент Markdown-текста, таблицы — примеры строк, колонки — примеры значений.
Важно: под семантическим поиском здесь понимается локальный механизм на TF-IDF, а не LLM- или embedding-based поиск.
MCP-инструменты
MCP-ready слой находится в:
app/mcp_server/server.py
app/mcp_server/manifest.json
Доступные инструменты:
listSources()indexSource({sourceId})search({query, filters?})getSchema({sourceId, path})
Локальная демонстрация:
make mcp-demo
Она напрямую вызывает локальные функции-инструменты и проверяет тот же контракт, который мог бы использовать AI-агент, совместимый с MCP. Реальный AI-агент для демонстрации не требуется.
Если установлен MCP Python SDK, app/mcp_server/server.py может зарегистрировать эти инструменты через FastMCP. Если SDK не установлен, локальные функции всё равно работают.
Тесты
make test
Тесты покрывают ключевые сценарии:
- SQLite-коннектор;
- CSV-коннектор;
- индексирование;
- фильтры поиска;
metadataдля гибридного поиска и происхождения результатов;- фрагменты документов;
- маршруты REST/UI;
- MCP-инструменты;
- получение схемы.
Оценка качества поиска
make evaluate
Оценка считает:
- Precision@5;
- Recall@5;
- задержку поиска;
- количество проиндексированных объектов;
- результаты запросов для проверки семантического поиска;
- распределение
matchedBy.
Результаты также записываются в:
storage/evaluation_results.json
Docker Compose
docker compose up
Контейнер устанавливает зависимости, генерирует тестовые данные, индексирует источники и запускает приложение на порту 8000.
Принятые архитектурные компромиссы
- SQLite FTS5 выбран вместо Elasticsearch, потому что MVP должен быть локальным, лёгким и воспроизводимым.
- TF-IDF выбран вместо embedding-моделей на базе transformer, чтобы получить локальный семантический слой без внешних API и тяжёлой инфраструктуры.
- SQLite + CSV выбраны вместо PostgreSQL/warehouse, потому что задача связана с обнаружением данных, а не с production-платформой для работы с данными.
- Jinja2 выбран вместо React, потому что нужен минимальный рабочий UI.
- Примеры строк и примеры значений индексируются вместо полной индексации на уровне отдельных строк, чтобы не превращать проект в ETL или индексатор для data lake.
- MCP SDK остаётся необязательным: проект можно демонстрировать через локальные функции-инструменты.
Ограничения текущей реализации
- Это MVP, а не enterprise-каталог данных.
- Конфигурация источников статическая.
- TF-IDF не понимает смысл так же глубоко, как embedding-модели на базе transformer.
semanticScoreможет не доминировать надkeywordScore.- Для больших каталогов TF-IDF-матрицу лучше кешировать или вынести в отдельный локальный индекс.
- RBAC, audit, multi-tenant isolation и усиление безопасности и надёжности для production-эксплуатации не реализованы.
Возможные направления дальнейшего развития
- Добавить конфигурационный файл для источников.
- Кешировать TF-IDF-матрицу между запросами.
- Добавить инкрементальную индексацию по времени изменения файлов.
- Улучшить словари синонимов и подсказок для бизнес-терминов.
- Рассмотреть локальные embedding-модели на базе transformer и лёгкое векторное хранилище.
- Добавить полноценную инструкцию регистрации MCP server в реальном клиенте, совместимом с MCP.
Установка Ready Data Discovery Tool
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/awesome0w/mcp-ready-data-discovery-toolFAQ
Ready Data Discovery Tool MCP бесплатный?
Да, Ready Data Discovery Tool MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Ready Data Discovery Tool?
Нет, Ready Data Discovery Tool работает без API-ключей и переменных окружения.
Ready Data Discovery Tool — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить Ready Data Discovery Tool в Claude Desktop, Claude Code или Cursor?
Открой Ready Data Discovery Tool на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
wenb1n-dev/SmartDB_MCP
A universal database MCP server supporting simultaneous connections to multiple databases. It provides tools for database operations, health analysis, SQL optim
автор: wenb1n-devPostgres Server
This server enables interaction with PostgreSQL databases through the Model Context Protocol, optimized for the AWS Bedrock AgentCore Runtime. It provides tools
автор: madhurprashPostgres
Query your database in natural language
автор: AnthropicPostgreSQL
Read-only database access with schema inspection.
автор: modelcontextprotocolCompare Ready Data Discovery Tool with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории data
