Faucetとは?
米国のスタートアップFaucetDBのFaucetは、PostgreSQL、MySQL、MariaDB、SQL Server、Oracle、Snowflake、SQLiteに接続してスキーマを読み取り、実行時にCRUDのREST API、OpenAPI 3.1の仕様、MCPサーバーを生成します。ロール、APIキー、管理者アカウント、接続情報は組み込みのSQLiteファイルに保存され、同じバイナリに入った管理画面でデータベースの接続、ロールの作成ができ、Claude Code、Cursor、VS Code、Windsurf向けのMCP設定もそのまま出力されます。
MCPサーバーはREST APIと同じポート(既定は8080)の/mcpで、X-API-Keyヘッダーによる認証付きのStreamable HTTPとして提供されるほか、stdioでも起動できます。ツールは8個、リソースは2個です。リポジトリは2026年2月に作成され、ほぼ1人の開発者が書いており、GitHubのスターは約172です。v0.1.15は2026年10月9日に公開され、npmパッケージは11月10日までの1か月で346回ダウンロードされました。
すべてMITライセンスで、有料プランはありません。ホスト型のFaucet Cloudがウェイトリスト付きで予告されて いますが、価格は出ていません。
Faucetのインストール方法
npx @faucetdb/faucet serveFaucetは使う価値があるか?
Faucetの考え方は筋が通っています。エージェントにSQLのプロンプトを渡す代わりに、HTTPの動詞に対応する構造化されたツール(faucet_query、faucet_insert、faucet_update、faucet_delete)を与え、呼び出しのたびにAPIキーのロールと照合します。照合はサービス単位、テーブル単位です。フィルターは小さな式の構文で受け取り、Faucet自身がパラメータ化するため、実際に実行されるSQL文字列をモデルが書くことはありません。生のSQLは別のツールで、サービス側のraw_sql_allowed(既定はオフ)と、5つの動詞すべてを許すロールの両方が必要です。read_onlyのフラグを付けたサービスは、生のSQLも含めあらゆる書き込みを拒否します。対照的にDBHubはモデルにexecute_sqlツールを渡します。GoogleのMCP Toolboxは、あらかじめクエリを書いておくことで似た結果を得ますが、Faucetはスキーマからツールを生成します。
慎重になるべき理由はこれまでの経緯です。2026年9月3日のv0.1.13は、メンテナー自身が深刻度「高」とした欠陥を修正しました。それまではロールのルールが保存されるだけで一度も参照されておらず、有効なAPIキーであれば、エージェントに渡したものも含めて、RESTでもMCPでも全サービスの全テーブルを読み書きできました。同じリリースで、生のSQLがread_onlyフラグを無視しないようになり、組み込みの既定JWT署名シークレットがランダムな値 に置き換えられました。この件はGitHubのセキュリティアドバイザリではなくリリースノートで公表され、リポジトリにアドバイザリは1件もありません。行単位のフィルターは今も保存されるだけで適用されておらず、ドキュメントもそれを明記しています。
何よりも先に確認すべきなのはネットワークの既定値です。faucet serveは0.0.0.0、つまりすべてのインターフェースで、ポート8080の暗号化されていないHTTPで待ち受けます。TLSはリバースプロキシに任せるようドキュメントは案内しています。最初の管理者アカウントができるまでは、セットアップ用エンドポイントが最初に到達した人を受け入れるため、共有ネットワーク上の新しいインスタンスは--host 127.0.0.1で起動すべきです。stdioモードはローカルの管理者権限で動き、ロールを適用しないため、接続したすべてのテーブルに対して挿入、更新、削除が無制限に可能です。接続パスワードは設定用SQLiteファイルに暗号化されずに保存され、Faucetはこのファイルを所有者のみのアクセス権に制限しています。テレメトリーは既定で有効で、テーブル、キー、ロールの数を1時間ごとにPostHogへ送ります。名前やデータは含まれず、FAUCET_TELEMETRY=0で止められます。
結論:Faucetが生きるのは、DBHubのようなSQLツールでは開放しすぎてしまうSQL ServerやOracleの環境の上に、RESTとMCPを1つの層としてまとめたいチームです。v0.1の製品として扱い、それでも読み取り専用のデータベースユーザーを作り、公開インターフェースには出さないことです。
真価を発揮する場面
SQL ServerでERPを動かしているメーカーの業務チーム
ERPの書き込み経路に触れずに、在庫と受注についての質問にClaudeが答えられるようにしたい
SELECTしかできないデータベースユーザーでERPを接続し、サービスをread_onlyにして、在庫と受注のテーブルにGETだけを許すロールに紐づいたキーをエージェントに発行します。エージェントはfaucet_queryで絞り込み、1回の呼び出しは最大1,000行です。購入が必要なのは小さなVMだけです。
Postgresで社内ツールを作る2人のエージェンシー
バックエンドを書かずに、CRUDのAPIとエージェントが編集できる管理経路を用意したい
Faucetをデータベースに向け、生成された/api/v1のエンドポイントをフロントエンドから使い、エージェントには2つのテーブルでのPOSTとPATCHだけを許すロールの別キーを渡します。スキーマの契約をロックしておけば、マイグレーションが知らないうちにAPIを壊すことはありません。
Snowflakeのデータウェアハウスを使うデータアナリスト
Cursorから普通の言葉でテーブルを調べ、サンプルを取り出したい
キーペア認証でSnowflakeを追加し、GETだけ のキーを作って、/mcpエンドポイントをCursorに登録します。faucet_describe_tableがモデルに列と型を渡します。実際のコストは、クエリごとに消費されるSnowflakeのウェアハウスクレジットのままです。
導入前に確認すること
- 導入
- npx @faucetdb/faucet serve、Homebrew、Docker、またはリリース版バイナリで導入し、localhost:8080のセットアップウィザードで管理者を作成して、ホスト、ポート、ユーザー、パスワードでデータベースを接続します。ロールとAPIキーを作り、X-API-Keyヘッダー付きでclaude mcp add --transport httpを実行します。Claude Desktopにはmcp-remoteのブリッジが必要です。READMEはデータベースからAPIまでの手順を60秒のクイックスタートとしており、ロールとキーの作成で数分が加わります。
- 連携
- MCPツールは8個(faucet_list_services、faucet_list_tables、faucet_describe_table、faucet_query、faucet_insert、faucet_update、faucet_delete、faucet_raw_sql)、リソースは2個で、そのうち4つのツールが書き込めます。同じインスタンスがREST API、ChatGPTのCustom GPT Actions向けの/openapi.json、/healthz、/readyzも提供します。OAuthがないため、ChatGPTのコネクターには対応していません。
- データとプライバシー
- セルフホストで、行データはエージェン トのモデル提供元にだけ送られます。エージェントはキーのロールが許す範囲で、データベースユーザーの権限内なら何でもできます。HTTPは既定でポート8080の0.0.0.0に待ち受け、stdioは管理者権限で動きます。データベースのパスワードは設定用SQLiteファイルに暗号化されずに保存され(所有者のみのアクセス権)、APIキーはSHA-256でハッシュ化されます。匿名のテレメトリーは無効にしない限り1時間ごとにPostHogへ送られます。モデルに返る行には、データベースのあらゆるテキストと同様にプロンプトインジェクションが紛れ込む可能性があります。
- 大規模利用時のコスト
- 無料で、かかるのはバイナリを動かすホストとデータベースの負荷です。faucet_queryは既定で25行、最大1,000行を返します。生のSQLは既定で100行、最大10,000行で、30秒(最長300秒)でタイムアウトします。Snowflakeへのクエリは呼び出しのたびにウェアハウスクレジットを消費します。
- 制限
- 1人の開発者によるバージョン0.1.xのプロジェクトで、READMEも社内ツールやプロトタイプ向けとしています。未解決のissueは6件で、SQLiteのクエリビルダーの正確性に関するものも含まれます。GraphQLとOAuthはなく、行フィルターは適用されず、Kubernetesのレプリカごとに設定ストアが必要です。
良い 点
- OracleとSnowflakeを含む7つのSQLエンジンに1つのバイナリで対応
- MCPツールの呼び出しごとにテーブル単位で動詞の権限を検査
- パラメータ化されたフィルターを使う構造化ツール。生のSQLは既定でオフ
- 管理画面がキー入りのMCP設定を生成
気になる点
- v0.1.13より前はロールのルールがまったく適用されていなかった
- 暗号化なしのHTTPで0.0.0.0に待ち受け。管理者ができるまでセットアップが開放
- stdioモードは管理者として動き、ロールを適用しない
- 行フィルターは保存されるが適用されない。テレメトリーは既定で有効
おすすめの人
すでに運用しているSQL Server、Oracle、Snowflake、Postgresのデータベースの上で、エージェントと社内アプリに管理されたRESTとMCPの層を共有させたいチーム。
Faucetの代替
Faucet:よくある質問
- Faucetは使う価値があるか?
- 7つのSQLエンジンにまたがるテーブルへの管理されたアクセスをエージェントに渡す設計としては正しい形ですが、ロールの検査が9月にようやく機能し始めたほど若いプロジェクトです。 評価は5点満点中3.6点です。
- Faucetの料金は?
- 無料のオープンソース(MIT)で、すべての機能が含まれます。ホスト型のFaucet Cloudはウェイトリスト段階で、価格は公表されていません。
- Faucetの欠点は?
- v0.1.13より前はロールのルールがまったく適用されていなかった; 暗号化な しのHTTPで0.0.0.0に待ち受け。管理者ができるまでセットアップが開放; stdioモードは管理者として動き、ロールを適用しない; 行フィルターは保存されるが適用されない。テレメトリーは既定で有効.
- Faucetは誰に向いているか?
- すでに運用しているSQL Server、Oracle、Snowflake、Postgresのデータベースの上で、エージェントと社内アプリに管理されたRESTとMCPの層を共有させたいチーム。
- チームや本番環境でFaucetを使うと費用はいくらか?
- 無料で、かかるのはバイナリを動かすホストとデータベースの負荷です。faucet_queryは既定で25行、最大1,000行を返します。生のSQLは既定で100行、最大10,000行で、30秒(最長300秒)でタイムアウトします。Snowflakeへのクエリは呼び出しのたびにウェアハウスクレジットを消費します。
- Faucetは企業データを扱っても安全か?
- セルフホストで、行データはエージェントのモデル提供元にだけ送られます。エージェントはキーのロールが許す範囲で、データベースユーザーの権限内なら何でもできます。HTTPは既定でポート8080の0.0.0.0に待ち受け、stdioは管理者権限で動きます。データベースのパスワードは設定用SQLiteファイルに暗号化されずに保存され(所有者のみのアクセス権)、APIキーはSHA-256でハッシュ化されます。匿名のテレメトリーは無効にしない限り1時間ごとにPostHogへ送られます。モデルに返る行には、データベースのあらゆるテキストと同様にプロン プトインジェクションが紛れ込む可能性があります。
- Faucetの代わりになるものは?
- 当サイトでレビューした中で最も近い代替はDBHub, MCP Toolbox for Databases, Supabase MCP Server 、 database-mcp (cocaxcode)です。
回答確認日:2026年11月11日