SafeSelect MCP について
SafeSelect MCP は、実際のデータベース情報を使ったデバッグ向けに、コーディングエージェントから PostgreSQL と MongoDB への読み取り専用アクセスを提供します。ローカルポリシー、結果上限、タイムアウトを適用し、認証情報をチャットに出しません。
主な機能
- 01PostgreSQL と MongoDB の読み取り専用ツール
- 02テーブル、コレクション、インデックスの確認
- 03DBeaver、Docker Compose、Compass の接続をインポート
- 04プロジェクト別ルール、結果上限、タイムアウトの設定
- 05MCP stdio 経由でローカル実行
活用シーン
- 01データベース情報を使ったコードの問題調査
- 02スキーマ、コレクション、インデックスの確認
- 03対象データやクエリプランの調査
MCP 対応
SafeSelect は MCP stdio 経由でコーディングエージェントに PostgreSQL と MongoDB の読み取り専用ツールを公開します。組み込みのインストーラーで複数の MCP クライアントを設定できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
SafeSelect
コーディングエージェント向けの、PostgreSQL と MongoDB への読み取り専用アクセス。
書き込みツールを公開せずに、実際のデータベース情報を使ってデバッグできます。
既存の接続をインポートできます。認証情報はチャットに入力せずに済みます。
始める → · デモ · エージェント · セキュリティと品質 · ドキュメント · ウェブサイト
SafeSelect を選ぶ理由
バグの調査、スキーマの把握、クエリプランの確認に必要なデータベース情報を、コーディングエージェントに提供できます。SafeSelect は、ローカルポリシーと結果の上限を設定した、PostgreSQL と MongoDB 向けの読み取り専用ツールを公開します。
- データベース情報を使ってデバッグできます。 タスクに関係する行やドキュメントを読む前に、テーブル、コレクション、インデックスを確認できます。
- すでに使っている接続から始められます。 DBeaver、Docker Compose、MongoDB Compass から、SSH 経由の接続も含めてインポートできます。
- アクセスを制御できます。 プロジェクトごとのアクセスルール、行数制限、タイムアウトを設定できます。パスワードは macOS Keychain または環境変数に保存されます。
- ローカルで実行できます。 エージェントは MCP stdio 経由で接続し、MCP のネットワークリスナーは起動しません。設定されたデータベースの認証情報で書き込みが可能な場合でも、SafeSelect は読み取り専用のツール範囲を適用します。
重要
SafeSelect の読み取り専用の境界が適用されるのは、データベースツールのみです。エージェントのシェル、その他の MCP サーバー、直接利用する認証情報は、この境界の対象外です。 最小権限のデータベースユーザーを使用し、開発データまたはサニタイズ済みのレプリカから始めてください。脅威モデルと制限を参照してください。
実際の動作を見る
Homebrew のインストールからエージェントの接続まで:DBeaver の接続をインポートし、パスワードを Keychain に保存して、読み取り専用ツールを使って OpenCode に注文を確認させます。 ほかのクライアント、MongoDB、Linux でのオンボーディングについては、デモギャラリーを参照してください。
クイックスタート
リポジトリのルートからセットアップを実行してください。データベースコマンドを実行するには、PostgreSQL または MongoDB の接続とJava 17 以降のランタイムが必要です。
1. インストール
Homebrew を使って macOS にインストールする場合:
brew install antonillos/tap/safeselect
Linux、ビルド済みバイナリ、asdf、Java のセットアップ、またはソースからのビルドについては、インストールガイドを参照してください。
2. 接続をインポートする
すでに使用している接続元を選んでください:
| 接続元 | コマンド |
|---|---|
| DBeaver のエクスポート | safeselect import-dbeaver ~/Downloads/dbeaver-export.zip |
| Docker Compose の PostgreSQL | safeselect import-compose |
| MongoDB Compass | safeselect import-compass --path "$HOME/.config/MongoDB Compass" |
実際のエクスポートファイルまたは Compass のディレクトリを指定し、インポートツールのドライバーとパスワードのセットアップ手順に従ってください。シークレットをプロジェクトファイルやチャットに含めないでください。 SSH 経由の接続を使った詳しい例については、DBeaver → Codex の手順を参照してください。
3. エージェントを接続する
# Verify connectivity; this can open SSH tunnels and contact databases.
safeselect check
# Replace codex with opencode, or choose another supported client below.
safeselect agent install codex
safeselect agent status
複数の環境がある場合は、check と agent install の両方に --environment <name> を追加して、使用するデータベースを選択してください。指定しない場合、check はすべての環境をテストします。インストール時に対象を推測できるのは、環境が1つだけの場合です。
エージェントを開くか再起動し、プロンプトが表示されたら MCP サーバーを承認してください。デフォルトではユーザースコープでインストールされます。対応している場合は、プロジェクトスコープにするために --local を追加してください。クライアントのセットアップとスコープを参照してください。
4. 試してみる
エージェントに次のように依頼してください。
SafeSelect を使って、接続先のバックエンドを特定してください。PostgreSQL の場合は、カタログメタデータを使ってテーブルを一覧表示し、そのうち1つの構造を説明してください。MongoDB の場合は、データベースとコレクションのみを一覧表示してください。行の読み取りやドキュメントのサンプリングは行わないでください。
成功: 会話でデータベースのパスワードを伝えることなく、エージェントがデータベースの識別情報と利用可能なテーブルまたはコレクションを報告します。 次に、特定の問題について、対象を絞った少量の読み取りで調査するよう依頼してください。 MongoDB のスキーマ推論ではドキュメントがサンプリングされるため、データを読み取る準備ができてから、その手順を含めてください。
お困りですか? safeselect doctor --environment <name> を実行し、次の手順に従ってください。診断ではデータベースに接続する場合があります。接続診断またはエージェントの復旧ガイドを参照してください。
対応エージェント
OpenAI Codex · OpenCode · Claude Code · Cursor · Windsurf · GitHub Copilot · Gemini CLI
SafeSelect は、stdio 経由の MCP クライアントで動作します。組み込みのインストール機能は上記のクライアントに対応しています。統合ガイドでは、設定、スコープ、手動セットアップについて説明しています。Codex と OpenCode には、4つのポータブルなワークフロースキルも提供されます。SafeSelect を更新した後、safeselect agent upgrade <client> を実行し、クライアントを再読み込みしてください。
セキュリティと品質の証拠
SafeSelect は、データベースを実行する前に、リクエストをプロジェクトポリシーに照らして検証します。通常のポリシー拒否ではエラーを返しますが、重大なセキュリティ攻撃や内部検証・監査の失敗が発生した場合はサーバーを停止します。結果の上限とタイムアウトによって読み取りを制限し、監査記録用にクエリテキストをハッシュ化します。
データベースのセキュリティスイートは、使い捨ての PostgreSQL および MongoDB のフィクスチャに対して実行されます。拒否ケースでは、期待されるエラーを確認し、結果のデータベース状態をベースラインと比較します。そのため、拒否されたという応答だけでは合格になりません。
| 確認項目 | 証拠を確認 |
|---|---|
| SQL の書き込み、複数のステートメント、副作用のある関数 | PostgreSQL セキュリティテスト |
| MongoDB の書き込みステージ、サーバーサイド JavaScript、アクセス境界 | MongoDB セキュリティテスト |
| 不正な MCP リクエスト、ポリシー拒否、シャットダウンの動作 | MCP 回帰テスト |
| Rust と Java の複雑度およびテストカバレッジ | CRAP レポートと CI アーティファクト |
| コミット署名とメッセージ形式 | コミットポリシー |
特定のコミットに紐づく結果については、CI 実行の検証方法を参照してください。テストソースには確認項目が記載されています。一致する実行が成功することで、実行の証拠が得られます。保留中またはスキップされたスイートは未検証であり、バッジが異なるリビジョンを示している場合があります。
これらの制御の範囲については、脅威モデルと制限事項、セキュリティモデル、またはアーキテクチャを参照してください。 代替案とトレードオフについては、データベース MCP の比較を参照してください。
ドキュメント
| 目的 | こちらから |
|---|---|
| インストール、更新、アンインストール | インストールガイド |
| コーディングエージェントを設定する | AI エージェントとの連携 |
| SSH 接続を利用した DBeaver 接続をインポートする | DBeaver → Codex の手順 |
| 使用例を見る | デモギャラリー · ビジュアルコマンドギャラリー |
| コマンドや MCP ツールを探す | CLI リファレンス · MCP ツール |
| ポリシー、環境、パスワードを設定する | 設定 |
| セキュリティ境界を理解する | 脅威モデルと制限事項 · アーキテクチャ |
| 品質チェックとセキュリティテストを確認する | CI と CRAP レポート · セキュリティテストスイート |
| パッケージとディレクトリ一覧を探す | 配布 |
| ビルドまたは貢献する | 貢献ガイド · 変更履歴 |
フィードバックと貢献
セットアップで問題が発生した場合や機能の追加を希望する場合は、イシューを作成してください。 セットアップに関するフィードバックには、使用しているクライアント、OS、失敗した手順を記載してください。認証情報、接続のエクスポートデータ、データベースの内容は含めないでください。 セキュリティの脆弱性は、セキュリティポリシーに従って報告してください。
貢献を歓迎します。始めるには貢献ガイドをご覧ください。
ライセンス
MIT。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。