Skip to main content
Glama
Gyangu
by Gyangu

Каждый скриншот в этом README был создан одним вызовом MCP set_layout — см. apps/desktop/scripts/screenshot.mjs.

peek — это настольный графический интерфейс для баз данных, который также работает как MCP-сервер. Попросите Claude открыть таблицу, выполнить запрос или расположить панели для сравнения — это происходит в окне перед вами, потому что вызовы инструментов ИИ и ваши собственные клики используют один канал команд. Встроенная панель чата запускает Claude Code внутри приложения, поэтому агент, с которым вы общаетесь, управляет окном, в котором он находится.

Возможности

  • 🤝 Единый интерфейс для человека и ИИ — каждый клик и каждый вызов инструмента MCP — это команда на одной шине; нет скрытого состояния, нет шага синхронизации

  • 💬 Встроенный Claude Code — панель чата размещает его через ACP, подключенный обратно к собственному MCP-серверу peek

  • 🛠️ 16 инструментов MCP — подключение, просмотр схем, выполнение запросов, открытие представлений, управление макетом, уведомление, запрос к пользователю

  • 🔒 Только чтение, обеспечивается сервером — транзакции и флаги только для чтения, без фильтрации по ключевым словам

  • 📎 Данные достигают ИИ только когда вы их прикрепляете — в противном случае запрос возвращает модели не более 20 строк

  • 📦 Базы данных — это плагины — шесть драйверов загружаются из ~/.peek/packages/<id>/; добавление означает установку каталога

  • Прокрутка миллиона строк — 0 пропущенных кадров, запуск ~0,5 с, бандлы 6,3 МБ (Производительность)

  • 🔑 Пароли хранятся в связке ключей ОС — никогда не в открытом виде на диске

Базы данных: PostgreSQL · MySQL · SQLite · Redis · Qdrant · Neo4j

Related MCP server: mcp-knowledgebase

Установка

Скачайте peek-v0.0.1-macos-arm64.zip из Releases, распакуйте и поместите peek.app в папку Applications. Пока только Apple Silicon.

Эта сборка подписана ad-hoc (пока нет Developer ID), поэтому macOS откажется запускать загруженное приложение как «поврежденное» при первом запуске. Снимите флаг карантина один раз, и оно откроется нормально:

xattr -d com.apple.quarantine /Applications/peek.app

Альтернативно: Системные настройки → Конфиденциальность и безопасность → «Открыть в любом случае». Планируется подписанная и нотариально заверенная сборка.

Быстрый старт

Требования: Node ≥ 22, pnpm 10.32.1 (закреплено через packageManager), и база данных, на которую можно указать. Пока разработано и протестировано только на macOS / Apple Silicon.

pnpm install
pnpm dev              # opens the window; MCP server on port 7332
pnpm build            # production bundles into apps/desktop/out

В приложении: выберите драйвер на боковой панели, вставьте строку подключения и просматривайте. Подключения, завершившие рукопожатие, сохраняются автоматически (пароли попадают в связку ключей ОС). Таблицы открываются как виртуализированные сетки, SQL выполняется в редакторе CodeMirror с помощью ⌘⏎, панели разделяются с помощью ⌘\ / ⌘⇧\, и у каждого представления результатов есть кнопка отмены, подкрепленная реальным дедлайном.

Тесты

Настольный набор — это чистая логика и не требует ничего. Каждый набор драйверов — это интеграционный набор, который читает свою цель из окружения и пропускает себя, когда сервер недоступен:

pnpm -r typecheck     # strict TS across every package
pnpm -r test          # 2567 tests; driver suites need real servers (see below)

Оговорки: наборы Redis / Qdrant / MySQL / SQLite создают и удаляют свои собственные фикстуры; набор PostgreSQL в настоящее время проверяет конкретную базу данных разработки (самообеспечение — TODO); Neo4j всегда требует явный пароль. Также есть сквозной смоук-тест собранного приложения (smoke-drivers.mjs), который управляет каждым настроенным драйвером через MCP.

PEEK_TEST_PG_URL="postgresql://user@localhost:5432/your_db" \
PEEK_TEST_REDIS_URL="redis://localhost:6379" \
PEEK_TEST_QDRANT_URL="http://localhost:6333" \
PEEK_TEST_MYSQL_URL="mysql://root:pw@localhost:3306/peek_test" \
PEEK_TEST_NEO4J_URL="bolt://localhost:7687" PEEK_TEST_NEO4J_PASSWORD="…" \
pnpm -r test

Использование из Claude Code

peek запускает свой MCP-сервер при запуске (только loopback, аутентификация по bearer-токену) и записывает конечную точку в ~/.peek/mcp.json (режим 0600). Зарегистрируйтесь один раз:

claude mcp add peek --transport http http://127.0.0.1:7332/mcp \
  --header "Authorization: Bearer <token from ~/.peek/mcp.json>"

Точная команда с заполненным токеном — в одном клике в Настройки → MCP endpoint, где также можно изменить порт или ротировать токен.

Инструменты

Инструмент

Назначение

read_workspace

Просмотр текущего интерфейса: макет, вкладки, статус результатов, подключения. Никогда не возвращает данные строк.

list_connections

Каждое подключение с драйвером, статусом и возможностями; секреты скрыты.

connect

Открыть подключение к базе данных.

introspect

Развернуть дерево пространства имен (db → schema → table); возвращает ссылки, необходимые open_view.

open_view

Поместить представление на экран: table, query, inspector, tree, vector.

run_query

Выполнить оператор. ИИ получает первые 20 строк плюс количество; полный результат остается в интерфейсе.

set_layout

Объявить все дерево панелей одним вызовом — несколько представлений рядом для сравнения.

set_ratio

Изменить размер одного разделителя, как при перетаскивании разделителя.

move_view

Переместить одно представление на другую панель, как вкладку или разделение.

activate_view

Вывести фоновую вкладку на передний план.

cancel_query

Остановить выполняющийся запрос.

send_chat / read_chat / control_chat

Управлять панелью чата извне: отправлять сообщения, читать транскрипт, управлять сеансом.

notify

Уведомить пользователя, даже если peek не является передним окном.

ask

Задать пользователю вопрос с несколькими вариантами ответа и дождаться ответа.

Намеренно нет инструмента, который передает модели полный набор результатов.

Панель чата

Вызов ask, приостановленный до ответа человека — агенты не могут отвечать на свои собственные вопросы.

Вам не нужно приносить свой клиент: peek сам размещает Claude Code как вкладку. Встроенный агент запускается без файловых инструментов, без оболочки и без MCP-серверов, кроме собственного сервера peek — он не наследует ваш settings.json, CLAUDE.md или настроенные MCP-серверы, и verify-chat-security.mjs проверяет это на реальном агенте. Два параметра (оба по умолчанию выключены) позволяют вернуть их: файловые/командные инструменты и собственные MCP-серверы. Каждый объясняет свою стоимость рядом с переключателем — см. Модель безопасности.

Модель безопасности

  • MCP-сервер: только loopback, требуется Authorization: Bearer, Host/Origin проверяются на DNS-ребдинг, токен сравнивается за постоянное время и никогда не логируется.

  • Только чтение: обеспечивается сервером базы данных везде, где это возможно (транзакции, флаги); драйверы Redis и Qdrant просто не выдают команд записи. Один пробел: предсуществующая хранимая процедура, которая открывает собственную транзакцию чтения-записи — используйте учетную запись базы данных только для чтения для всего, что вам дорого.

  • Изоляция процессов: драйверы работают в одном дочернем процессе на каждое подключение; зависший запрос или сбой не могут обрушить окно, а убийство процесса является безусловной отменой. Код пакета никогда не выполняется в основном процессе.

  • Пакеты доверенные, а не песочница. Что вы устанавливаете, тому вы доверяете — та же сделка, что и расширение VS Code или MCP-сервер. peek проверяет форму манифеста пакета, изолирует его процессы и удаляет учетные данные из их окружения, но нет проверки подписи и нет песочницы. Подробности в документации по дизайну.

  • Включение файловых инструментов агента имеет реальную цену: агент, который может читать ~/.peek/mcp.json, владеет bearer-токеном, и подсказки разрешений перестают быть барьером. Панель настроек говорит именно это, когда переключатель включен.

Производительность

Измерено на Apple M2 Max (macOS, 120 Гц Retina) на сгенерированном фикстуре SQLite из 1 000 000 строк, с помощью двух воспроизводимых скриптов бенчмарка (bench-startup.mjs, bench-scroll.mjs):

Сценарий

Результат

Запуск → окно готово (тёплый)

медиана 518 мс

Прокрутка 1 000 000 строк, 600 кадров

0 пропущенных кадров

Элементы DOM в сетке при 1 000 000 строк

< 400 (ограничено областью просмотра, а не данными)

run_query по 1 000 000 строк, от начала до конца

2.1 с

Собранные бандлы

6.3 МБ всего

Результаты передаются колоночными чанками с противодавлением и LRU-кэшем, а виртуальная прокрутка написана вручную, потому что Chromium молча ограничивает высоту элементов примерно на 699 000 строк при разрешении Retina — ни один размер DOM в peek не зависит от количества строк.

Статус и ограничения

Ранний, но реальный: все шесть баз данных подключаются, выполняют интроспекцию и передают строки; макет, чат, MCP-поверхность и система пакетов, описанные выше, реализованы и протестированы. pnpm build создает бандлы, а package-mac.mjs создает macOS .app; пока нет подписанного установщика. Запись намеренно не входит в область действия, пока путь только для чтения полностью не стабилизируется.

Известные ограничения, кратко (подробности в docs/PLAN.md и docs/design/):

  • Большой запрос приостанавливается (по замыслу) на ~200 тыс. строк, пока вы не прокрутите дальше; строки, вытесненные из кэша ~200 МБ, нельзя повторно получить на месте — перезапустите запрос.

  • Фиксированная высота строки 24 px; большие значения открываются в модальном окне.

  • Доступность надежна на уровне макета (списки вкладок ARIA, роувинг-табиндекс, управление фокусом), но минимальна внутри тел панелей и не проверена на реальном скринридере.

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

  • Qdrant: нет отмены запроса (API не предоставляет такой возможности — кнопка говорит об этом), и заголовки таблиц пока не сортируются.

  • Сохраненные учетные данные так же приватны, как ваша учетная запись ОС; подпись бинарных файлов появится с первой опубликованной сборкой.

Структура репозитория

peek/
├─ packages/
│  ├─ core/           # command schemas, workspace types, capability + chunk protocol, driver-host runtime
│  ├─ db-postgres/    # PostgreSQL driver
│  ├─ db-sql/         # MySQL + SQLite behind one dialect layer
│  ├─ db-redis/       # Redis driver
│  ├─ db-qdrant/      # Qdrant driver
│  └─ db-neo4j/       # Neo4j driver, plus the `graph` view kind
├─ apps/desktop/      # Electron app: main / preload / renderer, plus scripts/ (benchmarks, smoke tests)
└─ docs/              # PLAN.md (design record) and docs/design/ (per-change design docs)

docs/PLAN.md — авторитетный документ проектирования: архитектурные решения, бюджет производительности и определения этапов (PLAN.zh-CN.md — китайский оригинал). Документы проектирования по изменениям находятся в docs/design/.

Лицензия

MIT. См. LICENSE.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides read-only access to databases for MCP-compatible AI tools, allowing schema exploration and SELECT queries without exposing credentials or risking data changes.
    80 npm
    3
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to analyze databases through MCP, including listing all tables and inspecting table structures.
    -