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 Server for Database

Установка

Скачайте 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.

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to manage and query SQLite databases through MCP tools, supporting CRUD operations, schema management, and saved views.
    4
    MIT
  • 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.
    92
    3
    MIT

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

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/Gyangu/peek-viewer'

If you have feedback or need assistance with the MCP directory API, please join our Discord server