mcpField
D
dbboard

dbboard

ローカル
meta-taro.github.ioデータベース0今日更新

dbboard について

dbboardは、WindowsとmacOS向けのデータベースクライアントで、エージェント用のMCPサーバーも備えています。SQLと非SQLのデータベースに対応し、エージェントのアクセスは標準で読み取り専用です。

主な機能

  1. 01複数データベースの一元管理
  2. 02SQLエディターと編集可能なテーブル
  3. 03接続パスワードをOSのキーチェーンに保存
  4. 04エージェントのアクセスは標準で読み取り専用

活用シーン

  1. 01複数サービスのデータベースを閲覧
  2. 02エージェントに本番データを変更させず調査させる
  3. 03主キーを使って行を編集

MCP 対応

独立した `dbboard-mcp` サーバーが、Claude CodeやClaude DesktopなどのAIエージェントに既存のデータベース接続を公開します。標準では読み取り専用で、書き込みには接続ごとの有効化が必要です。破壊的操作や権限変更は引き続き拒否されます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

dbboard のロゴ

dbboard

⬇️ dbboard をダウンロード — Windows .exe / macOS .dmg

ダウンロード 最新リリース

管理するすべてのデータベースを1つのウィンドウで扱えます。AI エージェントに安全に読み取りを許可する方法も提供します。

Postgres サーバーを開いた dbboard:サイドバーにデータベース、スキーマ、テーブルが表示され、shop データベースで実行した JOIN の結果がグリッドに 180 行表示されています

dbboard は Windows と macOS 向けのデスクトップデータベースクライアントです。Postgres (Neon、Supabase、CockroachDB、Aurora DSQL を含む)、MySQL / MariaDB、Turso / libSQL、Cloudflare D1、Cloud Firestore、MongoDB、Redis 互換ストア (Redis、Valkey、Amazon MemoryDB、Amazon ElastiCache、Upstash)に対応しています。すべてのパスワードを オペレーティングシステムのキーチェーンに保管し、別個の MCP サーバーも同梱しているため、Claude や ほかのエージェントが同じデータベースを変更せずに読み取ることができます。

役立つ場面

データベースが4つの異なるサービスにあります。 本番環境は Neon、 サイドプロジェクトは Supabase、旧システムは踏み台サーバーの背後にある MySQL サーバー、 実験用データは Turso ファイルにあります。4つのウェブコンソールと ターミナルを使い分ける代わりに、すべてを1つのサイドバーで扱えます。踏み台サーバーの背後にある接続には SSH トンネルでアクセスでき、各接続に色とタグを設定すれば、 どの接続に対してステートメントを実行しようとしているかが一目でわかります。

AI エージェントに本番環境を読み取らせたいものの、書き込みは絶対にさせたくありません。 dbboard-mcp は既存の接続を Claude Code または Claude Desktop に渡します。読み取りはキーワードフィルターを通すのではなく、データベース本来の読み取り専用モード (READ ONLY トランザクション、PRAGMA query_only)で実行されるため、UPDATE は サーバーで失敗します。書き込みは、接続ごとに有効にするまで無効のままです。有効にした場合でも、 DROP、TRUNCATE、権限の変更は拒否されます。パスワードがエージェントに渡ることはありません。 → MCP サーバー

1つのログインで十数個のデータベースを参照できます。 Postgres または MySQL の接続を 追加するときにデータベース名を空欄にすると、そのアカウントが開けるすべてのデータベースがサイドバーに表示され、 その下にスキーマとテーブルも表示されます。テーブルをクリックすると、エディターでそのデータベースに対してクエリが実行されます。Run の横にあるラベルで、対象のデータベースを確認できます。

UPDATE を書かずに、誰かが1つの値を修正する必要があります。 テーブルを開き、 セルをダブルクリックして値を入力し、Save changes をクリックします。編集は主キーを使って特定されるため、主キーのないテーブルは推測で処理せず、読み取り専用のままになります。

試してみる

  1. お使いのマシン向けのインストーラーを ダウンロードページ からダウンロードします(Windows x64 / ARM64 .exe、macOS .dmg)。
  2. 開きます。ビルドにはコード署名がないため、初回起動時に Windows SmartScreen と macOS Gatekeeper で確認が求められます。念のため、まずリリースの SHA256SUMS.txt とファイルを照合してください。
  3. Manage → Add connection をクリックし、データベースの種類を選んで サーバー情報を入力します。接続で無効にしない限り、dbboard は TLS を必須とします。

Linux ビルドはまだありません。Linux ではソースからビルドしてください(実行を参照)。

ひと通り見てみましょう

接続を追加します。 ホスト、ポート、ユーザー、パスワードを入力するか、代わりに接続 URL を貼り付けます。パスワードは OS のキーチェーンに保存され、ファイルには保存されません。すべてのデータベースを表示するには、Database は空欄のままにします。

データベース欄を空欄にした、127.0.0.1 の Postgres サーバー用の接続追加フォーム

テーブルを探します。 データベース、スキーマ、テーブルの順に表示されます。テーブルを選択すると、その構造が開きます。列、型、デフォルト値、主キー、双方向の外部キーを確認できます。追加したメモは手元のマシンに保存されます。

列と3つのリレーションシップを表示した、public.orders の構造ビュー

クエリを実行します。 SQL を記述して ⌘/Ctrl + Enter を押します。結果はグリッドに表示され、TSV または CSV としてコピーしたり、ファイルに保存したりできます。最近のクエリは、その接続の履歴に保存されます。

行を変更します。 テーブルのメニューから Select top 100 を選ぶと、編集可能なグリッドが開きます。編集内容は保留状態となり、保存または破棄するまでハイライト表示されます。

保存待ちの在庫数の編集が1つある、products テーブル

明るいテーマも暗いテーマも、お好みの言語で。 テーマはシステム設定に従わせることも、選んだ設定のままにすることもできます。インターフェースは11言語に対応しています。

ダークテーマで表示した同じクエリ

ここに掲載されているスクリーンショットはすべて、実際の接続ではなく、架空のデータを使った別個のプロファイル(scripts/demo-profile)で撮影されています(ADR-0098)。

ステータス

1.0 より前の段階です。フェーズ1、3、6、およびフェーズ4の AI アシスタントは完了しており、dbboard は外部の AI エージェント向けのMCP サーバー(dbboard-mcp)としても機能するようになりました(ADR-0046)。接続を有効にしない限り読み取り専用であり、権限の変更、TRUNCATE、DROP には対応しません(ADR-0087)。Turso、Cloudflare D1、CockroachDB、Neon、Supabase、AWS Aurora DSQL、MySQL / MariaDB、 Cloud Firestore、MongoDB、Redis 互換の各アダプターは、ローカル HTTP バックエンド経由で提供されます。リリース済みの内容は CHANGELOG.md、次のフェーズはdocs/roadmap.mdをご覧ください。

クライアントは、共有 Rust コアクレートを基盤とする Tauri 2 + SvelteKit です。置き換えられた egui クライアントは v0.4.0 まで提供され、ADR-0089 により廃止されました。v0.4.0 までのリリースには、引き続きそのバイナリが含まれています。

これはデスクトップ版です。ウェブ版はmeta-taro/dbboard-web(Nuxt + NestJS)にあります。両者はコンセプトと機能の同等性を目指していますが、コードベースは独立しています。

ダウンロード

最新リリースの Windows インストーラー(.exe)と macOS ディスクイメージ(.dmg)は、GitHub Pages の**ダウンロードページ、またはリリースページから直接入手できます。すべてのリリースには SHA256SUMS.txt が含まれています。実行する前に、ダウンロードしたファイルを検証してください。バイナリはコード署名されておらず、今後も署名されません**。証明書の購入を定期的に行う予定がないためです(ADR-0106)。そのため、Windows SmartScreen / macOS Gatekeeper は、リリースのたびに初回起動時の警告を表示します。代わりにチェックサムを検証してください。

目標

  • パフォーマンスを最優先 — Rust コアを採用し、UI はバンドルされたブラウザーランタイムではなく、その上で動作する WebView シェルです。
  • ローカルを最優先 — 動作に必要な外部サービスはありません。
  • モジュール型 — データベース層と AI 層は分離されています。
  • 拡張可能 — トレイトを通じて、新しいデータベースや AI プロバイダーを追加できます。

対応データベース(初期対象範囲)

  • Turso / libSQL(SQLite ベースの分散データベース)
  • Cloudflare D1(SQLite ベース、REST API)
  • CockroachDB(分散 SQL、PostgreSQL ワイヤープロトコル)
  • Neon(マネージド PostgreSQL)
  • Supabase(マネージド PostgreSQL)
  • AWS Aurora DSQL(マネージド PostgreSQL ワイヤープロトコル)
  • MySQL / MariaDB(mysql://…、独自の SQL 方言)
  • Cloud Firestore(ドキュメントストア、REST API — 読み取り専用)
  • MongoDB(ドキュメントストア、公式ドライバー — 読み取り専用)
  • Redis 互換ストア:Redis、Valkey、Amazon MemoryDB、Amazon ElastiCache、Upstash(キーと値、RESP — 読み取り専用)

10 種類すべてのアダプターが現在利用できます。4 種類の pg-wire 形式は、汎用の dbboard-postgres アダプター(sqlx + tls-rustls-ring)を共有しています。異なるのは、DatabaseAdapter::id() が公開するランタイムラベル("postgres"、"neon"、"supabase"、"aurora-dsql")だけです。これにより、接続ピッカーと履歴レコードで各接続を正確に識別できます。ADR-0018(Neon)、ADR-0019(Supabase)、ADR-0021(Aurora DSQL)を参照してください。

MySQL / MariaDB は、まったく異なる SQL 方言(バッククォートによる識別子、バックスラッシュによる文字列エスケープ、X'…' 形式の BLOB、DOUBLE での NaN / ±Inf 非対応)を使用する最初のエンジンです。sqlx の MySQL ドライバーを使う独自の dbboard-mysql アダプターと、独立した SqlDialect::MySql を備えています。ADR-0068を参照してください。

Cloud Firestore は、SQL をまったく使わない初めてのアダプターです。クエリは JSON で記述する Firestore の StructuredQuery です。Google のドキュメントに示されているものと同じオブジェクトで、変換レイヤーも独自のクエリ言語もありません。ネストされたドキュメントは Value::Json セルで返されます。REST API ではエンドポイントが読み取りと書き込みで分かれており、書き込み URL を構築できるコードがクレートに含まれていないため、設計上読み取り専用です。サービスアカウントキー(OS のキーチェーンに保存され、connections.toml には保存されません)を使って接続するか、認証情報なしでローカルエミュレーターに接続できます。ADR-0091、ADR-0093、ADR-0094を参照してください。

MongoDB は 2 番目の非 SQL アダプターであり、異なる保証が必要でした。クエリは JSON で記述するコマンドドキュメントです。たとえば {"find": "orders", "limit": 100} は、mongosh のドキュメントに示されているものと同じオブジェクトです。すべての MongoDB コマンドは単一の runCommand 経路を通るため、Firestore のように構造上読み取り専用にすることはできません。そのため、許可するコマンドのリストと、コマンドごとに許可するオプションのリストを設けています。これにより、{"find": …, "insert": …} は、記憶された動詞が原因ではなく、find が受け付けないオプションを含んでいるため拒否されます。$out と $merge はあらゆる深さまで再帰的に検索され、サーバー側 JavaScript は一切拒否されます。接続 URI 全体が秘密情報であり、OS のキーチェーンに保存されます。URI で複数のホストを指定でき、mongodb+srv:// は DNS からレプリカセットを検出するため、単一ホストの転送ではトンネルの対象外のメンバーにドライバーがフェイルオーバーしてしまいます。そのため、MongoDB 接続を SSH 経由でトンネルすることはできません。ADR-0095とADR-0096を参照してください。 Redis互換ストアは3番目であり、テーブルをまったく持たない最初のストアです。 Redis、Valkey、Amazon MemoryDB、Amazon ElastiCache、Upstashはいずれも RESPを使用するため、1つのアダプターを共有し、異なるのはラベルとフォームの デフォルト値だけです。クエリには、redis-cliと同じように1行のコマンドを 指定します。たとえば、HGETALL user:1です。読み取り専用はここでも、 コマンドとその引数の許可リストによって実現されています。書き込み、スクリプト、 ブロッキング、pub/subの各コマンドは送信前に拒否され、サーバーをブロックする KEYSも同様です。SCANは同じ結果をページ単位で返すため、dbboardは クラスターの全ノードを対象に、求められたキーが見つかるまでカーソルをたどります。 ハッシュ、セット、リスト、ソート済みセット全体を返すコマンドは、実行前にサイズを 確認します。サイドバーにはキーのプレフィックス(user:*)が表示されます。 MemoryDBは常にクラスター モードかつTLSで動作します。プライベートネットワーク内の ストアにはSSH踏み台サーバー経由で接続します。クラスターが指定する各ノードを個別に 転送し、URLにはTLS証明書に記載されたホスト名を保持します。 ADR-0166とADR-0167を参照してください。

Aurora DSQLには2つ目の接続方式、aurora-dsql-iamもあります (ADR-0036)。トークンが約15分で期限切れになる手動指定のURLを 使う代わりに、dbboardは保存済みのAWS認証情報からSigV4 IAMトークンを自ら生成します。 これは24時間365日稼働させる必要がある接続向けです。バックグラウンドタスクが トークンを再生成し、期限切れ前に新しく認証されたプールへ切り替えるため (ADR-0037、段階B)、手動で再接続しなくても、放置された接続は Aurora DSQLのアイドル時の再起動を乗り越えられます。

SupabaseのREST/authレイヤーは、今後のADRで扱うため、意図的に先送りされています。 現段階では、すべてのpg-wire系統で同じpostgres://… URLの仕様を使用します (aurora-dsql-iam方式は例外で、URLではなくAWS認証情報を保存します)。

バージョンごとの正式なサポートマトリックス(Tier 1/Tier 2/ベストエフォート)は docs/compatibility.mdにあります。 バージョン管理とDBサポート方針はADR-0011で定義されています。

アーキテクチャ

Cargoワークスペースとして構成された、3つの主要レイヤーです。

  • UIレイヤー — SvelteKitフロントエンドを備えたTauri 2シェル(apps/desktop)で、 Tauri IPC経由でコアクレートを呼び出します。
  • データベースアダプターレイヤー — データベース固有のロジックを単一の トレイトの背後に抽象化し、複数のプロバイダーを接続できるようにします。
  • AI統合レイヤー(オプション) — プラグイン可能なプロバイダー(Claude、 OpenAI、ローカルLLM)。コアDB操作から分離されています。

クレートの全体構成と依存関係のルールについては、 docs/architecture.mdを参照してください。

要件

  • Rust 1.98.0。このバージョンはrust-toolchain.tomlで固定されているため、 このチェックアウト内ではrustupがインストールします。手動で環境を構築する場合も 同じバージョンが必要です。安定版を追従するのではなく、意図的にバージョンを上げます。 clippy -D warningsにより、リント設定がビルドの一部となるためです(ADR-0139)。
  • cargo(Rustに同梱)
  • libsqlのネイティブ依存関係に必要なC/C++ツールチェーン:
    • Windows:MSVC Build Tools
    • macOS:Xcode Command Line Tools
    • Linux:build-essential

セットアップ

git clone https://github.com/meta-taro/dbboard.git
cd dbboard
sh scripts/cargo-test-serialised.sh

次に、Gitフック(pre-commit、commit-msg、pre-push)をインストールします。

sh scripts/install-hooks.sh

これらはローカルでの利便性のためのものです。どちらの場合も、CIはすべての プッシュとプルリクエストで同じチェックを実行します。フックを編集した後は、 インストーラーを再実行してください。

実行

cd apps/desktop
pnpm install        # first time only
pnpm tauri dev

フロントエンドがデータベースに直接アクセスすることはありません。Tauriコマンドを 呼び出して、MCPサーバーが公開するものと同じMcpServiceを利用します。そのため、 エンジンによって強制される読み取り専用処理の実装は1つだけです。ネットワーク インターフェースで待ち受けるものはありません。(crates/dbboard-serverの ループバックHTTPバックエンドは、Web版で実装される契約を実行可能な形で示すものです。 詳細はdocs/api-contract.mdを参照してください。クライアントから 起動されることはなくなりました。)

デフォルトではアプリがインメモリのTurso/libSQLデータベースを開くため、設定なしで 実行できます。バックエンドは次の優先順位で選択されます。

  1. 以下に記載されている環境変数 (DBBOARD_AURORA_DSQL_URL > DBBOARD_NEON_URL > DBBOARD_SUPABASE_URL > DBBOARD_PG_URL > DBBOARD_MYSQL_URL > DBBOARD_D1_* > DBBOARD_FIRESTORE_PROJECT_ID > DBBOARD_MONGODB_URI > DBBOARD_TURSO_PATH)。4 種類の pg-wire フレーバー間では 優先順位は アルファベット順です。フレーバー別の変数を同時に 2 つ設定することは通常ありませんが、 優先順位は明確に定義されています。
  2. DBBOARD_CONNECTION=<id> は、OS のキーチェーンに保存されるローカル接続ストアである connections.toml に照合されます(ADR-0013)。
  3. connections.toml にエントリーがちょうど 1 つある場合は、その接続が自動的に選択されます。
  4. それ以外の場合は、メモリ内の Turso/libSQL データベースが使用されます。

接続ストアのスキーマと OS ごとのファイルの保存場所については、 docs/connections.md を参照してください。

登録すると、(トップバーにある)Connections ウィンドウからエントリーを 追加/編集/削除したり、実行中のプロセスでアクティブな接続を切り替えたりできます。行ごとの Connect ボタンを押すと、アプリを再起動せずにバックエンドがその場で切り替わります。 処理中のリクエストは意図的に旧バックエンドで完了し、新しいリクエストには新しいバックエンドが 使用されます。切り替えの動作については ADR-0020 を参照してください。

同じウィンドウから、すべての接続をパスフレーズで暗号化された .dbbx バンドル(age scrypt + ChaCha20-Poly1305)に Export できます。このバンドルには 接続メタデータとシークレットの両方が含まれ、別のマシンで Import できます。 キーチェーンに手動で登録することなく、設定一式を 1 つのファイルで移行できます。 ID/参照が競合する場合、インポートは該当項目をスキップして結果を報告します。 ADR-0038 と docs/connections.md を参照してください。

踏み台サーバーの localhost でのみリッスンするデータベースには、SSH tunnel を使って接続できます。 デスクトップの接続フォームには、踏み台ホスト/ポート/ユーザー、鍵認証またはパスワード認証、 および必須のサーバーホスト鍵ピン(フィンガープリントまたは known_hosts)を設定する SSH tunnel セクションがあります(Postgres 系、MySQL、Redis 互換ストアが対象です)。 dbboard は純粋な Rust 製のローカルポートフォワード(russh)を開き、接続する前に接続 URL を トンネル経由に書き換えます。鍵のパスフレーズ/SSH パスワードはキーチェーンにのみ保存されます。 ADR-0069 と docs/connections.md を参照してください。

トップバーには Language / 言語 メニューがあり、提供されている 11 のロケールを それぞれのネイティブ名で表示します。いずれかを選択すると、UI の言語がその場で切り替わります。 DBBOARD_LANG 環境変数は引き続き起動時のデフォルトを決めるもので、実行中の切り替えによる 変更はありません。ADR-0022 を参照してください。

Help メニューには実行中のバージョンが表示され、新しいリリースが公開されている場合は、 リリースノートとともに Update available の通知が表示されます。これは dbboard が独自に行う 唯一のネットワーク呼び出しです。起動時に一度だけ、各リリースとともに公開される署名済みの latest.json をベストエフォートで確認し、実行中のバージョンと比較します。インストールするかどうかは ユーザーが選択できます。ダウンロードは、置き換えが行われる前にリリース署名鍵を使って検証されます (ADR-0067)。オフライン時またはエラー発生時は通知されません。 DBBOARD_NO_UPDATE_CHECK に空でない値を設定すると、この確認を完全に無効にできます。 ADR-0040 を参照してください。 クエリツールバーの Backup… ボタンを押すと、アクティブな接続を単一の自己完結型 .sql ファイルにダンプします。スキーマとデータを含み、ソースエンジン固有の方言で出力します(Turso/D1 の SQLite ファミリーでは DDL をそのまま出力し、Neon、Supabase、Aurora DSQL を含む Postgres ファミリーでは DDL を再構築します)。ダンプでは、キーセットページネーションを使って INSERT バッチをディスクに直接ストリーミングするため、大規模なデータベースでもメモリにバッファーされることはありません。開始前に事前チェックで行数を数え、データベースがしきい値(デフォルトでは 500k 行。Backup メニューから変更でき、再起動後も保持されます)を超えている場合に警告するため、巨大なダンプを確認なしで開始してしまうことがありません。実行中はウィンドウにテーブル/行の進捗とパーセンテージバーが表示され、いつでも Cancel できます(ファイルには途中までのダンプが保持されます)。ADR-0049 と ADR-0050(設定可能なしきい値)を参照してください。

同じツールバーの Restore… ボタンを押すと、.sql ファイルをアクティブな接続に適用します。これは前述のバックアップの読み込み側で、外部のスクリプト(pg_dump、sqlite3 .dump)にも対応しています。同じファミリーのエンジン(Turso/D1 には SQLite、Neon、Supabase、Aurora DSQL には Postgres)でスクリプト全体を実行し、エンジンが対応している場合はトランザクション内でステートメントを適用します(Aurora DSQL ではステートメントごとの適用にフォールバックします)。安全性を保つため、リストア先は空のデータベースに限られます。すでにテーブルがある接続に読み込もうとすると、マージや差分処理は行わず、確認が求められます。ウィンドウにはステートメントごとの進捗が表示され、実行中に Cancel できます。サマリーには、適用されたスキーマおよびデータのステートメント数と、失敗したステートメントが表示されます。ADR-0051 を参照してください。

以下の例では、1 回の実行に使う環境変数を設定しています。作業ディレクトリが apps/desktop(pnpm tauri dev を実行する場所)であることを前提としています。設定を保持したい場合は、connections.toml に記述するのがおすすめです。docs/connections.md を参照してください。

ローカル Turso/libSQL(デフォルト)
変数用途デフォルト
DBBOARD_TURSO_PATHlibSQL ファイルのパス、または :memory::memory:
Cloudflare D1

Turso の代わりに D1 に接続するには、以下の 3 つすべてを設定してください。

変数用途
DBBOARD_D1_ACCOUNT_IDCloudflare アカウント ID
DBBOARD_D1_DATABASE_IDD1 データベース ID(wrangler d1 info <name>)
DBBOARD_D1_TOKEND1 Edit 権限を持つ API トークン
DBBOARD_D1_BASE_URL(省略可) API ルートの上書き。デフォルトは https://api.cloudflare.com/client/v4 です

アカウント ID とデータベース ID は、Cloudflare ダッシュボード(Workers & Pages → D1)または wrangler d1 info <database-name> で確認できます。My Profile → API Tokens で、D1 の読み取り/書き込み権限を持つ API トークンを作成してください。必須の 3 つの変数のいずれかが設定されていない場合、アプリはローカル Turso のデフォルトにフォールバックします。

DBBOARD_D1_ACCOUNT_ID=... DBBOARD_D1_DATABASE_ID=... DBBOARD_D1_TOKEN=... \
  pnpm tauri dev
Cloud Firestore

プロジェクト ID だけで Firestore が選択されます。それ以外はすべて省略可能なので、エミュレーターは設定なしですぐに使えます。

変数用途
DBBOARD_FIRESTORE_PROJECT_IDGoogle Cloud プロジェクト ID。Firestore バックエンドを選択します。
DBBOARD_FIRESTORE_SERVICE_ACCOUNT(省略可) サービスアカウントキー。JSON ファイルの内容全体を指定します。ローカルエミュレーターに接続する場合は省略してください。エミュレーターはすべてのリクエストを owner として認証します。
DBBOARD_FIRESTORE_DATABASE_ID(省略可) 名前付きデータベース。デフォルトはプロジェクトの (default) です。
DBBOARD_FIRESTORE_BASE_URL(省略可) API ルートの上書き。デフォルトは https://firestore.googleapis.com です。エミュレーターのアドレスはここに指定します。

サービスアカウントキーが平文 HTTP 経由で送信されることはありません。キーが設定されている場合、http:// のベース URL は明示的に拒否され、リダイレクトによって制限を回避できないよう、クライアントは https_only で構築されます。エミュレーターは漏えいする認証情報を発行しないため、この制限の対象外です。

# The local emulator — no credential at all.
DBBOARD_FIRESTORE_PROJECT_ID=demo-project \
DBBOARD_FIRESTORE_BASE_URL=http://127.0.0.1:8080 \
  pnpm tauri dev

# A real project. The key is a secret: keep it out of version control.
DBBOARD_FIRESTORE_PROJECT_ID=my-project \
DBBOARD_FIRESTORE_SERVICE_ACCOUNT="$(cat key.json)" \
  pnpm tauri dev

クエリは SQL ではなく、JSON 形式の Firestore StructuredQuery オブジェクトです。サイドバーの Select top 100 で生成できます。

{
  "from": [{ "collectionId": "users" }],
  "limit": 100
}
MongoDB
変数用途
DBBOARD_MONGODB_URI接続 URI 全体。mongodb://… または mongodb+srv://… を指定します。MongoDB バックエンドを選択します。パスワードは URI のオーソリティに含まれるため、この変数自体をシークレットとして扱ってください。
DBBOARD_MONGODB_DATABASE(任意) データベース名です。URI のパスにすでに指定されている場合は省略してください。
# A local server started with:
#   docker run -d --rm -p 27017:27017 mongo:8
DBBOARD_MONGODB_URI=mongodb://127.0.0.1:27017 DBBOARD_MONGODB_DATABASE=test   pnpm tauri dev

MongoDB バックエンドでは DBBOARD_SSH_* は無視されず、拒否されます。URI には複数のホストを列挙でき、mongodb+srv:// は DNS からレプリカセットを検出するため、単一ホストへの転送では一見動作しても、トンネルが接続していないメンバーへのフェイルオーバー時に失敗する可能性があります。

クエリは SQL ではなく JSON のコマンドドキュメントです。サイドバーの Select top 100 で生成できます。

{ "find": "users", "limit": 100 }

読み取りで許可されるのは aggregate、count、distinct、find、listCollections、listIndexes です。$out、$merge、$where、$function、$accumulator を含む読み取りなど、それ以外はすべてサーバーに到達する前に拒否されます。

CockroachDB / PostgreSQL

単一の接続文字列を設定すると、dbboard-postgres アダプター経由で CockroachDB または汎用の PostgreSQL ワイヤープロトコル対応データベース(標準の Postgres、セルフホスト)に接続できます。

変数用途
DBBOARD_PG_URL接続文字列全体。例:postgresql://user:pass@host:26257/db?sslmode=verify-full

CockroachDB Cloud の場合は、CockroachDB Cloud Console のクラスターにある Connect ダイアログから接続文字列をコピーしてください(Basic 無料プランで利用できます)。cockroach start-single-node で起動したセルフホストノードの場合は、その postgresql://… 文字列を使用してください。デフォルトの SQL ポートは 26257 です。CockroachDB では TLS が必須のため、sslmode=verify-full(またはデプロイ環境で指定されているモード)を維持してください。

DBBOARD_PG_URL='postgresql://user:pass@host:26257/db?sslmode=verify-full' \
  pnpm tauri dev

Neon、Supabase、AWS Aurora DSQL では同じアダプターを使用しますが、実行時には接続が区別してラベル付けされます("postgres" ではなく "neon"、"supabase"、"aurora-dsql")。これにより、選択メニューや履歴レコードで区別できます。それぞれの種類には専用の環境変数があり、いずれも DBBOARD_PG_URL より優先されます。

変数用途
DBBOARD_NEON_URLNeon の接続文字列です。TLS が必須です。sslmode=require(またはそれより強い設定)を指定してください。ADR-0018 を参照してください。
DBBOARD_SUPABASE_URLSupabase の接続文字列です。TLS が必須です。直接接続の :5432 エンドポイントと、トランザクションプーラーの :6543 エンドポイントの両方が利用できます。接続先は URL によって決まります。ADR-0019 を参照してください。
DBBOARD_AURORA_DSQL_URLAurora DSQL の接続文字列です。TLS が必須です。パスワード部分には、有効期間の短い新しい IAM 認証トークン(TTL 約 15 分)が必要です。トークンの有効期限が切れていると、起動時に接続エラーが発生します。ADR-0021 を参照してください。

これら 4 つの pg-wire 変数には認証情報が含まれます。バージョン管理に含めないでください(gitignore 対象の .env を使用してください)。アプリがこれらの値をログに記録することはありません。

DBBOARD_NEON_URL='postgres://user:pass@ep-…neon.tech/db?sslmode=require' \
  pnpm tauri dev

DBBOARD_SUPABASE_URL='postgres://user:pass@db.<ref>.supabase.co:5432/postgres?sslmode=require' \
  pnpm tauri dev

# Aurora DSQL: the password segment is a short-lived IAM token.
DBBOARD_AURORA_DSQL_URL='postgres://admin:<IAM-token>@<cluster>.dsql.<region>.on.aws:5432/postgres?sslmode=require' \
  pnpm tauri dev

Aurora DSQL の IAM トークンは約 15 分で有効期限が切れるため、上記の環境変数を使う方法は短時間のセッションに適しています。長時間または 24 時間 365 日の接続には、代わりに aurora-dsql-iam 接続種別を使用してください。AWS 認証情報は connections.toml と OS のキーチェーンに保存され、dbboard がトークンを自動生成します。環境変数ではなく接続ストアで設定します。docs/connections.md と ADR-0036 を参照してください。

AI 連携(オプション)

dbboard には、SQL を説明し、アクティブな接続のスキーマに基づいてクエリを提案できる、オプションの AI パネルが用意されています。プロバイダーが設定されていない場合、パネルとその表示を切り替えるメニュー項目はどちらも非表示になります。つまり、適切に機能を縮退させた結果は「機能が存在しない状態」です(ADR-0023 Decision 11 を参照)。

接続済みの場合、AI アシスタントのメニュー項目(上部バーの Connections と Language の間)を選択すると、2 つのモードを備えたウィンドウが開きます。SQL を説明(SQL を貼り付けると、自然言語で説明します)と、SQL を提案(質問を説明すると、アクティブな接続のテーブル一覧をコンテキストとして SQL のドラフトを生成します)です。応答はインラインで表示され、エラーには翻訳済みのプレフィックスが付くため、429 エラーやネットワーク障害が、成功したものの応答が空だった場合と同じように見えることはありません。AI 呼び出しは dbboard-web の HTTP コントラクトを経由せず、デスクトップバイナリのワーカースレッドから reqwest を通じてプロバイダーに直接送信されます。

ストリーミング機能を備えていることを示すプロバイダーでは、応答が段階的にストリーミングされます(接続済みのプロバイダーは両方とも対応しています。Anthropic プロバイダーは ADR-0026、OpenAI プロバイダーは ADR-0052 を参照)。モデルの生成に合わせてテキストがチャンクごとに表示され、累積使用量のチャンクに基づいて Tokens: N in / M out のメーターが更新されます。リクエストの実行中は、送信ボタンが キャンセルに置き換わります。クリックすると実行中のストリームを破棄し(HTTP 接続を閉じてサーバーによる生成を停止します)、すでに表示された途中までのテキストはそのまま残し、結果を示す控えめな キャンセルしました。 という行が表示されます。同じキャンセルボタンは、ストリーミングに対応していないプロバイダーで使われるアトミックパスでも機能します。

提案モードでは、アクティブなデータベースアダプターがテーブルの説明に対応している場合、列の詳細を含めるチェックボックスが表示されます(同梱されている 3 つのアダプターはすべて対応しています。ADR-0028 を参照)。チェックを入れると、送信時にまずライブ接続から各テーブルの列と主キーを取得し、そのスキーマをプロンプトに含めます。これにより、ドラフトで列名が幻覚されることを大幅に減らせます。トレードオフはプロンプトのサイズです。スキーマ全体がプロバイダーのコンテキストウィンドウとトークン料金に加算されるため、トークンメーターを確認してください。大きなスキーマや従量課金制のキーを使う場合は、チェックボックスをオフのままにしてください(デフォルトではオフで、セッションごとにリセットされます)。一部のテーブルの説明に失敗した場合は、その件数を警告で表示し、残りのテーブルを使って提案を続行します。

現在接続済みのプロバイダーは、Anthropic Messages API と OpenAI Chat Completions API の 2 つです(ADR-0052、デフォルトモデルは gpt-4o)。どちらも以下の 2 つの方法のいずれかで設定でき、記載順に評価され、最初に解決された方法が使われます。

1. ai-providers.toml + OS キーチェーン(推奨)

ユーザーごとの ai-providers.toml に 1 つ以上のエントリを追加します。このファイルは connections.toml の隣に置きます(パス:接続ストアと同じ OS 設定ディレクトリ)。API キーは OS キーチェーン(Windows Credential Manager、macOS Keychain、Linux Secret Service)に dbboard.ai.<id>.api_key という名前で保存されます。TOML ファイル自体にはキーリングへの参照が記録され、キーそのものが記録されることはありません。

ランタイムストアは、設定 UI で変更するものと同じです(AI プロバイダーメニューから開きます。ADR-0025 の slice b を参照)。エントリを追加するとキーがキーチェーンに登録され、「使用」を選ぶとプロセス内のプロバイダーが再構築されて active_id がアトミックに更新され、「削除」を選ぶとエントリとそのシークレットが一緒に削除されます。手動で編集した TOML も使用できます。ウィンドウを開かずに新しいマシンを設定する場合に便利です。ただし、指定した keyring_api_key_ref に対応するエントリがキーチェーンに存在している必要があります。

kind 識別子は各 [[providers]] エントリ内にインラインで指定します("anthropic" または "openai")。model は省略可能で、省略するとプロバイダーのデフォルトが使われます。

# ai-providers.toml
version = 1
active_id = "primary"

[[providers]]
id = "primary"
name = "Anthropic"
kind = "anthropic"
model = "claude-sonnet-5"             # optional; omitted = default
keyring_api_key_ref = "dbboard.ai.primary.api_key"

[[providers]]
id = "gpt"
name = "ChatGPT"
kind = "openai"
model = "gpt-4o"                      # optional; omitted = gpt-4o
keyring_api_key_ref = "dbboard.ai.gpt.api_key"

以下の環境変数を使う方法は、引き続き Anthropic 専用です。OpenAI は ai-providers.toml(またはAI プロバイダー設定ウィンドウ)で設定してください。

2. 環境変数(後方互換性/CI)
変数用途デフォルト
DBBOARD_ANTHROPIC_API_KEYAnthropic コンソールで取得した API キーです。ai-providers.toml に触れることなく、パネルを設定します。(未設定=TOML にフォールバック)
DBBOARD_ANTHROPIC_MODELモデル識別子の上書きです。claude-sonnet-5

DBBOARD_ANTHROPIC_API_KEY が設定されている場合、ai-providers.toml よりも常に優先されます。これにより、ヘッドレス環境/CI で従来の Stage 1 の設定を維持し、すでに環境変数をエクスポートしているユーザーを驚かせずに済みます。TOML の設定を使うには、環境変数の設定を解除してください。

DBBOARD_ANTHROPIC_API_KEY='sk-ant-…' pnpm tauri dev

どちらの方法でもプロバイダーを解決できない場合(または、キーチェーンのエントリーがない、構築エラーが発生するなど、いずれかの分岐で失敗した場合)、バイナリは標準エラーにログを出力して、AI なしで続行します。パネルとメニュー項目は非表示になります。キーが Debug 出力や history.jsonl に現れることはありません。プロセスの実行中のみ、メモリ上に保持されます。

完了した AI 呼び出しはすべて(ストリーミングまたは一括、ok/error/cancelled)、SQL 履歴とともに history.jsonl に kind: "ai" レコードとして記録されます(ADR-0027 に基づくスキーマ v:2)。プロンプトと応答はそのまま書き込まれます。v:1 のクエリレコードに含まれる SQL テキストと同じ方針です。保存時の保護も同じで、ADR-0024 に基づき、Unix では 0o600、Windows ではユーザーのみの DACL が設定されます。共有マシンでは、AI パネルに入力した内容(フォローアップでのスキーマコンテキストや、Explain リクエストに貼り付けたシークレットを含む)が、ユーザーアカウントの配下にあるディスクへ、編集されずに保存されることにご注意ください。

残る延期中の Stage 2 機能(完全な DDL スキーマスナップショットと関数呼び出し — Group D)は、ADR-0023 §9 で追跡されています。Groups A/B/C は完了しています(ADR-0025/ADR-0026/ADR-0027)。

MCP サーバー

AI クライアントであるだけでなく、dbboard はヘッドレスの MCP サーバー(dbboard-mcp)としても提供されます。dbboard がすでに設定しているデータベースを、外部の AI エージェント(Claude Desktop、Claude Code)に stdio 経由で小規模なツール群として提供します。GUI とまったく同じ connections.toml と OS キーチェーンの仕組みを再利用するため、認証情報を保管する場所が新たに増えることはありません。詳細な仕様については、ADR-0046 とクレートの README(crates/dbboard-mcp/README.md)をご覧ください。

固定のツールが 22 個あります。7 個はデータベースを読み取ります。list_connections、list_tables、describe_table、search_schema(ADR-0053)、list_relationships(ADR-0054)、run_read_query、および get_annotations(dbboard のローカルメモ、ADR-0045)です。これらに run_write と dump_database(ADR-0087)が加わります。7 個はデータベースにまったくアクセスせず、代わりにウィンドウを操作します。get_ui_locale/set_ui_locale はアプリの表示言語を変更し(ADR-0107)、capture_window は実行中のウィンドウの PNG を返し(ADR-0108)、set_editor_sql/run_query/open_ai_panel/open_ai_settings はウィンドウを操作します(ADR-0109)。これにより、インターフェースの表示に関する主張を、単に述べるのではなく、設定し、実行し、確認できます。この 7 個は、目の前の画面を操作します。取得系の 2 個を除き、dbboard が実行されていない場合はすべて失敗します。さらに 2 個は、どこにもアクセスしません。get_server_info は応答しているビルドを示します(ADR-0116)。このバイナリは手動でインストールされるため、そうしないと古いバイナリと壊れたバイナリを区別できないからです。about は製品そのものについて説明します。用途、対応するエンジン、リリースごとの変更内容を示し、変更履歴はビルドにコンパイルされるため、応答内容は実際に返答しているバイナリを説明します(ADR-0154)。 最後の4つは接続リスト自体に対する操作で、データベースを開くものはありません。add_connection は接続を connections.toml に登録するため、エージェントがセットアップしたデータベースを、人にパスを再入力してもらわずに使えるようになります。ただし、キーチェーンに何も保存しない種類、つまりローカルの SQLite/libSQL ファイルと Firestore エミュレーターに限ります(ADR-0134)。パスワード、トークン、キーを必要とするものはすべて、資格情報が送信される前にツール自身の説明によって拒否されます。set_connection_mark と move_connection はリストに色を付け、並べ替えます(ADR-0136)。これは人が20回行う作業としては不適切ですが、エージェントが1回行う作業としては適切です。export_connections は接続を暗号化バンドルにまとめて別のマシンに移せるようにし、パスフレーズを自動生成して、返却するのではなくこのマシンのキーチェーンに保存します。また、connections.toml でファイル用のディレクトリを人が指定するまでは、完全に拒否されます(ADR-0140)。 エージェントを安心して利用できるのは、次のセキュリティ対策があるためです。

  • シークレットがネットワーク上に送信されることはありません。 シリアライズされる接続メタデータは { id, name, kind } のみです。URL、トークン、キーリングへの参照は含まれず、エラーメッセージにも埋め込まれません。
  • 読み取り専用は文字列照合ではなく、エンジンによって強制されます。 Postgres-wire では各ステートメントを BEGIN TRANSACTION READ ONLY 内で実行し、libSQL/Turso では PRAGMA query_only を使用し、D1 では AST を分類します。そのため、UPDATE、DDL、複数ステートメントのバッチ、SELECT … FOR UPDATE はすべて実行元で失敗します。
  • 書き込みは、人が接続ごとに有効にするまで無効です (connections.toml の mcp_write、または 接続 → 編集 → AI エージェントのアクセス)。有効にした場合でも、run_write が受け付けるのは許可リストにあるステートメント(INSERT / UPDATE / DELETE / MERGE、CREATE TABLE / VIEW / INDEX / SCHEMA、ALTER TABLE)のみです。AST に基づいて分類され、判定できない場合は拒否されます。また、GRANT / REVOKE / DENY、ユーザーおよびロールの DDL、SET PASSWORD、TRUNCATE、あらゆる対象への DROP は、フラグの設定にかかわらず拒否されます(ADR-0087)。
  • エクスポートは、人が保存先ディレクトリを指定するまで無効です (connections.toml の [mcp_export])。また、暗号化に使うパスフレーズは dbboard が生成し、このマシンのキーチェーンに保存するもので、返却されることはありません。ツールの結果はエージェントのトランスクリプトに平文で記録されるため、バンドルとそのキーを一緒に渡してはいけません(ADR-0140)。
  • 結果セットには上限があります。 run_read_query は max_rows を上限の1000件(既定値は200件)に制限し、truncated フラグを設定します。
  • 標準出力は厳守されます。 JSON-RPC フレームは標準出力を使用し、ログはすべて標準エラー出力に送られます(RUST_LOG、既定値は info)。

最新リリースから入手できます — dbboard-mcp-windows-x86_64.exe、dbboard-mcp-windows-aarch64.exe(Windows on ARM)、または dbboard-mcp-macos-universal をダウンロードしてください。ランタイム依存関係のない単一の実行ファイルで、デスクトップアプリとは別のダウンロードです。ダウンロードページのインストーラーには含まれていません。エージェントの設定にパスを指定するため、安定した場所に配置してください。

# Windows (PowerShell)
mkdir -Force "$env:LOCALAPPDATA\dbboard"
Move-Item -Force ~\Downloads\dbboard-mcp-windows-x86_64.exe "$env:LOCALAPPDATA\dbboard\dbboard-mcp.exe"
# macOS
mkdir -p ~/.local/bin
mv ~/Downloads/dbboard-mcp-macos-universal ~/.local/bin/dbboard-mcp
chmod +x ~/.local/bin/dbboard-mcp
xattr -d com.apple.quarantine ~/.local/bin/dbboard-mcp   # Gatekeeper, unsigned build

Claude Code には、次のコマンド1つで登録できます。--scope user を指定すると、このマシン上のすべてのプロジェクトで利用できるようになります。

# macOS / Linux
claude mcp add dbboard --scope user -- "$HOME/.local/bin/dbboard-mcp"
# Windows (PowerShell)
claude mcp add dbboard --scope user -- "$env:LOCALAPPDATA/dbboard/dbboard-mcp.exe"

自分でビルドする場合は、次のようにします。

cargo build --release -p dbboard-mcp
# binary at target/release/dbboard-mcp(.exe)

または Claude Desktop では、ビルドしたバイナリの絶対パスを claude_desktop_config.json に追加します(Windows の場合は %APPDATA%\Claude\claude_desktop_config.json、macOS の場合は ~/Library/Application Support/Claude/claude_desktop_config.json)。

{
  "mcpServers": {
    "dbboard": {
      "command": "C:\\path\\to\\dbboard-mcp.exe"
    }
  }
}

どちらの場合も、その後エージェントを再起動してください。 各クライアントは独自の dbboard-mcp プロセスを起動し、セッション中はそのプロセスを使用します。そのため、すでに実行中のエージェントは古いプロセスとの通信を続けます。また、dbboard のデスクトップアプリを再起動しても、別々のプロセスであるため影響はありません。 引数を指定しない場合、GUI が使用するものと同じユーザーごとの connections.toml を読み込みます。代わりに、--config を渡すか(または DBBOARD_CONFIG を設定して)、権限を最小限に抑えた厳選済みの設定を指定できます。環境変数が決めるのはこれだけです。ツール呼び出しでは connection_id を指定し、サーバーがストアファイルとキーチェーンを照合して解決するため、ストアに記載されていない接続には到達できません。設定の全容(OS ごとの設定パス、複数のエージェントを同時に実行する方法、企業プロキシ経由の TLS、接続失敗時に出力される具体的なエラーメッセージ)は、crates/dbboard-mcp/README.md に記載されています。

別のリポジトリで作業中のエージェントから dbboard を利用するには、docs/agent-onboarding.md のブロックをそのリポジトリの CLAUDE.md / AGENTS.md にコピーします。エージェントは、教えられていないツールを自分で探しにはいきません。dbboard をウェブ検索したエージェントは、dbboard を「一般公開されているツールではない」と結論づけました。

バイナリのダウンロードから最初に DROP が拒否されるまでを紹介する日本語のチュートリアルが Zenn にあります: Claude Code に自分の DB を触らせる.

開発

コミット前に、pre-commit フックが以下を実行します:

cargo fmt --all -- --check
cargo clippy --all-targets --all-features -- -D warnings
cargo check --all-targets --all-features
cargo test --all-features

プッシュ前には、pre-push フックも以下を実行します:

cargo build --release
cargo test --all-features --release

削除のみのプッシュ(git push --delete <branch>)では、ビルド/テストのサイクルをスキップします。検証対象となる作業ツリーがないためです。

これらはいつでも手動で実行できます。

セキュリティチェック

dbboard は、ユーザーごとの設定ディレクトリに connections.toml と history.jsonl を作成します(DBBOARD_CONFIG_DIR=<path> を指定すると、そのディレクトリに置き換わります。dbboard が管理するファイルはすべてまとめて移動するため、デモやスクリーンショット用に空のプロファイルで起動できます。詳細は docs/connections.md を参照してください)。 Unix ではどちらもモード 0o600 で作成されます。Windows では %APPDATA%\Roaming\<user>\ のユーザー専用 DACL を継承します。解決された設定ディレクトリがクラウド同期サービスのベンダーフォルダー(OneDrive の Known Folder Move、iCloud Drive、Dropbox、Google Drive)の下にある場合、バイナリは起動時にベンダー名を示す警告を stderr に 1 回出力します。ノートパソコンを紛失した場合に最も効果的な対策は、ディスク全体の暗号化です。BitLocker / FileVault / dm-crypt を有効にしてください。対策の全容は、docs/connections.md § ファイル権限 と ADR-0024 を参照してください。

cargo-deny は、アドバイザリ、ライセンス、重複バージョン、不明なソースを対象に依存関係グラフを検査します。設定は deny.toml にあります。

cargo install --locked cargo-deny    # one-time, ~5 min build
cargo deny check                     # advisories + licenses + bans + sources

CI ではまだ実行されません。依存関係を追加またはアップグレードする際は、ローカルで実行してください。チェックで新たに見つかったライセンス表記は、理由を 1 行添えて deny.toml の licenses.allow リストに追加します。

パッケージングと配布

Windows および macOS のバンドルは、apps/desktop から Tauri CLI を使用して生成されます。現在、Linux 向けのビルドは行っていません。

信頼性に関する注意。 成果物はコード署名されていません。これは未対応のままになっているのではなく、意図的な判断です(ADR-0106)。Windows SmartScreen と macOS Gatekeeper は、リリースのたびに発行元が不明であることを警告します。ダウンロードしたファイルが、このリポジトリでビルドされたものと同一であることを確認するには、公開されている SHA256SUMS.txt と照合してください(リリースビルドとチェックサムを参照)。それを確認することが、OS の警告を見るよりも重要です。これはすでに使用中のアップデーター署名鍵とは別のもので、自動アップデートがこのプロジェクトからのものであることを証明します(ADR-0067)。

バンドルをローカルでビルドする
cd apps/desktop
pnpm install          # first time only
pnpm tauri build

バンドルは target/release/bundle/ に生成されます。ワークスペースではターゲットディレクトリを共有するため、生成元のクレートの隣ではなく、リポジトリのルートに配置されます。ファイル名には productName が使われ、その値は dbboard です。cargo パッケージ名は引き続き dbboard-desktop で、v0.5.0 から v0.14.0 までのリリースでは、この表記がファイル名に含まれています。

プラットフォーム成果物ビルド環境
Windows x64nsis/dbboard_<version>_x64-setup.exeWindows x64
Windows ARM64nsis/dbboard_<version>_arm64-setup.exeWindows ARM64(クロスコンパイルではなく、ネイティブでビルド。ADR-0164)
macOSdmg/dbboard_<version>_universal.dmgmacOS(Windows からは .dmg を作成できません)

アプリの識別情報(バンドル識別子、アイコン、ウィンドウのデフォルト設定、アップデーターのエンドポイント)は、apps/desktop/src-tauri/tauri.conf.json にあります。アイコンは assets/ から生成されます(DESIGN.md を参照)。

フロントエンドは静的な SPA なので、pnpm tauri build は最初に Vite ビルドを実行します。古い apps/desktop/build/ が製品に含まれることはありません。

リリースビルドとチェックサム

v*.*.* タグをプッシュすると、.github/workflows/release.yml が実行されます。このワークフローは、Windows と macOS のネイティブランナーでバンドルをビルドし、結合された SHA256SUMS.txt と、アプリ内アップデーターが読み込む署名済みの latest.json とともに、対応する GitHub Release に添付します。手動で workflow_dispatch を実行すると、公開せずにスモークテストとして同じ成果物をビルドします。ダウンロードページ は最新リリースの内容を配信します。読み込み時に Releases API を参照するため、別途デプロイする必要はありません。ダウンロードを検証するには、次のようにします。

sha256sum -c SHA256SUMS.txt        # Linux/macOS
# or on Windows PowerShell:
#   (Get-FileHash .\dbboard_<version>_x64-setup.exe -Algorithm SHA256).Hash
ビルドを誰かに渡す

実際の受け渡し手順を、役割別にまとめたガイドが3つあります。

  • ビルドを作成する(メンテナー):インストーラーをビルドし、必要に応じて暗号化された接続バンドルを書き出してから配布し、成果物を公開リポジトリに含めないようにします — docs/maintainer/internal-distribution.md。
  • テスターとして試す:インストールして実行し、フィードバックを報告します — docs/internal-testing.md。
  • 固定された3つのデータ収集用接続をセットアップする(オペレーター): docs/collector-setup/README.md。

接続とそのシークレットは、パスフレーズで暗号化された単一の .dbbx バンドルとしてマシン間で移動します(接続ウィンドウの「エクスポート」/「インポート」、ADR-0038)。パスフレーズは必ず別の経路で送信してください。

コントリビューション

このプロジェクトでは、CLAUDE.md のルールに従います。要点は次のとおりです。

  1. 動作を変更する前に、失敗するテストを書きます。
  2. 変更は小さく、焦点を絞ります。
  3. 英語で、Conventional Commits 形式のコミットメッセージを使います。
  4. 重要な判断は docs/decisions.md に記録します。

ライセンス

LICENSE を参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。