mcpField
S
sqlsure

sqlsure

本地服务
sqlsure.ai开发工具9915 周前更新

关于 sqlsure

sqlsure 是面向文本转 SQL 产品和 AI Agent 的确定性 SQL 语义检查器。它在执行前依据已声明的模式语义检查查询,并提供可操作的修复建议;检查在本地完成,无需访问数据库或调用网络。

主要功能

  1. 01检测连接扇出与重复计数
  2. 02检查度量可加性和连接键
  3. 03标记输出中的敏感列
  4. 04提供机器可处理的修复建议
  5. 05从 dbt 和模式定义加载语义

适用场景

  1. 01执行前检查 AI 生成的 SQL
  2. 02在 CI 中拦截不安全查询
  3. 03审计 dbt 仓库
  4. 04为文本转 SQL 工具添加语义检查

MCP 相关

sqlsure 提供 MCP 服务,让 AI Agent 在执行前依据语义模型检查 SQL。拒绝结果包含修复建议,Agent 可据此修改并重新检查查询。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"sqlsure-sqlsure": {
"command": "uvx",
"args": [
"sqlsure"
]
}
}
}
启动命令uvx sqlsure

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypisqlsure0.1.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

sqlsure

CI PyPI License: Apache-2.0 Python

AI 编写 SQL,sqlsure 确保它正确无误。

一个查询可能完全有效、运行时没有错误,却悄无声息地返回错误数字——连接导致收入被重复计数、平均值被求和、患者标识符遭到暴露。数据库发现不了这些问题。代码检查工具发现不了这些问题。让 LLM 检查自己编写的 SQL 也发现不了这些问题。

sqlsure 可以——以确定性的方式,在 0.1 ms 内、查询运行之前完成检查。

**证据胜于承诺:**我们用 sqlsure 检查了文本转 SQL 模型普遍采用的两个基准测试的标准答案。2,568 条专家编写的查询,发现 45 个问题,零误报——其中包括一条 BIRD 开发集标准答案,它因 sqlsure 针对的确切错误类型而被证实错了 8 倍;此外还有一个已向上游提交的问题,涉及模式缺陷。

工作原理

sqlsure 根据团队已经声明的事实检查 SQL——dbt 的 unique 测试定义粒度,relationships 测试定义连接基数,一行 meta 标签就能标记哪些内容可以安全求和。无需学习新语言,也无需手动维护模型。规则通过字典查找,而非调用 LLM:相同输入、相同结论,每次如此,且可离线运行。

每次拒绝都会附带可由机器执行的 fix,让 AI Agent 自动修复:**起草 → 检查 → 修复 → 再检查 → 执行。**在我们的基准测试中,原样应用修复后,查询 10 次中有 10 次通过。

快速开始

pip install sqlsure
from sqlsure import SemanticModel, check
violations = check(sql, model)   # [] means semantically safe

或者克隆并运行 30 秒演示:

python check.py                   # 5 wrong queries rejected, 1 approved — with fixes
python -m sqlsure.scan path/to/dbt-repo --report report.md   # audit any dbt repo

三种接入方式,一个引擎

1. CI 门禁 — 当 PR 中的查询导致重复计数时,阻止合并:

python -m sqlsure.cli --model model.json query.sql   # exit 1 on violations

2. MCP 服务 — AI Agent 必须通过检查才能执行查询:

claude mcp add sqlsure -- python -m sqlsure.mcp_server --model /abs/path/model.json

工具参考和 Agent 循环模式请参阅 docs/MCP.md。

3. 库 — 在任何文本转 SQL 产品或 Agent 框架中嵌入 check()。可直接替换的 SemanticGate 可包装 Vanna/WrenAI 风格的生成器;语义评估指标 可为 NL2SQL 输出评分,弥补执行准确率无法识别的问题。

还可用作 Agent Skill — Agent 可直接加载的单个 SKILL.md;无需服务器进程。

规则(v0.1)

规则严重级别可捕获的问题
FANOUTerror一对多连接后对可加度量执行 SUM/COUNT
CHASMerror两个或更多扇出连接相互叠加
ADDITIVITYerror对不可加度量(比率、平均值)执行 SUM
SEMI_ADDITIVEerror沿快照维度对余额/普查数据求和
JOIN_KEYerror使用与任何已声明关系均不匹配的列进行连接
CROSS_JOINerror没有谓词的连接
WEIGHTED_AVGwarning扇出导致 AVG 被悄然重新加权
UNDECLARED_JOINwarning没有已声明关系的连接(无法验证 ≠ 安全)
SENSITIVE_COLUMNpolicy查询输出中暴露 PHI/PII 列

如果 sqlsure 无法验证某项内容,它会说明“无法验证”,绝不会说“看起来没问题”。诚实地表达不确定性是一项特性。

信任属性

  • 确定性 — 相同 SQL + 相同规则手册 = 始终得到相同结论;规则通过字典查找实现,可逐行审计
  • 离线运行 — 零网络调用;你的 SQL 永远不会离开你的设备
  • 不访问数据 — 解析查询文本;绝不连接数据库
  • 无遥测 — 永不收集任何信息(SECURITY.md)
  • 供应链 — 发布仅通过 PyPI Trusted Publishing(OIDC)从带标签的提交进行,并附带公开的 CI 运行;仅有两个运行时依赖

规则手册的来源

  • dbt(目前可用):manifest.json 或 schema.yml——团队已编写的测试会成为可强制执行的语义,无需配置

  • 纯 PK/FK 声明(目前可用——为基准测试审计提供支持)

  • 实时数据库本身(目前可用):完全没有语义层?sqlsure.introspect 会从目录构建规则手册——SQLite PRAGMA 或 information_schema PK/FK(postgres/mysql)。检查 BIRD 自己的数据库文件,找回了基准测试已发布架构中缺失的 2 个外键 (bird-bench/mini_dev#37)

    from sqlsure.introspect import model_from_sqlite
    model = model_from_sqlite("app.db")   # PK -> grain, FK -> join edges
    
  • 手写 JSON——model.example.json

  • OSI 和 WrenAI MDL(可用的加载器位于 integrations/):OSI 已通过规范中发布的示例进行演示; WrenAI MDL 已通过 WrenAI 自带的 示例清单进行演示——primaryKey → 粒度,关系的 joinType + condition → 联接边,立方体度量 → 可加性

  • Cube、Snowflake 语义视图——适配器已列入路线图;引擎始终只接收一个 SemanticModel

验证结果

  • 配对基准测试中 16/16 条规则测试,召回率 100% / 误报率 0% (docs/METRICS.md)
  • 真实生产代码库(Mattermost 的数据仓库、Fivetran 包、 dbt 的 jaffle shop)——docs/TEST-REPORTS.md
  • Spider + BIRD 黄金查询——上文所述的零噪声外部审计

了解更多

Apache-2.0 · sqlsure.ai

mcp-name: io.github.sqlsure/sqlsure

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。