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 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, где также можно изменить порт или ротировать токен.
Инструменты
Инструмент | Назначение |
| Просмотр текущего интерфейса: макет, вкладки, статус результатов, подключения. Никогда не возвращает данные строк. |
| Каждое подключение с драйвером, статусом и возможностями; секреты скрыты. |
| Открыть подключение к базе данных. |
| Развернуть дерево пространства имен (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 installed
Maintenance
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
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage and query SQLite databases through MCP tools, supporting CRUD operations, schema management, and saved views.4MIT
- FlicenseNot gradedqualityFmaintenanceA read-only MCP server that enables AI agents to explore database schemas and execute safe queries on PostgreSQL and MySQL.
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to explore MySQL database schemas and execute read-only queries through a safe, MCP interface.
- 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.923MIT
Related MCP Connectors
Analytical memory for AI agents: a real Postgres queried in plain English over MCP. One command.
Read-only Remote MCP for externally grounded AI agent trust receipts.
GibsonAI MCP server: manage your databases with natural language
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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