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: DB MCP 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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceProvides a read-only PostgreSQL SQL surface for LLM agents via MCP, with defense-in-depth security layers for safe database queries.3MIT
- AlicenseNot gradedqualityBmaintenanceProvides read-only access to databases for MCP-compatible AI tools, allowing schema exploration and SELECT queries without exposing credentials or risking data changes.923MIT
- AlicenseNot gradedqualityBmaintenanceProvides read-only access to PostgreSQL databases via MCP, enforcing least-privilege roles, row-level security, masked views, and SQL AST guardrails to prevent data leakage and unauthorized operations, enabling AI agents to safely query sensitive production data.MIT

MCP DB Gatewayofficial
AlicenseNot gradedqualityBmaintenanceProvides governed, read-only PostgreSQL access for AI agents via MCP. Enforces schema/table allowlists, query limits, and audit events.MIT
Related MCP Connectors
A paid remote MCP for AI SDK data query MCP, built to return verdicts, receipts, usage logs, and aud
Read-only MCP server for wafergraph.com's semiconductor & AI supply-chain data: 30 tools, no auth.
Read-only Remote MCP for externally grounded AI agent trust receipts.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/afurlane/copilot-datagate'
If you have feedback or need assistance with the MCP directory API, please join our Discord server