SuperAPI AI 工具集

mcp-server-sql-analyzer

基于 SQLGlot 的 MCP 服务器,为 AI 助手提供 SQL 静态分析、语法校验与方言转换能力,可检查 SQL 语法、在 MySQL、PostgreSQL 等方言间转换查询、提取表与列引用,并列出支持的 SQL 方言。

访问官网

工具介绍

mcp-server-sql-analyzer 是一个 Model Context Protocol(MCP)服务器,用于 SQL 静态分析,基于 SQLGlot 提供 SQL 分析、linting 和方言转换能力。它面向需要处理 SQL 查询的场景,帮助完成以下工作:SQL 语法校验与 linting;在不同 SQL 方言之间转换查询(例如从 MySQL 转换到 PostgreSQL);提取和分析表引用与依赖关系;识别列的使用与关系;发现所支持的 SQL 方言。

该服务器可被 AI 助手(如 Claude)使用,以增强 SQL 相关协助能力,具体包括:查询校验,在向用户建议 SQL 之前即时校验语法,确保提供正确且符合方言的查询;方言转换,当用户需要在不同数据库系统之间迁移查询时,在保留查询逻辑的前提下准确转换语法;代码分析,通过表和列引用分析理解复杂查询,便于解释查询结构并提出优化建议;兼容性检查,借助对所支持方言及其特性的了解,引导用户遵循特定数据库的最佳实践。

该工具集所提供的工具如下:

lint_sql:校验 SQL 查询语法并返回错误。输入为 sql(字符串)——要分析的 SQL 查询;dialect(字符串,可选)——SQL 方言(例如 'mysql'、'postgres')。返回 ParseResult,包含 is_valid(布尔值)表示 SQL 是否有效、message(字符串)为错误信息或“No syntax errors”、position(对象,可选)为错误出现的行与列(如存在)。

transpile_sql:在不同方言之间转换 SQL。输入为 sql(字符串)——要转换的 SQL 语句;read_dialect(字符串)——源 SQL 方言;write_dialect(字符串)——目标 SQL 方言。返回 TranspileResult,包含 is_valid(布尔值)表示转换是否成功、message(字符串)为错误信息或成功确认、sql(字符串)为转换成功后的 SQL。

get_all_table_references:从 SQL 中提取表和 CTE 引用。输入为 sql(字符串)——要分析的 SQL 语句;dialect(字符串,可选)——SQL 方言。返回 TableReferencesResult,包含 is_valid(布尔值)表示分析是否成功、message(字符串)为状态信息、tables(数组)为表引用列表,带有 type、catalog、database、表名、别名和完全限定名。

get_all_column_references:提取带表上下文的列引用。输入为 sql(字符串)——要分析的 SQL 语句;dialect(字符串,可选)——SQL 方言。返回 ColumnReferencesResult,包含 is_valid(布尔值)表示分析是否成功、message(字符串)为状态信息、columns(数组)为列引用列表,带有列名、表名和完全限定名。

SQL 方言发现:返回所有受支持的 SQL 方言列表,供所有工具使用。

使用方式方面,推荐使用 uvx 运行,可将配置添加到 claude_desktop_config.json 中;也可在克隆该仓库后,将相关配置添加到 claude_desktop_config.json。以开发模式运行服务器、运行单元测试等命令在资料中未给出具体内容。此外,资料提到可以在 Claude Desktop 设置中更新个人偏好,要求生成的 SQL 先通过 lint_sql 工具校验。

适用场景包括:在向用户输出 SQL 前做语法校验;跨数据库迁移时转换查询方言;分析复杂查询中的表与列引用关系;查询所支持的 SQL 方言以确认兼容性。限制方面,资料未提供更多关于运行环境、依赖版本或错误处理细节的说明。