Skip to main content
Glama

📘 DataGate — セキュアなAI対応データゲートウェイ

Build Release License

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

🧩 主な機能

  • 制御されたクエリビルダーselectsearchaggregate などの意味論的操作を自動検証付きで提供。

  • 型付き MCP select — JSONコントラクト、JSON行による読み取り専用実行、ポリシー、監査、サニタイズされたエラー。MCPトランスポートは次のステップ。

  • 型付き MCP search — 許可されたカラムに対する ILIKE を使った意味論的検索、パラメータ化クエリ、ポリシー/レート制限/メトリクス/監査、サーバーサイドの出力制限。

  • 型付き MCP aggregate — 許可されたカラムに対する countsumavgminmax。パラメータ化されたフィルター付きで、自由なSQLや GROUP BY はサポートしない。

  • バージョン管理された MCP API — APIバージョンと利用可能なツールのための安定したディスクリプタ。

  • MCP stdio トランスポート — ポリシーセーフな経路上でのハンドシェイク、ディスカバリ、selectsearchaggregate の呼び出し。

  • 高度なフィルター — パターン(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_requestpolicy_deniedbackend_unavailableinternal_error のコードを使用します。SQL、スタックトレース、パスワード、フィルター値、許可されていないオブジェクト名はMCP境界を越えません。

PostgreSQL 設定

PostgreSQL の認証情報は設定ファイルやコードに保存されません。サービスはランタイム環境から接続を読み取ります。

  • コンパクトモード: DB_URL

  • コンポーネントモード: DB_HOSTDB_PORT(デフォルト 5432)、DB_USERDB_PASSWORDDB_NAME

  • PostgreSQL オプション: DB_OPTIONS、形式 key=value&key=value

  • プール: DB_MAX_CONNECTIONSDB_ACQUIRE_TIMEOUT_SECS

SQLite 設定

SQLite を読み取り専用モードで使用するには、次の2つのいずれかを設定します。

  • 完全なURL: SQLITE_URL

  • ファイルパス: SQLITE_PATH

SQLite プールオプション:

  • SQLITE_MAX_CONNECTIONS

  • SQLITE_ACQUIRE_TIMEOUT_SECS

MySQL/MariaDB 設定

MySQL または MariaDB を読み取り専用モードで使用するには、次の2つのいずれかを設定します。

  • 完全なURL: MYSQL_URL

  • コンポーネントモード: MYSQL_HOSTMYSQL_PORT(デフォルト 3306)、MYSQL_USERMYSQL_PASSWORDMYSQL_DATABASE

MySQL/MariaDB プールオプション:

  • MYSQL_MAX_CONNECTIONS

  • MYSQL_ACQUIRE_TIMEOUT_SECS

マルチデータベースバックエンドの選択

どのバックエンドを有効にするかを明示的に選択するには、DATAGATE_BACKEND を設定します。

  • auto(デフォルト): 優先順位 postgres -> mysql -> sqlite

  • postgres

  • mysql(または mariadb

  • sqlite

DATAGATE_BACKEND が特定のバックエンドに設定されている場合、DataGate は対応する環境設定を要求します。そうでない場合は、明示的なエラーで終了します。

ブートストラップ時のバックエンド優先順位:

  1. PostgreSQL

  2. MySQL/MariaDB

  3. SQLite

リスト内で最初に設定されたバックエンドが有効になります。

オプションのサーバーサイドレート制限は RATE_LIMIT_REQUESTSRATE_LIMIT_WINDOW_SECS を使用します。制限はポリシー、クエリビルダー、データベースの前に request_id ごとに適用されます。しきい値を超えたリクエストは rate_limited を受け取り、SQLは生成されません。

クエリビルダーはまた、ポリシー内で max_query_complexity によって設定可能な最大予算を適用します。各カラムはコスト1、各フィルターはコスト2です。予算を超えるリクエストはSQL生成前に拒否されます。

select 応答はポリシー内の max_output_bytes にも従います。最終的なJSONペイロードが制限を超える場合、DataGate はSQLや内部詳細を公開せずにポリシーエラーでリクエストを拒否します。

メトリクスレイヤーは、select ツールのサーバーサイドのカウンターとレイテンシも記録します。総リクエスト数/受理数/拒否数、バックエンドエラー、インメモリのp95レイテンシ、PostgreSQLプールのスナップショット(sizeidle)です。

アプリケーションロギングは2つの形式をサポートしています。

  • LOG_FORMAT=pretty(デフォルト)

  • LOG_FORMAT=json(構造化、ログコレクターに適した形式)

ログの最小レベルは LOG_LEVELtrace|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_URL

  • DATAGATE_TEST_MYSQL_URL

変数が存在する場合、対応するテストは読み取り専用バックエンドが制御された SELECT を実行し、書き込みステートメントを拒否することを検証します。変数が存在しない場合、テストはエラーなしでスキップされます。

完全なドキュメント:

VS Code から MCP で起動する場合:

  • デフォルトのローカルトランスポートは stdio です

  • ローカル stdio 用の mcp.json テンプレートは docs/mcp-tools.mddocs/configuration.md にあります

  • リモートHTTPはデフォルトの1.0の範囲外であり、専用のセキュリティ決定が必要です

📍 ロードマップ(概要)

  • ポリシーエンジンの定義

  • 制御されたクエリビルダーの実装(パラメータ化された select)

  • 読み取り専用接続の保証

  • 自動スキーマ認識(内部PostgreSQLカタログ)

  • 監査ログ基盤(AUDIT_LOG_PATH によるJSONL)

  • MCPツール(selectsearchaggregate

  • マルチデータベースサポート(PostgreSQL、MySQL/MariaDB、SQLite)

  • 初期エンタープライズレイヤー(可観測性、ハードニング、動的ポリシー)

  • MCP APIの安定性(バージョン管理されたディスクリプタ、stdioトランスポート)

  • MCP stdio トランスポート

  • ベンチマーク

  • 最終ハードニング

  • 1.0 候補版

📄 ライセンス

Apache License 2.0

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
4Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    A
    maintenance
    Provides a read-only PostgreSQL SQL surface for LLM agents via MCP, with defense-in-depth security layers for safe database queries.
    3
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides read-only access to databases for MCP-compatible AI tools, allowing schema exploration and SELECT queries without exposing credentials or risking data changes.
    92
    3
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides 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
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides governed, read-only PostgreSQL access for AI agents via MCP. Enforces schema/table allowlists, query limits, and audit events.
    MIT

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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