ghost-database について
Ghostはエージェントのワークフロー向けのマネージドPostgreSQLサービスです。CLIまたはMCPからデータベースを作成・照会・管理でき、フォークや共有スナップショットで実験やデータの受け渡しを行えます。
主な機能
- 01PostgreSQLデータベースの作成と照会
- 02実験用データベースのフォーク
- 03データベーススナップショットの共有
- 04データベーススキーマの確認
- 05MCP読み取り専用モードの有効化
活用シーン
- 01エージェントのワークフローに永続ストレージを提供
- 02フォーク上でマイグレーションをテスト
- 03サンプルデータや不具合の再現環境を共有
- 04エージェントのデータベース操作を制限
MCP 対応
Ghost MCPサーバーは、作成、フォーク、照会、確認、再開、削除などのデータベース管理ツールをエージェントに公開します。読み取り専用モードではクエリを制限し、破壊的なツールをブロックします。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ timescale/ pg-aiguide --skill ghost-databaseインストール後、Claude Code で/ghost-databaseを入力して読み込まれたか確認します。
詳細
Ghost データベース管理
Ghost は、エージェント向けに設計されたマネージド PostgreSQL サービスです。アカウントは Spaces で構成され、各 Space には、コンピューティング時間のプールを共有するオンデマンドデータベースとフォークを無制限に作成できます(クエリ実行時に15分単位で課金されます)。無料枠は月100時間、ストレージは1TBです。
継続的な稼働が必要な場合は、任意のデータベースを専用インスタンスに昇格できます。専用インスタンスは、個別に課金される常時稼働データベースです。
追加機能:
- CLI と MCP に標準対応: ターミナルや、MCP 互換のエージェントからデータベースを作成・クエリできます
- 即時フォーク: 安全な実験のために、数秒でデータベースの完全なコピーを作成できます
- 共有可能なスナップショット: URL でデータベースのスナップショットを共有できます。リンクを知っている人は誰でも、自分の Space にコピーを作成できます
- MCP 読み取り専用モード:
ghost config set read_only trueを実行すると、すべての MCP ツールが読み取り専用になります。SQL クエリは読み取り専用モードで実行され、破壊的なツール(ghost_delete、ghost_password、ghost_rename)はブロックされます
Web サイト:https://ghost.build
インストール
複数のインストール方法が用意されています。迷った場合は、最初の方法を使用してください。
インストールスクリプト(macOS/Linux/WSL)
curl -fsSL https://install.ghost.build | sh
インストールスクリプト(Windows PowerShell)
irm https://install.ghost.build/install.ps1 | iex
Debian/Ubuntu
curl -s https://packagecloud.io/install/repositories/timescale/ghost/script.deb.sh | sudo os=any dist=any bash
sudo apt-get install ghost
Red Hat/Fedora
curl -s https://packagecloud.io/install/repositories/timescale/ghost/script.rpm.sh | sudo os=rpm_any dist=rpm_any bash
sudo yum install ghost
はじめに
CLI
ghost login # Authenticate with GitHub
ghost create # Create a new database (returns an ID, e.g. abc123)
ghost list # List all databases with their IDs
ghost connect <name-or-id> # Get connection string
MCP
ghost_login() // Authenticate with GitHub
ghost_create({ name: "my-db" }) // → returns { id: "abc123", ... }
ghost_list() // List all databases with their IDs
ghost_connect({ name_or_id: "abc123" }) // Get connection string
主なワークフロー
データベースの作成とクエリ
CLI
# Create a database (returns an ID like abc123)
ghost create my-app-db
# Run SQL directly
ghost sql abc123 "CREATE TABLE users (id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, email TEXT NOT NULL UNIQUE, created_at TIMESTAMPTZ NOT NULL DEFAULT now())"
# Query it
ghost sql abc123 "SELECT * FROM users"
# Open interactive psql session
ghost psql abc123
MCP
ghost_create({ name: "my-app-db" })
// → returns { id: "abc123", ... }
ghost_sql({ name_or_id: "abc123", query: "CREATE TABLE users (id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, email TEXT NOT NULL UNIQUE, created_at TIMESTAMPTZ NOT NULL DEFAULT now())" })
ghost_sql({ name_or_id: "abc123", query: "SELECT * FROM users" })
安全な実験のためのフォーク
フォークを作成すると、同じスキーマとデータを持つデータベースの完全なコピーが数秒で作成されます。フォークを使って、マイグレーションをテストしたり、スキーマ変更を試したり、稼働中のデータベースにリスクを与えずにエージェントに調査させたりできます。専用インスタンスをオンデマンドインスタンスにフォークすることもできます。常時稼働のコンピューティング料金をかけずに、本番環境のコピーを使ってテストする場合に便利です。
フォークを使ったマイグレーションテストのワークフロー全体(実行前後の検証クエリやロールバック計画を含む)については、postgres-database-migration スキルをご覧ください。
CLI
# Fork a database (returns the fork's ID, e.g. def456)
ghost fork abc123 my-app-db-experiment
# Test changes on the fork
ghost sql my-app-db-experiment "ALTER TABLE users ADD COLUMN role TEXT NOT NULL DEFAULT 'user'"
# If it worked: apply to original
ghost sql abc123 "ALTER TABLE users ADD COLUMN role TEXT NOT NULL DEFAULT 'user'"
# If it failed: delete the fork, original is untouched
ghost delete my-app-db-experiment --confirm
MCP
ghost_fork({ name_or_id: "abc123", name: "my-app-db-experiment" })
// → returns { id: "def456", ... }
ghost_sql({ name_or_id: "def456", query: "ALTER TABLE users ADD COLUMN role TEXT NOT NULL DEFAULT 'user'" })
// If it worked: apply to original
ghost_sql({ name_or_id: "abc123", query: "ALTER TABLE users ADD COLUMN role TEXT NOT NULL DEFAULT 'user'" })
// If it failed: delete the fork, original is untouched
ghost_delete({ name_or_id: "def456" })
自動一時停止と再開
コンピューティング時間を節約するため、データベースは30日間アイドル状態が続くと自動的に一時停止します。ストレージは保持されます。必要になったら、一時停止中のデータベースを再開してください。
CLI
ghost resume abc123 --wait
MCP
ghost_resume({ name_or_id: "abc123" })
スキーマの確認
CLI
ghost schema abc123
MCP
ghost_schema({ name_or_id: "abc123" })
すべてのテーブル、カラム、インデックス、制約を、LLM に最適化されたスキーマ表現で返します。
データベースの共有
共有すると、誰でも自分用のコピーを作成できるスナップショットが作成されます。あなたの Space へのアクセス権は必要ありません。サンプルデータセット、バグの再現用データ、またはスターターデータベースの共有に便利です。
エージェントは、データベースをアセットとして受け渡す手段として共有を利用することもできます。エージェントはデータベースを共有して出力として提供し(受け取り側に、自分用のコピーを作成するための URL を渡します)、共有トークンを入力として受け取って、データがあらかじめ用意されたデータベースから作業を始めることもできます。
CLI
# Share a database (returns a share URL)
ghost share abc123
# Share with an expiry
ghost share abc123 --expires 24h
# Recipient creates their own database from the share token
ghost create --from-share <token>
# Manage shares
ghost share list abc123
ghost share revoke <token>
MCP
ghost_share({ name_or_id: "abc123" })
// → returns { share_token: "...", url: "..." }
ghost_share({ name_or_id: "abc123", expires: "24h" })
// Recipient creates their own database from the share token
ghost_create({ from_share: "<token>" })
// Manage shares
ghost_share_list()
ghost_share_revoke({ share_token: "<token>" })
CLI コマンドリファレンス
コマンドとフラグの一覧を確認するには、次を実行してください。
ghost --help
ghost <command> --help # e.g. ghost create --help
MCP 統合
Ghost MCP サーバーを使うと、エージェントは人の介入なしにデータベースのライフサイクルを完全に管理できます。データベースの作成、フォーク、クエリ、確認、再開、削除が可能です。
MCP サーバーのインストール
ghost mcp install
対応:Claude Code、Cursor、Windsurf、Codex、Gemini、VS Code、Kiro。
MCP 読み取り専用モード
エージェントに安全な読み取り専用アクセスを提供するには、MCP サーバーの起動前に読み取り専用モードを有効にしてください。
ghost config set read_only true
これにより、すべての MCP ツールが読み取り専用になります。ghost_sql は読み取り専用モードでクエリを実行し、破壊的なツール(ghost_delete、ghost_password、ghost_rename)は完全にブロックされます。
Ghost を使用するタイミング
適しているケース:
- エージェントのワークフロー向けに永続的な Postgres ストレージが必要な場合
- 各エージェント、あるいはエージェントによる実行ごとに専用のデータベースを用意したい場合
- コストを気にせず、データベースを自由に作成・破棄したい場合
- 安全な実験や移行テストのためにデータベースをフォークしたい場合
- 明確な請求額上限と予測可能な課金が必要な場合(コンピューティング時間は15分単位)
適さないケース:
- ウェブダッシュボードが必要な場合(Ghost は CLI/MCP 専用です)
- Postgres 以外のデータベースが必要な場合