mcpField
M
mcp-server-sql-analyzer

mcp-server-sql-analyzer

本地服务
github.com/j4c0bs数据库3269 周前更新

关于 mcp-server-sql-analyzer

基于 SQLGlot 的 MCP 服务,提供 SQL 语法检查、方言转换以及表和列引用分析。适合需要在生成或迁移 SQL 时进行验证的用户。

主要功能

  1. 01SQL 语法校验与错误位置
  2. 02不同 SQL 方言之间的转换
  3. 03提取表与 CTE 引用
  4. 04提取列引用及其所属表
  5. 05列出支持的 SQL 方言

适用场景

  1. 01在交付 SQL 前先校验语法
  2. 02将 MySQL 查询迁移为 PostgreSQL
  3. 03分析复杂查询的表与列依赖关系

MCP 相关

该项目是 MCP 服务,通过 lint_sql、transpile_sql 等工具和 dialects://all 资源向 MCP 客户端提供 SQL 分析能力。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"sql-analyzer": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/inspector"
]
}
}
}
启动命令npx -y @modelcontextprotocol/inspector

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

安装包
npm@modelcontextprotocol/inspector

工具

还没有获取到工具列表

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

详细介绍

mcp-server-sql-analyzer

一个使用 SQLGlot 提供 SQL 分析、Lint 检查和方言转换功能的模型上下文协议(MCP)服务。

概述

SQL Analyzer MCP 服务提供用于分析和处理 SQL 查询的工具,可帮助完成以下工作:

  • 验证 SQL 语法并进行 Lint 检查
  • 在不同 SQL 方言之间转换查询(例如,从 MySQL 转换为 PostgreSQL)
  • 提取并分析表引用和依赖关系
  • 识别列的使用情况和关系
  • 查找受支持的 SQL 方言
Claude 如何使用此服务

作为 AI 助手,此服务增强了我帮助用户高效处理 SQL 的能力:

  1. 查询验证:在向用户推荐 SQL 之前,我可以立即验证其语法,确保提供的查询正确且适用于相应方言。

  2. 方言转换:当用户需要在不同数据库系统之间迁移查询时,我可以在保留查询逻辑的同时准确转换语法。

  3. 代码分析:表和列引用分析能帮助我理解复杂查询,从而更轻松地解释查询结构并提出优化建议。

  4. 兼容性检查:了解受支持的方言及其特有功能后,我可以引导用户采用适合特定数据库的最佳实践。

这套工具使我能够提供更准确、更有帮助的 SQL 相关协助,同时降低语法错误或方言特有问题的风险。

提示

在 Claude Desktop 设置中更新个人偏好,以要求先使用 lint_sql 工具验证生成的 SQL。

工具

  1. lint_sql

    • 验证 SQL 查询语法并返回任何错误
    • 输入:
      • sql (string):要分析的 SQL 查询
      • dialect (string,可选):SQL 方言(例如,'mysql'、'postgres')
    • 返回:包含以下内容的 ParseResult:
      • is_valid (boolean):SQL 是否有效
      • message (string):错误消息或“No syntax errors”
      • position (object,可选):存在错误时的行和列位置
  2. transpile_sql

    • 在不同方言之间转换 SQL
    • 输入:
      • sql (string):要转换的 SQL 语句
      • read_dialect (string):源 SQL 方言
      • write_dialect (string):目标 SQL 方言
    • 返回:包含以下内容的 TranspileResult:
      • is_valid (boolean):转换是否成功
      • message (string):错误消息或成功确认信息
      • sql (string):转换成功时生成的 SQL
  3. get_all_table_references

    • 从 SQL 中提取表和 CTE 引用
    • 输入:
      • sql (string):要分析的 SQL 语句
      • dialect (string,可选):SQL 方言
    • 返回:包含以下内容的 TableReferencesResult:
      • is_valid (boolean):分析是否成功
      • message (string):状态消息
      • tables (array):表引用列表,包含类型、目录、数据库、表名、别名和完全限定名称
  4. 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

评论

支持 Markdown

第一次接触 MCP?

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

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