# Scherlok

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

- MCP-сервер · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 11
- Автор: rbmuller
- Лицензия: MIT · policy=link-only · показываем только описание, файл — у автора
- Исходник: https://github.com/rbmuller/scherlok
- Обновлён: 2026-10-19
- HTML: https://affpapa.org/nevibecode/mcp/scherlok

## Что делает

Scherlok подключается к PostgreSQL, BigQuery, Snowflake, MySQL или DuckDB и собирает профиль таблиц: объёмы, типы колонок, NULL, распределения, свежесть и кардинальность. Профили хранятся локально в SQLite. После пяти корректных профилей сервер учитывает вариативность последних 30 профилей.

Модель работы строится на трёх командах: `connect` подключает базу, `investigate` изучает данные, `watch` ищет отклонения. Команда `ci` объединяет этот процесс для конвейера. Система обнаруживает падение или рост объёма, дрейф схемы, всплеск NULL, сдвиг распределения, проблемы со свежестью и рост числа уникальных значений.

Результат можно отправить в Slack, Discord, Teams или произвольный HTTP-адрес, а `--exit-code --fail-on critical` превращает критическую аномалию в ошибку CI. Для dbt нужен пакет `scherlok[dbt]`; сервер читает `target/manifest.json` и использует `profiles.yml`. Без переменной `SCHERLOK_CONNECTION` подключение через MCP не настроится.

## Требования
- Нужно: Python и uv (команды через uvx)
- Переменные окружения: `SCHERLOK_CONNECTION` — это ключи и токены: значения спроси у человека, в репозиторий и общие файлы не записывай.

## Установка

### Claude Code (родная платформа)

**Командой платформы**
```bash
claude mcp add scherlok -e SCHERLOK_CONNECTION=<SCHERLOK_CONNECTION> -- uvx scherlok
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from scherlok <команда>

### Codex

**Командой платформы**
```bash
codex mcp add scherlok --env SCHERLOK_CONNECTION=<SCHERLOK_CONNECTION> -- uvx scherlok
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from scherlok <команда>

### Cursor

**Файл настроек**
Файл `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "scherlok": {
            "command": "uvx",
            "args": [
                "scherlok"
            ],
            "env": {
                "SCHERLOK_CONNECTION": "<SCHERLOK_CONNECTION>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from scherlok <команда>

### GitHub Copilot

**Файл настроек**
Файл `.vscode/mcp.json`:
```json
{
    "servers": {
        "scherlok": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "scherlok"
            ],
            "env": {
                "SCHERLOK_CONNECTION": "<SCHERLOK_CONNECTION>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from scherlok <команда>

### Gemini CLI

**Командой платформы**
```bash
gemini mcp add -e SCHERLOK_CONNECTION=<SCHERLOK_CONNECTION> scherlok uvx scherlok
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from scherlok <команда>

## Когда брать
- профилировать таблицы базы данных
- найти падение объёма или всплеск строк
- обнаружить дрейф схемы и NULL
- проверить свежесть таблиц
- остановить CI при критической аномалии

## Примеры запросов агенту
- Проверь базу через Scherlok и перечисли критические аномалии.
- Сравни текущие таблицы с изученными профилями и покажи проблемы со свежестью.
- Запусти проверку dbt-проекта `./my_dbt_project` после сборки моделей.

## Похожие
- [data-quality-frameworks](https://affpapa.org/nevibecode/skills/data-quality-frameworks.md) — скилл · 11230 установок
- [dbt-sf-to-bq-translator](https://affpapa.org/nevibecode/skills/dbt-sf-to-bq-translator.md) — скилл · 2300 установок
- [orionbelt-semantic-layer](https://affpapa.org/nevibecode/mcp/orionbelt-semantic-layer.md) — MCP-сервер · ★ 101
- [sql-queries](https://affpapa.org/nevibecode/skills/sql-queries.md) — скилл · 4500 установок
- [data-context-extractor](https://affpapa.org/nevibecode/skills/data-context-extractor.md) — скилл · 3100 установок
- [YourMemory](https://affpapa.org/nevibecode/mcp/yourmemory.md) — MCP-сервер · ★ 270

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
