peek
Каждый скриншот в этом 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, где также можно изменить порт или ротировать токен.
Инструменты
Инструмент | Назначение |
| Просмотр текущего интерфейса: макет, вкладки, статус результатов, подключения. Никогда не возвращает данные строк. |
| Каждое подключение с драйвером, статусом и возможностями; секреты скрыты. |
| Открыть подключение к базе данных. |
| Развернуть дерево пространства имен (db → schema → table); возвращает ссылки, необходимые |
| Поместить представление на экран: |
| Выполнить оператор. ИИ получает первые 20 строк плюс количество; полный результат остается в интерфейсе. |
| Объявить все дерево панелей одним вызовом — несколько представлений рядом для сравнения. |
| Изменить размер одного разделителя, как при перетаскивании разделителя. |
| Переместить одно представление на другую панель, как вкладку или разделение. |
| Вывести фоновую вкладку на передний план. |
| Остановить выполняющийся запрос. |
| Управлять панелью чата извне: отправлять сообщения, читать транскрипт, управлять сеансом. |
| Уведомить пользователя, даже если peek не является передним окном. |
| Задать пользователю вопрос с несколькими вариантами ответа и дождаться ответа. |
Намеренно нет инструмента, который передает модели полный набор результатов.
Панель чата
Вызов 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 (ограничено областью просмотра, а не данными) |
| 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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
PostgreSQL, MySQL, and SQL Server in one session. 26 read-only MCP tools for AI agents.
An agent-native database over MCP: shared, validated, structured records in every AI chat.
AI agents propose database changes as reviewable requests — no direct write access.
Live data grids for AI agents. Push structured data; humans review, agents read back via MCP.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA read-only MCP server that enables AI agents to explore database schemas and execute safe queries on PostgreSQL and MySQL.-
- AlicenseAqualityDmaintenanceEnables AI agents to explore MySQL database schemas and execute read-only queries through a safe, MCP interface.6ISC
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to analyze databases through MCP, including listing all tables and inspecting table structures.-
- FlicenseNot gradedqualityBmaintenanceProvides read-only database access for AI agents, enabling table listing, schema inspection, and filtered row queries through MCP tools.-