SQL语法检查工具

一个基于Model Context Protocol (MCP)服务器的Snowflake SQL语法检查工具,支持本地运行并提供结构化lint结果。

  • by Bbetaverse22
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Bbetaverse22/snowflake-sql-linter-mcp

使用说明

Snowflake SQL 代码检查器 MCP 服务器

这个仓库托管了一个模型上下文协议(MCP)服务器,用于对Snowflake SQL进行语法检查。它封装了 SQLFluff(注:SQLFluff是一个用于SQL代码格式化和风格检查的工具,此处为直译,实际使用时可根据上下文调整为更贴切的表述,如“SQL格式化工具SQLFluff”等) 并且提供了两种工具——一种用于内联查询,另一种用于文件处理——以便编辑器和AI代理可以请求结构化的代码检查结果,或将其作为自动化工作流的一部分运行。

特点/特性

  • 完全本地运行;无需网络调用或Snowflake连接。
  • 荣誉项目级别的 sqlfluff 配置(方言、规则、排除项等)。
  • 提供结构化的回复(LintResult) 包含规则代码、位置和固定元数据。
  • 与MCP-aware客户端兼容(Cursor、Claude Code、VS Code扩展、MCP Inspector等)。

仓库布局

  • agent.py – FastMCP服务器定义和代码检查工具。
  • requirements.txt – Python 依赖项(mcp, sqlfluff)。
  • .sqlfluff – 示例配置设置为Snowflake方言。
  • queries/ – 存放SQL示例的占位符文件夹(my_query.sql)。

先决条件

  • Python 3.10+(与您的MCP客户端环境相同的解释器)。
  • pip 安装要求。
  • 可选:Node.js(仅当您希望通过MCP Inspector UI使用时) npx)。

安装

python3 -m pip install -r requirements.txt

本地运行

独立测试(MCP 检测器)

npx @modelcontextprotocol/inspector python3 agent.py --transport stdio

打开打印出的URL,使用命令添加服务器 python3 和参数(args) agent.py --transport stdio然后,从检查器用户界面调用工具。

CLI 客户端

mcp --stdio "python3 agent.py --transport stdio"

列出工具并在终端中以交互方式调用它们。

与MCP客户端集成

在您的MCP配置(Cursor、Claude Code、VS Code等)中添加一项条目:

{
  "mcpServers": {
    "snowflake-sql-linter": {
      "command": "python3",
      "args": [
        "/absolute/path/to/agent.py",
        "--transport",
        "stdio"
      ],
      "cwd": "/absolute/path/to/repo"
    }
  }
}

编辑配置后重启客户端。工具将在以下名称下出现 snowflake-sql-linter.

可用的MCP工具

工具 描述 参数
lint_snowflake_query 对内联SQL字符串进行语法检查。 query (字符串)
lint_snowflake_file 语法检查工具 .sql 仓库内的文件。 path (字符串,相对或绝对)

两者都返回一个 LintResult 与;带有;和……一起

  • status: pass, fail,或者 error。
  • summary日志的一行消息。
  • issues违规规则列表(rule, line, column, description, fixable, fixes)。

lint_snowflake_file 确保文件位于仓库内且具有 .sql 扩展。

定制化

  • 扩展 .sqlfluff 实施额外规则或配置忽略模式。
  • 使用MCP客户端或任务运行器将MCP工具集成到更高层次的工作流中(例如,自动重构或报告生成)。

做出贡献

  1. 创建一个虚拟环境(python3 -m venv .venv && source .venv/bin/activate)。
  2. 安装依赖项(pip install -r requirements.txt)。
  3. 跑 python3 agent.py --transport stdio 与您偏好的客户端一起验证更改。
  4. 针对(某项目/仓库)打开拉取请求 main。

许可证

麻省理工学院(MIT)(请参考上游参考仓库以获取灵感)。MD