
ashishsinha1602/schemagate
Database managementこのページは AI により自動翻訳されています。技術的な詳細は原文をご確認ください。 原文を見る
テキストからSQLへのアクセス制御:呼び出し元が読み取れるテーブルのみをLLMに割り当てるスキーマ選択。LangChain、MCP、その他すべてのSQLエージェント向けの行レベルのセキュリティ認識型テーブルプルーニング。
概要
テキストからSQLへのエージェントは、誰もコールラーが何を読めるか確認する前に、どのテーブルを表示するかを選びます。Schemagateはまずチェックを行います。これは、呼び出し元の付与でスキーマをフィルタリングするため、制限されたテーブルはプロンプトに含まれず、低ランクにされません。LangChain、MCP、またはPostgres、Oracle、MySQL、SQL Server、SQLiteで動作します。 もし到達すべきでないプロンプトからテーブルを除外できれば、⭐ SQLエージェントを作る他の人が見つけるのを助けます。 行レベルのセキュリティだけでは失敗は静かです。モデルは呼び出し者が読み取れないテーブルに対して有効なSQLを書き込み、RLSはすべての行を削除し、ユーザーには「記録なし」と言われます—これは「このデータは存在しません」と区別がつかないのです。 デモ ·インストール ・ベンチマーク ・ローカルモデル ·費用 ・ヴァンナから来ています 同じ質問です。発信者は2人、データベースも鍵もありません: 欠席、低順位ではない。
概要(AI 翻訳)
テキストからSQLへのエージェントは、誰もコールラーが何を読めるか確認する前に、どのテーブルを表示するかを選びます。Schemagateはまずチェックを行います。これは、呼び出し元の付与でスキーマをフィルタリングするため、制限されたテーブルはプロンプトに含まれず、低ランクにされません。LangChain、MCP、またはPostgres、Oracle、MySQL、SQL Server、SQLiteで動作します。
もし到達すべきでないプロンプトからテーブルを除外できれば、⭐ SQLエージェントを作る他の人が見つけるのを助けます。
行レベルのセキュリティだけでは失敗は静かです。モデルは呼び出し者が読み取れないテーブルに対して有効なSQLを書き込み、RLSはすべての行を削除し、ユーザーには「記録なし」と言われます—これは「このデータは存在しません」と区別がつかないのです。
デモ ·インストール ・ベンチマーク ・ローカルモデル ·費用 ・ヴァンナから来ています
同じ質問です。発信者は2人、データベースも鍵もありません:
欠席、低ランクにされていない。発信者が読んでもいいテーブルは、 質問の言い換えは一切届かず、何もありません その後で答えをフィルターで除外してください。
ブラウザで試してみて — いいえ インストール、データベースなし、モデルコールなし。
そして答える
選択はプロンプトなので、あとは以下の通りです:
このページは AI により自動翻訳されています。技術的な詳細は原文をご確認ください。
README
以下は原文 README の抜粋です。原文を見る。
schemagate — text-to-SQL access control at schema selection
Your text-to-SQL agent picks which tables to show the model before anyone checks what the caller is allowed to read. schemagate does the check first: it filters the schema by the caller’s grants, so restricted tables are absent from the prompt rather than ranked low. Works with LangChain, LlamaIndex, MCP, or any SQL agent, on Postgres, Oracle, MySQL, SQL Server and SQLite.

If it keeps a table out of a prompt it should never have reached, a ⭐ helps other people building SQL agents find it.
With row-level security alone the failure is quiet: the model writes valid SQL against a table the caller cannot read, RLS strips every row, and the user is told “no records found” — indistinguishable from “this data does not exist.”
インストール
uvx --from schemagate[mcp postgres設定
{"mcpServers": {"schemagate": {
"command": "uvx", "args": ["--from", "schemagate[mcp,postgres]", "schemagate-mcp"],
"env": {"SCHEMAGATE_DATABASE_URL": "postgresql+psycopg://user:password@localhost/app"}}}}