Skip to main content
Glama
Gyangu
by Gyangu

このREADMEのすべてのスクリーンショットは、単一のset_layout MCP呼び出しで生成されています — apps/desktop/scripts/screenshot.mjsを参照。

peekは、MCPサーバーを兼ねるデスクトップデータベースGUIです。Claudeにテーブルを開くよう、クエリを実行するよう、または比較用にパネルを配置するよう依頼すると、それは目の前のウィンドウで実行されます。AIツールの呼び出しとあなた自身のクリックが、1つのコマンドチャネルを共有するからです。組み込みのチャットパネルはアプリ内でClaude Codeを実行するため、あなたが話しかけるエージェントは、自分が住んでいるウィンドウを操作します。

機能

  • 🤝 人間とAIのための単一UI — すべてのクリックとすべてのMCPツール呼び出しは、同じバス上のコマンドです。シャドウ状態も同期ステップもありません

  • 💬 Claude Code内蔵 — チャットパネルはACP経由でホストし、peek自身のMCPサーバーに接続します

  • 🛠️ 16のMCPツール — 接続、スキーマのイントロスペクト、クエリ実行、ビューを開く、レイアウト制御、通知、ユーザーへの質問

  • 🔒 サーバーによって強制される読み取り専用 — 読み取り専用トランザクションとフラグ。キーワードフィルタリングはどこにもありません

  • 📎 データは添付したときだけAIに届く — それ以外の場合、クエリは最大20行をモデルに返します

  • 📦 データベースはプラグイン — 6つのドライバが~/.peek/packages/<id>/から読み込まれます。追加するということは、ディレクトリをインストールすることを意味します

  • 100万行のスクロール — ドロップフレーム0、起動約0.5秒、バンドル6.3MB(パフォーマンス

  • 🔑 パスワードはOSのキーチェーンに保存 — ディスク上に平文はありません

データベース: PostgreSQL · MySQL · SQLite · Redis · Qdrant · Neo4j

Related MCP server: mcp-knowledgebase

インストール

Releasesからpeek-v0.0.1-macos-arm64.zipをダウンロードし、解凍してpeek.appをアプリケーションフォルダにドロップします。現時点ではApple Siliconのみ対応です。

このビルドはアドホック署名です(Developer IDはまだありません)。そのため、macOSは初回起動時にダウンロードしたアプリを「破損している」として拒否します。クォータニンフラグを一度クリアすれば、通常どおり開きます:

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

または: システム設定 → プライバシーとセキュリティ → 「このまま開く」。署名・公証済みビルドが計画されています。

クイックスタート

要件: Node ≥ 22pnpm 10.32.1packageManagerで固定)、および接続先のデータベース。現時点ではmacOS / Apple Siliconでのみ開発・テストされています。

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

アプリ内で: サイドバーでドライバを選択し、接続文字列を貼り付けて、ブラウズします。ハンドシェイクが完了した接続は自動的に保存されます(パスワードはOSのキーチェーンに保存されます)。テーブルは仮想化グリッドとして開き、SQLは⌘⏎でCodeMirrorエディタで実行され、パネルは⌘\ / ⌘⇧\で分割され、すべての結果ビューには実際のデッドラインに基づくキャンセルボタンがあります。

テスト

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

デスクトップスイートは純粋なロジックであり、何も必要としません。各ドライバスイートは、環境からターゲットを読み取り、サーバーに到達できない場合は自身をスキップする統合スイートです:

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

注意点: Redis / Qdrant / MySQL / SQLiteスイートは独自のフィクスチャを作成してクリーンアップします。PostgreSQLスイートは現在、特定の開発データベースに対してアサートします(自己プロビジョニングはTODOです)。Neo4jは常に明示的なパスワードが必要です。また、ビルド済みアプリのエンドツーエンドのスモークテスト(smoke-drivers.mjs)があり、設定されたすべてのドライバをMCP経由で駆動します。

Claude Codeから使う

peekは起動時にMCPサーバーを開始し(ループバックのみ、ベアラートークン認証)、エンドポイントを~/.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エンドポイントでワンクリックで取得できます。ポートの変更やトークンのローテーションもそこで行います。

ツール

ツール

目的

read_workspace

現在のUIを確認: レイアウト、タブ、結果ステータス、接続。行データは返しません。

list_connections

ドライバ、ステータス、機能を持つすべての接続。シークレットはマスクされます。

connect

データベース接続を開きます。

introspect

名前空間ツリーを展開します(db → schema → table)。open_viewが必要とするrefを返します。

open_view

ビューを画面に表示します: tablequeryinspectortreevector

run_query

ステートメントを実行します。AIは最初の20行と件数を受け取ります。完全な結果はUIに残ります。

set_layout

パネルツリー全体を1回の呼び出しで宣言します — 比較用に複数のビューを並べて表示します。

set_ratio

ディバイダーをドラッグするように、1つの分割をリサイズします。

move_view

1つのビューを別のパネルに、タブまたは分割として移動します。

activate_view

バックグラウンドのタブを前面に持ってきます。

cancel_query

実行中のクエリを停止します。

send_chat / read_chat / control_chat

外部からチャットパネルを操作: メッセージ送信、トランスクリプト読み取り、セッション管理。

notify

peekが最前面ウィンドウでなくても、ユーザーに通知します。

ask

ユーザーに多肢選択の質問をし、回答を待ちます。

完全な結果セットをモデルに渡すツールは、意図的に存在しません。

チャットパネル

人間が回答するまで一時停止するask呼び出し — エージェントは自分自身の質問に答えることはできません。

独自のクライアントを持ち込む必要はありません: peekはClaude Code自体をタブとしてホストします。組み込みエージェントは、ファイルツール、シェル、およびpeek自身以外のMCPサーバーなしで起動します — あなたのsettings.jsonCLAUDE.md、または設定済みのMCPサーバーを継承せず、verify-chat-security.mjsが実際のエージェントに対してそれをチェックします。2つの設定(どちらもデフォルトでオフ)でオプトインできます: ファイル/コマンドツール、および独自のMCPサーバー。それぞれのスイッチの横にコストが説明されています — セキュリティモデルを参照。

セキュリティモデル

  • MCPサーバー: ループバックのみ、Authorization: Bearer必須、Host/OriginをDNSリバインディングに対してチェック、トークンは定数時間で比較され、ログに記録されることはありません。

  • 読み取り専用: 可能な場合はデータベースサーバーによって強制されます(トランザクション、フラグ)。RedisおよびQdrantドライバは単に書き込みコマンドを発行しません。1つのギャップ: 独自の読み書きトランザクションを開く既存のストアドプロシージャ — 重要なものには読み取り専用のデータベースアカウントを使用してください。

  • プロセス分離: ドライバは接続ごとに1つの子プロセスで実行されます。詰まったクエリやクラッシュはウィンドウを落とすことができず、プロセスを強制終了することは無条件のキャンセルです。パッケージコードがメインプロセスで実行されることはありません。

  • パッケージは信頼され、サンドボックス化されません。 インストールするものは信頼するものです — VS Code拡張機能やMCPサーバーと同じ扱いです。peekはパッケージのマニフェスト形状を検証し、プロセスを分離し、環境から資格情報を除去しますが、署名チェックもサンドボックスもありません。詳細は設計ドキュメントにあります。

  • エージェントのファイルツールを有効にすることには実際のコストがあります: ~/.peek/mcp.jsonを読み取れるエージェントはベアラートークンを保持し、権限プロンプトは障壁ではなくなります。設定パネルは、スイッチがオンのときにこれを正確に説明します。

パフォーマンス

Apple M2 Max(macOS、120Hz Retina)で、生成された1,000,000行のSQLiteフィクスチャに対して、2つの再現可能なベンチマークスクリプト(bench-startup.mjsbench-scroll.mjs)で測定:

シナリオ

結果

起動 → ウィンドウ準備完了(ウォーム)

中央値 518 ms

1,000,000行のスクロール、600フレーム

0 ドロップフレーム

1,000,000行時のグリッド内DOM要素

< 400(データではなくビューポートに制限)

1,000,000行に対するrun_query、エンドツーエンド

2.1 s

ビルド済みバンドル

6.3 MB 合計

結果はバックプレッシャーとLRUキャッシュを備えたカラムナチャンクとしてストリーミングされ、仮想スクロールは手書きです。ChromiumがRetina解像度で約699,000行で要素の高さを静かにクランプするためです — peekのDOM寸法は行数から導出されません。

ステータスと制限事項

初期段階ですが本物です: 6つのデータベースすべてが接続、イントロスペクト、行のストリーミングを行います。上記のレイアウト、チャット、MCPサーフェス、パッケージシステムは実装されテストされています。pnpm buildはバンドルを生成し、package-mac.mjsはmacOSの.appを生成します。署名付きインストーラはまだありません。書き込みは、読み取り専用パスが完全に安定するまで意図的にスコープ外です。

既知の制限事項(詳細はdocs/PLAN.mddocs/design/にあります):

  • 大規模なクエリは(設計上)約20万行で一時停止し、さらにスクロールするまで続行しません。約200MBのキャッシュから退避された行は、その場で再取得できません — クエリを再実行してください。

  • 固定24pxの行高。大きな値はモーダルで開きます。

  • アクセシビリティはレイアウトレベルでは堅牢(ARIAタブリスト、ロービングタブインデックス、フォーカス管理)ですが、パネル本体の内部では最小限で、実際のスクリーンリーダーでの検証はされていません。

  • 復元されたワークスペースはレイアウト、タブ、エディタテキストを再開しますが、クエリを再実行することはありません。

  • Qdrant: クエリキャンセルなし(APIに存在しないため — ボタンにその旨が表示されます)、テーブルヘッダーのソートはまだできません。

  • 保存された資格情報はOSユーザーアカウントと同じくらいプライベートです。バイナリ署名は最初の公開ビルドで導入されます。

リポジトリレイアウト

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.
    -