关于 mcp-server-sql-analyzer
基于 SQLGlot 的 MCP 服务,提供 SQL 语法检查、方言转换以及表和列引用分析。适合需要在生成或迁移 SQL 时进行验证的用户。
主要功能
- 01SQL 语法校验与错误位置
- 02不同 SQL 方言之间的转换
- 03提取表与 CTE 引用
- 04提取列引用及其所属表
- 05列出支持的 SQL 方言
适用场景
- 01在交付 SQL 前先校验语法
- 02将 MySQL 查询迁移为 PostgreSQL
- 03分析复杂查询的表与列依赖关系
MCP 相关
该项目是 MCP 服务,通过 lint_sql、transpile_sql 等工具和 dialects://all 资源向 MCP 客户端提供 SQL 分析能力。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
mcp-server-sql-analyzer
一个使用 SQLGlot 提供 SQL 分析、Lint 检查和方言转换功能的模型上下文协议(MCP)服务。
概述
SQL Analyzer MCP 服务提供用于分析和处理 SQL 查询的工具,可帮助完成以下工作:
- 验证 SQL 语法并进行 Lint 检查
- 在不同 SQL 方言之间转换查询(例如,从 MySQL 转换为 PostgreSQL)
- 提取并分析表引用和依赖关系
- 识别列的使用情况和关系
- 查找受支持的 SQL 方言
Claude 如何使用此服务
作为 AI 助手,此服务增强了我帮助用户高效处理 SQL 的能力:
-
查询验证:在向用户推荐 SQL 之前,我可以立即验证其语法,确保提供的查询正确且适用于相应方言。
-
方言转换:当用户需要在不同数据库系统之间迁移查询时,我可以在保留查询逻辑的同时准确转换语法。
-
代码分析:表和列引用分析能帮助我理解复杂查询,从而更轻松地解释查询结构并提出优化建议。
-
兼容性检查:了解受支持的方言及其特有功能后,我可以引导用户采用适合特定数据库的最佳实践。
这套工具使我能够提供更准确、更有帮助的 SQL 相关协助,同时降低语法错误或方言特有问题的风险。
提示
在 Claude Desktop 设置中更新个人偏好,以要求先使用 lint_sql 工具验证生成的 SQL。
工具
-
lint_sql
- 验证 SQL 查询语法并返回任何错误
- 输入:
- sql (string):要分析的 SQL 查询
- dialect (string,可选):SQL 方言(例如,'mysql'、'postgres')
- 返回:包含以下内容的 ParseResult:
- is_valid (boolean):SQL 是否有效
- message (string):错误消息或“No syntax errors”
- position (object,可选):存在错误时的行和列位置
-
transpile_sql
- 在不同方言之间转换 SQL
- 输入:
- sql (string):要转换的 SQL 语句
- read_dialect (string):源 SQL 方言
- write_dialect (string):目标 SQL 方言
- 返回:包含以下内容的 TranspileResult:
- is_valid (boolean):转换是否成功
- message (string):错误消息或成功确认信息
- sql (string):转换成功时生成的 SQL
-
get_all_table_references
- 从 SQL 中提取表和 CTE 引用
- 输入:
- sql (string):要分析的 SQL 语句
- dialect (string,可选):SQL 方言
- 返回:包含以下内容的 TableReferencesResult:
- is_valid (boolean):分析是否成功
- message (string):状态消息
- tables (array):表引用列表,包含类型、目录、数据库、表名、别名和完全限定名称
-
get_all_column_references
- 提取带有表上下文的列引用
- 输入:
- sql (string):要分析的 SQL 语句
- dialect (string,可选):SQL 方言
- 返回:包含以下内容的 ColumnReferencesResult:
- is_valid (boolean):分析是否成功
- message (string):状态消息
- columns (array):列引用列表,包含列名、表名和完全限定名称
资源
SQL 方言发现
dialects://all
返回所有工具可使用的受支持 SQL 方言列表。
配置
使用 uvx(推荐)
将以下内容添加到 claude_desktop_config.json:
{
"mcpServers": {
"sql-analyzer": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/j4c0bs/mcp-server-sql-analyzer.git",
"mcp-server-sql-analyzer"
]
}
}
}
使用 uv
克隆此仓库后,将以下内容添加到 claude_desktop_config.json:
{
"mcpServers": {
"sql-analyzer": {
"command": "uv",
"args": [
"--directory",
"/path/to/mcp-server-sql-analyzer",
"run",
"mcp-server-sql-analyzer"
]
}
}
}
开发
在开发模式下运行服务:
# Clone the repository
git clone [email protected]:j4c0bs/mcp-server-sql-analyzer.git
# Run the server
npx @modelcontextprotocol/inspector uv --directory /path/to/mcp-server-sql-analyzer run mcp-server-sql-analyzer
运行单元测试:
uv run pytest .
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。