DataGate
📘 DataGate — セキュアなAI対応データゲートウェイ
DataGate は、ヘッドレスで安全かつポリシー駆動のゲートウェイであり、制御され、予測可能で、自由なSQLを排除した方法で、AIツール(GitHub Copilot など)にデータベースを公開します。
DataGate は、LLM と実際のデータベースの間の仲介役として機能します。データベースへの直接アクセスは許可されず、任意のクエリを公開せず、書き込み操作も許可しません。読み取り専用、スキーマ認識、マルチデータベース、そして完全にLLMセーフになるよう設計されています。
🎯 主な目標
安全なデータアクセス — DBロール、ポリシーエンジン、制御されたクエリビルダーにより読み取り専用を保証。
データベースの抽象化 — モデルはSQLを生成せず、DataGate が安全で検証済みのクエリを構築。
マルチデータベース — ヘッドレスな DBeaver のように、さまざまなアプリケーションのさまざまなデータベースに接続可能。
ポリシーエンジン — テーブル、カラム、フィルター、制限、操作の複雑さをきめ細かく制御。
スキーマ認識 — データベーススキーマを自動的にロードし、セキュリティルールを適用。
真の並行性 — Copilot からの並列リクエストに理想的な、安全な非同期アーキテクチャ。
メトリクスと監査 — デバッグと可観測性のためのリクエスト、時間、エラー、制限の追跡。
パフォーマンスプロファイリング — パフォーマンスの経時監視のためのインプロセスレイテンシープロファイル(min/平均/p50/p95/p99/max)。
抽象化されたバックエンド — データベースバックエンド向けの共通読み取り専用トレイト。PostgreSQL、MySQL/MariaDB、SQLite の具体的な実装を備える。
Related MCP server: MCP DB Gateway
🧩 主な機能
制御されたクエリビルダー —
select、search、aggregateなどの意味論的操作を自動検証付きで提供。型付き MCP
select— JSONコントラクト、JSON行による読み取り専用実行、ポリシー、監査、サニタイズされたエラー。MCPトランスポートは次のステップ。型付き MCP
search— 許可されたカラムに対するILIKEを使った意味論的検索、パラメータ化クエリ、ポリシー/レート制限/メトリクス/監査、サーバーサイドの出力制限。型付き MCP
aggregate— 許可されたカラムに対するcount、sum、avg、min、max。パラメータ化されたフィルター付きで、自由なSQLやGROUP BYはサポートしない。バージョン管理された MCP API — APIバージョンと利用可能なツールのための安定したディスクリプタ。
MCP stdio トランスポート — ポリシーセーフな経路上でのハンドシェイク、ディスカバリ、
select、search、aggregateの呼び出し。高度なフィルター — パターン(
LIKE/ILIKE)、範囲(BETWEEN)、全文検索(to_tsvector+plainto_tsquery)をサポート。常にパラメータ化され、ポリシーによって検証される。制御されたスキーマカタログ — テーブル、ビュー、インデックス、制約(PK/FK/UNIQUE/CHECK/EXCLUSION)、トリガー、関数、プロシージャ、シーケンスのポリシーフィルター付きイントロスペクション。DDL定義は安全な場合のみ。
レート制限 — モデルのループや過度に重いクエリからの保護。
出力制限 — 応答は常に抑制され、安全で、構造化されている。
決定的なエラー — スキーマの漏洩なし、SQLの露出なし、スタックトレースなし。
構造化されたエラー — コード、一般的なメッセージ、
retryableの表示を持つ安定したエンベロープ。外部設定 — ポリシー、制限、名前付きプロファイル(dev/staging/prod)のためのTOMLファイル。
MCP入力の堅牢化 — DoS/入力悪用の表面を減らすための
request_id検証、テキストペイロードとカーディナリティの制限。動的ポリシー — アクティブなポリシーは、MCPツールを再作成することなく、TOMLから再読み込みするなどして原子的に置き換え可能。
DataGate は自由なSQLクエリのMCP関数を公開しません。エージェントは構造化されたパラメータのみを送信し、パラメータ化クエリの構築前にスキーマとポリシーに対して検証されます。
公開エラーは invalid_request、policy_denied、backend_unavailable、internal_error のコードを使用します。SQL、スタックトレース、パスワード、フィルター値、許可されていないオブジェクト名はMCP境界を越えません。
PostgreSQL 設定
PostgreSQL の認証情報は設定ファイルやコードに保存されません。サービスはランタイム環境から接続を読み取ります。
コンパクトモード:
DB_URLコンポーネントモード:
DB_HOST、DB_PORT(デフォルト5432)、DB_USER、DB_PASSWORD、DB_NAMEPostgreSQL オプション:
DB_OPTIONS、形式key=value&key=valueプール:
DB_MAX_CONNECTIONSとDB_ACQUIRE_TIMEOUT_SECS
SQLite 設定
SQLite を読み取り専用モードで使用するには、次の2つのいずれかを設定します。
完全なURL:
SQLITE_URLファイルパス:
SQLITE_PATH
SQLite プールオプション:
SQLITE_MAX_CONNECTIONSSQLITE_ACQUIRE_TIMEOUT_SECS
MySQL/MariaDB 設定
MySQL または MariaDB を読み取り専用モードで使用するには、次の2つのいずれかを設定します。
完全なURL:
MYSQL_URLコンポーネントモード:
MYSQL_HOST、MYSQL_PORT(デフォルト3306)、MYSQL_USER、MYSQL_PASSWORD、MYSQL_DATABASE
MySQL/MariaDB プールオプション:
MYSQL_MAX_CONNECTIONSMYSQL_ACQUIRE_TIMEOUT_SECS
マルチデータベースバックエンドの選択
どのバックエンドを有効にするかを明示的に選択するには、DATAGATE_BACKEND を設定します。
auto(デフォルト): 優先順位postgres->mysql->sqlitepostgresmysql(またはmariadb)sqlite
DATAGATE_BACKEND が特定のバックエンドに設定されている場合、DataGate は対応する環境設定を要求します。そうでない場合は、明示的なエラーで終了します。
ブートストラップ時のバックエンド優先順位:
PostgreSQL
MySQL/MariaDB
SQLite
リスト内で最初に設定されたバックエンドが有効になります。
オプションのサーバーサイドレート制限は RATE_LIMIT_REQUESTS と RATE_LIMIT_WINDOW_SECS を使用します。制限はポリシー、クエリビルダー、データベースの前に request_id ごとに適用されます。しきい値を超えたリクエストは rate_limited を受け取り、SQLは生成されません。
クエリビルダーはまた、ポリシー内で max_query_complexity によって設定可能な最大予算を適用します。各カラムはコスト1、各フィルターはコスト2です。予算を超えるリクエストはSQL生成前に拒否されます。
select 応答はポリシー内の max_output_bytes にも従います。最終的なJSONペイロードが制限を超える場合、DataGate はSQLや内部詳細を公開せずにポリシーエラーでリクエストを拒否します。
メトリクスレイヤーは、select ツールのサーバーサイドのカウンターとレイテンシも記録します。総リクエスト数/受理数/拒否数、バックエンドエラー、インメモリのp95レイテンシ、PostgreSQLプールのスナップショット(size、idle)です。
アプリケーションロギングは2つの形式をサポートしています。
LOG_FORMAT=pretty(デフォルト)LOG_FORMAT=json(構造化、ログコレクターに適した形式)
ログの最小レベルは LOG_LEVEL(trace|debug|info|warn|error)または RUST_LOG で設定できます。
DB_URL が存在する場合はコンポーネントよりも優先されます。PostgreSQL ロールは読み取り専用の権限のみを持つ必要があります。さらに、各接続は default_transaction_read_only = on を設定します。
アクティブなプロファイルは profile = "dev" で選択され、[profiles.dev.policy] でポリシーを定義できます。名前付きプロファイルが存在しない場合、レガシー形式の [policy] も引き続きサポートされます。宣言されたが存在しないプロファイルは、データベース操作を開始せずに deny-all ポリシーを有効にします。
公開リリースには、Linux x64/ARM64、Windows x64/ARM64、macOS Intel/Apple Silicon 向けのバイナリが含まれ、プラットフォームごとに名前が付けられたアーカイブと、アーティファクト検証用の SHA256SUMS-* ファイルが含まれます。
🛡️ なぜ DataGate なのか?
LLM はデータベースと直接通信すべきではありません。 安全で、予測可能で、制御され、監査可能で、拡張可能で、マルチアプリケーション対応のレイヤーが必要です。DataGate はそのレイヤーです。
🔧 テクノロジー
言語: Rust
データベース: PostgreSQL、MySQL/MariaDB、SQLite(現在)、他のDBは今後
プロトコル: MCP(Model Context Protocol)
アーキテクチャ: 非同期、ポリシー駆動、スキーマ認識
🚀 プロジェクトの状態
DataGate は設計段階にあります。リポジトリには初期構造、ドキュメント、技術ロードマップが含まれています。
🧪 マルチバックエンド統合テスト
バックエンド統合テストはオプションの環境変数を使用します。
DATAGATE_TEST_POSTGRES_URLDATAGATE_TEST_MYSQL_URL
変数が存在する場合、対応するテストは読み取り専用バックエンドが制御された SELECT を実行し、書き込みステートメントを拒否することを検証します。変数が存在しない場合、テストはエラーなしでスキップされます。
完全なドキュメント:
Architecture.md — 設計原則とレイヤーアーキテクチャ
ROADMAP.md — 1.0 に向けた詳細ロードマップ
docs/configuration.md — クイックスタート、バックエンド、ポリシー、運用
docs/benchmarks.md — ローカルSQLiteと実PostgreSQLのベンチマーク
docs/hardening.md — MCP/データベース境界の最終ハードニングチェックリスト
docs/http-transport-decision.md — リモートMCP HTTPトランスポートに関するセキュリティ決定
docs/editor-registry-evaluation.md — MCP Registry 要件とクロスエディタクライアントの評価
docs/packaging.md — パッケージングチャネルとアーティファクトの正規ソース
docs/postgres-mcp-comparison.md — 他のPostgreSQL MCPサーバーとの比較
docs/registry-publication.md — MCP Registry 戦略、クロスエディタインストール、名前付き接続
docs/mcp-registry-metadata.json — MCPレジストリ/ギャラリー向けの候補メタデータ
docs/release-candidate.md — 1.0 候補の基準とゲート
docs/mcp-tools.md — MCPツールの内部コントラクトとルール
CONTRIBUTING.md — 貢献、コミット、ブランチのルール
SECURITY.md — セキュリティポリシーと脆弱性の報告
VS Code から MCP で起動する場合:
デフォルトのローカルトランスポートは
stdioですローカル stdio 用の
mcp.jsonテンプレートは docs/mcp-tools.md と docs/configuration.md にありますリモートHTTPはデフォルトの1.0の範囲外であり、専用のセキュリティ決定が必要です
📍 ロードマップ(概要)
ポリシーエンジンの定義
制御されたクエリビルダーの実装(パラメータ化された select)
読み取り専用接続の保証
自動スキーマ認識(内部PostgreSQLカタログ)
監査ログ基盤(
AUDIT_LOG_PATHによるJSONL)MCPツール(
select、search、aggregate)マルチデータベースサポート(PostgreSQL、MySQL/MariaDB、SQLite)
初期エンタープライズレイヤー(可観測性、ハードニング、動的ポリシー)
MCP APIの安定性(バージョン管理されたディスクリプタ、stdioトランスポート)
MCP stdio トランスポート
ベンチマーク
最終ハードニング
1.0 候補版
📄 ライセンス
This server cannot be deployed
Maintenance
Related MCP Connectors
Query your org's data in natural language — read-only MCP access to SQL, NoSQL, files & warehouses.
Governed data discovery, exact queries, decisions, simulations, and runtime utilities over MCP.
One governed MCP endpoint for 40+ business systems. Read-only, source-cited answers.
Safe, read-only Postgres and MySQL access for AI agents. Audit log + column-level controls.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceProvides read-only access to databases for MCP-compatible AI tools, allowing schema exploration and SELECT queries without exposing credentials or risking data changes.101 npm3MIT

MCP DB Gatewayofficial
AlicenseNot gradedqualityBmaintenanceProvides governed, read-only PostgreSQL access for AI agents via MCP. Enforces schema/table allowlists, query limits, and audit events.1MIT- AlicenseNot gradedqualityBmaintenanceProvides read-only, guarded access to business databases via MCP. Enables natural language querying with built-in security barriers like table allowlists, PII masking, and audit logging.MIT
- FlicenseNot gradedqualityBmaintenanceEnables secure, read-only querying of only predefined logical database views through MCP tools and a REST API, using validated SQL and semantic view metadata.-