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.
This server cannot be deployed
Maintenance
Related MCP Connectors
- dataOAuthco.thinair
PostgreSQL, MySQL, and SQL Server in one session. 26 read-only MCP tools for AI agents.
Let AI agents query data and act across all your business apps via MCP.
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.
Related MCP Servers
- FlicenseNot gradedqualityFmaintenanceA read-only MCP server that enables AI agents to explore database schemas and execute safe queries on PostgreSQL and MySQL.-
- FlicenseAqualityDmaintenanceEnables AI agents to explore MySQL database schemas and execute read-only queries through a safe, MCP interface.6-
- AlicenseNot gradedqualityBmaintenanceProvides read-only access to databases for MCP-compatible AI tools, allowing schema exploration and SELECT queries without exposing credentials or risking data changes.80 npm3MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to analyze databases through MCP, including listing all tables and inspecting table structures.-