DataSearcher MCP
Enables executing SQL queries and performing data analysis directly on ClickHouse databases, including automatic SQL dialect translation.
Provides an embedded analytical engine for ML tasks (clustering, forecasting) and federated queries across multiple databases, with automatic SQL translation.
Enables executing SQL queries and performing data analysis directly on MySQL databases, including automatic SQL dialect translation.
Provides LLM-based classification (classify_rows) and semantic search (semantic_search) using locally hosted Ollama models.
Enables executing SQL queries and performing data analysis directly on PostgreSQL databases, including automatic SQL dialect translation.
Enables executing SQL queries and performing data analysis directly on SQLite databases.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@DataSearcher MCPshow top 5 regions by revenue"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
DataSearcher MCP
Подключи базу данных к Claude или Cursor — и спрашивай на русском: «какие товары продаются хуже всего», «найди аномалии в продажах», «прогноз на 3 месяца». 36 инструментов анализа работают за кулисами: SQL, статистика, ML, графики, дашборды.
Что это такое?
DataSearcher MCP — это мост между вашей базой данных и ИИ-ассистентом (Claude Desktop, Cursor, VS Code).
Обычно, чтобы проанализировать данные из БД, нужно писать SQL-запросы вручную или открывать BI-систему. С этим MCP-сервером вы просто разговариваете с ИИ на обычном русском языке, а он сам:
пишет и выполняет SQL к вашей базе
строит графики и дашборды
находит аномалии, корреляции, инсайты
прогнозирует тренды (ML)
генерирует HTML-отчёты
Пример диалога
Вы: Подключись к моей PostgreSQL и покажи топ-5 регионов по выручке
ИИ: [вызывает sql_query → SQL выполняется прямо в вашей PostgreSQL]
Вот топ-5 регионов по выручке:
| Регион | Выручка | Заказов |
|--------------|-------------|---------|
| Москва | 1 358 468 ₽ | 55 |
| Новосибирск | 1 036 564 ₽ | 45 |
...
Вы: Найди аномалии в суммах заказов
ИИ: [вызывает detect_anomalies → z-score + IQR]
Обнаружено 3 выброса в колонке amount:
- Заказ #1047: 49 870 ₽ (z-score = 4.2)
- Заказ #2891: 48 200 ₽ (z-score = 3.8)
...
Вы: Построй дашборд и сохрани как HTML
ИИ: [вызывает create_public_dashboard → генерирует HTML с графиками и фильтрами]
Дашборд создан! Откройте файл:
/tmp/datasearcher_mcp_dashboards/abc123/dashboard.htmlПочему это круто?
Без DataSearcher MCP | С DataSearcher MCP |
Пишешь SQL вручную | ИИ сам пишет и выполняет SQL |
Открываешь BI-систему для графиков | Графики и дашборды прямо в чате |
Excel для сводных таблиц |
|
Python + Jupyter для ML | Прогнозы и кластеризация через чат |
Каждая БД — свой диалект SQL | Пишешь на DuckDB SQL — сервер переводит |
Related MCP server: GraphJin
Чем отличается от других MCP-серверов?
1. SQL выполняется в вашей базе, а не во встроенной
Большинство аналитических инструментов выгружают данные в свой движок. Мы — нет.
Когда вы спрашиваете «покажи продажи по регионам», SQL выполняется напрямую в вашей PostgreSQL/MySQL/ClickHouse — с индексами, оптимизатором, кешем. Никакой выгрузки 50 000 строк в память.
DuckDB подключается только для ML-задач (кластеризация, прогнозы, важность признаков), где он реально нужен. И даже тогда — выгружает не всю таблицу, а только нужные колонки.
Почему так? Ваша production-БД умнее любого встроенного движка. У неё есть индексы, оптимизатор, материализованные представления. Нет смысла выгружать данные, чтобы посчитать GROUP BY.
2. Пишешь на одном SQL — работает в любой БД
Написали DATE_TRUNC('month', date_col) (DuckDB-синтаксис)? Сервер автоматически переведёт это в:
DATE_TRUNC('MONTH', date_col)для PostgreSQLDATE_FORMAT(date_col, '%Y-%m-01')для MySQLtoStartOfMonth(date_col)для ClickHouse
Трансляция через sqlglot — вам не нужно помнить диалекты.
3. Кросс-БД JOIN через federated-режим
Можно прицепить PostgreSQL и MySQL к DuckDB одновременно и сделать JOIN между ними:
SELECT pg.users.name, mysql.orders.amount
FROM pg.users JOIN mysql.orders ON pg.users.id = mysql.orders.user_idЭто работает через DuckDB extensions (postgres_scanner, mysql_scanner) — без выгрузки данных.
4. Авто-определение связей между таблицами
Сервер читает внешние ключи из information_schema и сам предлагает, как соединить таблицы. Вызов merge_tables без указания ключей — найдёт их автоматически:
Вы: Объедини таблицы orders и customers
ИИ: [merge_tables → авто-найден ключ customer_id → id]
Объединено: 100 заказов + 20 клиентов → 100 строк5. Семантический поиск по текстовым данным
Инструмент semantic_search находит строки, похожие по смыслу, а не по словам:
Вы: Найди отзывы, похожие на "доставка задерживается"
ИИ: [semantic_search → LLM embeddings → cosine similarity]
Топ-3 похожих отзыва:
1. "Курьер приехал на два часа позже" (similarity: 0.92)
2. "Ждали посылку 5 дней вместо двух" (similarity: 0.88)
3. "Срок доставки перенесли без уведомления" (similarity: 0.85)Быстрый старт
Шаг 1. Установка
git clone https://github.com/MarkIvor/mcp-datasearcher.git
cd mcp-datasearcher
pip install -e ".[all]" # все драйверы БДШаг 2. Настройка подключений
cp connections.example.yaml connections.yamlОтредактируйте connections.yaml — укажите свою БД:
connections:
- name: my_db
db_type: postgresql # postgresql | mysql | clickhouse | sqlite
host: localhost
port: 5432
database: mydb
username: ${DB_USER} # подстановка из переменных окружения
password: ${DB_PASSWORD}
mode: auto # auto (по умолчанию) | remote | dump
# Файлы тоже можно (грузятся в DuckDB):
# files:
# - path: ./data/sales.csv
# table_name: sales
# - path: ./data/report.xlsx
# table_name: report # все листы → отдельные таблицыШаг 3. Подключение к Claude Desktop
Добавьте в claude_desktop_config.json:
{
"mcpServers": {
"datasearcher": {
"command": "datasearcher-mcp",
"args": ["--config", "/path/to/connections.yaml"]
}
}
}Перезапустите Claude Desktop. Готово! Теперь можно спрашивать:
«расскажи о данных в таблице orders»
«найди корреляции между числовыми колонками»
«построй прогноз продаж на 6 месяцев»
«создай дашборд по клиентам»
Альтернативы: Cursor, Docker, HTTP
.cursor/mcp.json:
{
"mcpServers": {
"datasearcher": {
"command": "datasearcher-mcp",
"args": ["--config", "/path/to/connections.yaml"]
}
}
}# 1. Подготовьте конфиг:
cp connections.example.yaml connections.yaml
# 2. Запустите:
docker compose up -d
# 3. Подключитесь к http://localhost:8000/mcpДля Claude Desktop через Docker (stdio):
docker run -i --rm -v ./connections.yaml:/app/connections.yaml:ro \
datasearcher-mcp --transport stdioПеременные окружения для Docker:
LLM_BASE_URL=http://ollama:11434/v1 # для classify_rows / semantic_search
LLM_MODEL=qwen2.5:14b
MCP_AUTH_TOKEN=your-secret-token # опционально, для HTTP authdatasearcher-mcp --transport http --host 0.0.0.0 --port 8000Точка подключения: http://localhost:8000/mcp
Тест через MCP Inspector:
npx -y @modelcontextprotocol/inspector
# В UI подключитесь к http://localhost:8000/mcp36 инструментов — что умеет
Анализ данных
Инструмент | Что делает | Пример запроса |
| SQL-запрос к БД (markdown/json/csv) | «покажи топ-10 клиентов по выручке» |
| Умное саммари таблицы | «расскажи о данных» |
| Статистика по колонкам | «профилируй колонку amount» |
| Аудит качества (пропуски, дубликаты) | «проверь качество данных» |
| Топ-5 инсайтов автоматически | «что интересного в данных?» |
| Выборка строк | «покажи 10 случайных строк» |
| Дубликаты (точные и fuzzy) | «найди дубликаты клиентов» |
| Выбросы (z-score, IQR) | «найди аномалии в суммах» |
| Паттерны в тексте (email, ИНН, телефон) | «какие паттерны в колонке email?» |
Статистика и связи
Инструмент | Что делает |
| Корреляции между числовыми колонками (Пирсон/Спирмен) |
| Форма распределения (skewness, kurtosis, гистограмма) |
| Кросс-табуляция двух категорий + Хи-квадрат |
| Сводная таблица в стиле Excel (PIVOT) |
| t-тест, Mann-Whitney, KS-тест, Хи-квадрат |
| Сегментация (квинтили, децилы, RFM-анализ) |
| Сравнение двух таблиц (общие/уникальные строки, расхождения) |
| Тренды, сезонность, скользящее среднее |
ML и прогнозы
Инструмент | Что делает |
| Прогноз тренда (линейная/полиномиальная регрессия) |
| Кластеризация K-Means/DBSCAN с авто-выбором k |
| Важность признаков (Random Forest) |
| Классификация строк через LLM |
| Семантический поиск через LLM embeddings |
| Генерация SQL из описания на русском |
Визуализация и отчёты
Инструмент | Что делает |
| График (bar/line/pie/scatter/area/histogram) → PNG |
| Дашборд из 4-6 графиков одним вызовом |
| Standalone HTML-дашборд с интерактивными фильтрами |
| Нарратив с графиками — «история данных» |
| Экспорт результата в CSV |
Управление данными
Инструмент | Что делает |
| Нормализация, one-hot, извлечение дат, binning |
| JOIN двух таблиц (с авто-определением ключей) |
| Загрузка CSV/Excel/Parquet в DuckDB |
| Подключить новую БД в рантайме |
| Обновить схему после изменений в БД |
| Структура таблицы (колонки, типы, превью) |
| План выполнения SQL (EXPLAIN) |
| Проверить доступность подключения |
Режимы работы подключений
У каждого подключения в connections.yaml есть поле mode:
Режим | Как работает | Когда использовать |
| SQL → source DB, ML → DuckDB (лениво) | Универсальный режим |
| Всё SQL выполняется в source DB, DuckDB не используется | БД быстрая, ML не нужен |
| Таблицы выгружаются в DuckDB при старте | Файлы, маленькие БД, офлайн |
| Source DB прицепляется к DuckDB через расширение | Кросс-БД JOIN |
Просто оставьте auto — сервер сам разберётся.
Поддерживаемые БД
БД | db_type | Remote SQL | Federated |
PostgreSQL |
| ✅ | ✅ |
MySQL / MariaDB |
| ✅ | ✅ |
ClickHouse |
| ✅ | — |
SQLite |
| ✅ | ✅ |
CSV | файл | — | — |
Excel (.xlsx) | файл | — | — |
Parquet | файл | — | — |
Ресурсы и промпты
Сервер предоставляет не только инструменты, но и ресурсы (данные, которые ИИ может читать) и промпты (шаблоны запросов):
Ресурсы
schema://tables— список всех таблиц с колонками и типами (ИИ видит схему автоматически)schema://diagram— Mermaid ER-диаграмма таблиц и связей (рендерится в чате как картинка)connection://list— список подключений и их режимыtable://{name}/preview— превью строк таблицы
Промпты
analyze_table— системный промпт аналитика с контекстом схемыweekly_report— шаблон еженедельного отчёта (профиль + инсайты + тренды + экспорт)
LLM для классификации и поиска
Некоторые инструменты (classify_rows, generate_sql, semantic_search) требуют LLM. Есть три режима:
| Как работает | Когда использовать |
| Отдельный LLM-клиент ( | Ollama, vLLM, OpenAI API |
| Использует модель хоста (Claude/Cursor) через MCP sampling | Если у вас уже есть Claude |
| Возвращает инструкцию для хоста | Без LLM |
Настройка:
LLM_BASE_URL=http://localhost:11434/v1 # Ollama, vLLM, OpenAI-compatible
LLM_MODEL=qwen2.5:14bРаботает на бюджетных LLM — достаточно модели 7B-14B.
Переменные окружения
Все настройки через переменные с префиксом DATASEARCHER_MCP_:
Переменная | По умолчанию | Описание |
|
| Файл подключений |
|
| Режим по умолчанию |
|
| Таймаут SQL (сек), 0 = без лимита |
|
| Авто-трансляция SQL между диалектами |
| `` | Bearer token для HTTP auth |
|
|
|
| — | URL LLM API (OpenAI-compatible) |
| — | Модель LLM |
Полный список — в config.py.
Как это работает (технически)
┌──────────────┐ ┌─────────────────────────────────────────────┐
│ MCP-клиент │ │ datasearcher-mcp │
│ Claude/Cursor│────▶│ FastMCP server │
│ VS Code │◀────│ ├── 36 tools │
└──────────────┘ MCP └───┤ ◀──────┘
│ ┌─────────────────────────────────┐ │
│ │ Remote (push-down) │ │
│ │ sql_query → source DB │ │
│ │ query_explain → source DB │ │
│ │ get_schema → source DB │ │
│ │ + sqlglot dialect translation │ │
│ └─────────────────────────────────┘ │
│ ┌─────────────────────────────────┐ │
│ │ Lazy DuckDB (ML only) │ │
│ │ cluster_analysis → ensure_table│ │
│ │ predict_trend → ensure_table │ │
│ │ feature_importance → ensure_ │ │
│ │ + ML cache by SQL hash │ │
│ └─────────────────────────────────┘ │
│ │
│ resources: schema://tables │
│ schema://diagram (Mermaid) │
│ connection://list │
│ table://{name}/preview │
│ prompts: analyze_table, weekly_report │
└─────────────────────────────────────────┘Архитектура
datasearcher-mcp/
pyproject.toml # пакет + зависимости
connections.example.yaml # пример конфига
Dockerfile # production-образ
docker-compose.yml # для быстрого старта
src/datasearcher_mcp/
__main__.py # CLI: --transport, --config, --auth-token
config.py # настройки (pydantic-settings)
session.py # DuckDB-сессия (ленивая)
engine.py # движок: подключения, таблицы, remote/dump/auto
server.py # FastMCP: 36 tools + 4 resources + 2 prompts
llm_client.py # LLM-клиент для classify/generate_sql
embeddings.py # semantic search через LLM embeddings
connectors/ # коннекторы к БД (PG, MySQL, CH, SQLite)
tools/ # 30 инструментов анализа
render/ # графики (matplotlib PNG) + парсинг маркеров
prompts/ # системный промпт аналитикаКлючевые решения
Решение | Почему так |
DuckDB выключен по умолчанию | Source DB умнее (индексы, оптимизатор). Выгрузка — только для ML |
sqlglot для трансляции SQL | Пользователь пишет один SQL — работает в любой БД |
Federated через DuckDB extensions | Кросс-БД JOIN без ETL |
FK из information_schema | Авто-join таблиц, не просим пользователя указывать ключи |
ML cache по SQL-хэшу | Повторные ML-запросы не выгружают данные повторно |
MCP sampling для LLM-задач | Использует модель хоста (Claude) — не нужен отдельный LLM |
Технологии
Слой | Технология |
MCP | mcp[cli] 1.28 (FastMCP, stdio/SSE/Streamable HTTP) |
SQL | Source DB (push-down) или DuckDB (lazy/federated) |
Трансляция SQL | sqlglot (DuckDB → PG/MySQL/CH/SQLite) |
ML | scikit-learn, scipy, numpy |
Графики | matplotlib (PNG) |
Embeddings | OpenAI-compatible |
Драйверы БД | psycopg2, pymysql, clickhouse-connect, aiosqlite |
Файлы | CSV/Parquet (DuckDB), Excel (openpyxl) |
Дашборды | standalone HTML + DuckDB-WASM + Chart.js |
Auth | Bearer token middleware (Starlette) |
Лицензия
MIT
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.
Latest Blog Posts
- 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/MarkIvor/mcp-datasearcher'
If you have feedback or need assistance with the MCP directory API, please join our Discord server