DataGate
📘 DataGate — 安全、AI 就绪的数据网关
DataGate 是一个无头、安全、策略驱动的网关,以可控、可预测且无自由 SQL 的方式向 AI 工具(如 GitHub Copilot)暴露数据库。
DataGate 充当 LLM 与真实数据库之间的中介:不允许直接访问数据库,不暴露任意查询,不允许写入操作。它被设计为只读、schema 感知、多数据库,并且完全 LLM 安全。
🎯 主要目标
安全的数据访问 — 通过数据库角色、策略引擎和受控查询构建器保证只读。
数据库抽象 — 模型不生成 SQL:DataGate 构建安全且经过验证的查询。
多数据库 — 可以像无头 DBeaver 一样连接到不同应用的不同数据库。
策略引擎 — 对表、列、过滤器、限制和操作复杂度进行细粒度控制。
Schema 感知 — 自动加载数据库 schema 并应用安全规则。
真正的并发 — 异步且安全的架构,非常适合来自 Copilot 的并行请求。
指标与审计 — 跟踪请求、时间、错误和限制,用于调试和可观测性。
性能分析 — 进程内延迟画像(min/平均/p50/p95/p99/max),用于性能演进监控。
抽象后端 — 数据库后端共用的只读 trait,并提供 PostgreSQL、MySQL/MariaDB 和 SQLite 的具体实现。
Related MCP server: DB MCP Gateway
🧩 主要功能
受控查询构建器 — 语义操作如
select、search、aggregate,并自动验证。类型化 MCP
select— JSON 契约,以 JSON 行执行只读操作,包含策略、审计和净化后的错误;MCP transport 仍是下一步。类型化 MCP
search— 在允许的列上使用ILIKE进行语义搜索,参数化查询,策略/速率限制/指标/审计,以及服务端输出限制。类型化 MCP
aggregate— 在允许的列上执行count、sum、avg、min和max,使用参数化过滤器,不支持自由 SQL 或GROUP BY。版本化 MCP API — 用于 API 版本和可用工具的稳定描述符。
MCP stdio transport — 在策略安全路径上进行握手、发现以及
select、search和aggregate调用。高级过滤器 — 支持模式(
LIKE/ILIKE)、范围(BETWEEN)和全文(to_tsvector+plainto_tsquery),始终参数化并由策略验证。受控 schema 目录 — 对表、视图、索引、约束(PK/FK/UNIQUE/CHECK/EXCLUSION)、触发器、函数、存储过程和序列进行策略过滤的内省;仅当安全时才提供 DDL 定义。
速率限制 — 防止模型循环和过重查询。
输出限制 — 响应始终受控、安全且结构化。
确定性错误 — 无 schema 泄露、不暴露 SQL、无堆栈跟踪。
结构化错误 — 稳定的封装,包含代码、通用消息和
retryable指示。外部配置 — 用于策略、限制和命名配置文件(dev/staging/prod)的 TOML 文件。
MCP 输入加固 — 验证
request_id,限制文本负载和基数,以减少 DoS/输入滥用面。动态策略 — 活动策略可以原子替换,甚至可以从 TOML 重新加载,而无需重新创建 MCP 工具。
DataGate 不暴露自由 SQL 查询的 MCP 函数:代理仅发送结构化参数,这些参数在构建参数化查询之前会针对 schema 和策略进行验证。
公共错误使用代码 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,请配置以下两种变体之一:
完整 URL:
SQLITE_URL文件路径:
SQLITE_PATH
SQLite 连接池选项:
SQLITE_MAX_CONNECTIONSSQLITE_ACQUIRE_TIMEOUT_SECS
MySQL/MariaDB 配置
要以只读模式使用 MySQL 或 MariaDB,请配置以下两种变体之一:
完整 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)。
应用日志支持两种格式:
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(目前),未来支持其他数据库
协议:MCP(Model Context Protocol)
架构:异步、策略驱动、schema 感知
🚀 项目状态
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 transport 的安全决策
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 registry/画廊的候选元数据
docs/release-candidate.md — 1.0 候选版本的标准和门禁
docs/mcp-tools.md — MCP 工具的内部契约和规则
CONTRIBUTING.md — 贡献、提交和分支规则
SECURITY.md — 安全策略和漏洞报告
通过 VS Code 使用 MCP 启动:
默认本地 transport 是
stdio本地 stdio 的
mcp.json模板位于 docs/mcp-tools.md 和 docs/configuration.md远程 HTTP 不在 1.0 默认范围内,需要专门的安全决策
📍 路线图(概要)
定义策略引擎
实现受控查询构建器(参数化 select)
保证只读连接
自动 schema 感知(内部 PostgreSQL 目录)
审计日志基础(通过
AUDIT_LOG_PATH的 JSONL)MCP 工具(
select、search、aggregate)多数据库支持(PostgreSQL、MySQL/MariaDB、SQLite)
初始企业层(可观测性、加固、动态策略)
MCP API 稳定性(版本化描述符;stdio transport)
MCP stdio transport
基准测试
最终加固
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