项目简介
mcp-server-sql-analyzer 是一个基于 Model Context Protocol (MCP) 构建的服务器,专注于提供 SQL 分析能力。它利用 SQLGlot 库,为大型语言模型 (LLM) 客户端提供结构化的 SQL 信息和实用工具,帮助 LLM 更好地理解和处理 SQL 代码。
主要功能点
- SQL 语法检查 (lint_sql): 验证 SQL 查询语句的语法是否正确,并返回详细的错误信息,帮助用户快速定位和修复 SQL 错误。
- SQL 方言转换 (transpile_sql): 将 SQL 查询从一种数据库方言转换为另一种方言,例如将 MySQL 的 SQL 语句转换为 PostgreSQL 兼容的语句,方便用户在不同数据库系统之间迁移和兼容。
- 表引用提取 (get_all_table_references): 从 SQL 语句中提取所有表和公共表表达式 (CTE) 的引用信息,包括表名、别名、所属数据库和 catalog 等,帮助理解 SQL 查询的数据来源。
- 列引用提取 (get_all_column_references): 从 SQL 语句中提取所有列的引用信息,包括列名、所属表名和完整限定名,帮助理解 SQL 查询的数据访问模式。
- 支持多种 SQL 方言: 基于 SQLGlot,支持广泛的 SQL 方言,可以通过 'dialects://all' 资源发现所有支持的方言。
安装步骤
-
克隆仓库: 首先,你需要克隆 GitHub 仓库到本地:
git clone https://github.com/j4c0bs/mcp-server-sql-analyzer.git cd mcp-server-sql-analyzer -
安装运行环境: 根据仓库 'README.md' 提供的配置,推荐使用 'uvx' 或 'uv' 来运行。确保你的环境中已安装 uv 或 uvx. 如果尚未安装,请根据 uv 或 uvx 的官方文档进行安装。
服务器配置
MCP 服务器需要配置在 MCP 客户端(例如 Claude Desktop)中。以下是两种推荐的配置方式,选择其一添加到你的 'claude_desktop_config.json' 配置文件中:
方式一:使用 uvx (推荐)
这种方式使用 'uvx' 从 Git 仓库直接运行 MCP 服务器,无需本地克隆仓库。
{ "mcpServers": { "sql-analyzer": { // 服务器名称,可以自定义 "command": "uvx", // 运行命令,使用 uvx "args": [ // 命令参数 "--from", // 从哪里获取项目 "git+https://github.com/j4c0bs/mcp-server-sql-analyzer.git", // Git 仓库 URL "mcp-server-sql-analyzer" // 运行的入口点,通常是包名或可执行文件名 ] } } }
方式二:使用 uv (本地仓库)
这种方式需要在本地克隆仓库后,使用 'uv' 运行 MCP 服务器。你需要将 '/path/to/mcp-server-sql-analyzer' 替换为你本地仓库的实际路径。
{ "mcpServers": { "sql-analyzer": { // 服务器名称,可以自定义 "command": "uv", // 运行命令,使用 uv "args": [ // 命令参数 "--directory", // 指定工作目录 "/path/to/mcp-server-sql-analyzer", // 替换为本地仓库路径 "run", // uv 的 run 命令,用于运行项目 "mcp-server-sql-analyzer" // 运行的入口点 ] } } }
注意: 请确保 'claude_desktop_config.json' 文件位置正确,通常位于用户配置目录下。具体的配置文件位置请参考 MCP 客户端的文档。
基本使用方法
配置完成后,MCP 客户端(如 Claude Desktop)应该能够自动连接到 'sql-analyzer' 服务器。你可以通过客户端的功能,例如在 Claude 中,请求其使用 'lint_sql' 工具来检查 SQL 语法,或使用 'transpile_sql' 工具进行 SQL 方言转换。具体工具的使用方式和参数,可以参考仓库 'README.md' 中 "Tools" 部分的描述,以及工具自身的文档。
例如,在 Claude 中,你可以指示它:
"请使用 'lint_sql' 工具检查以下 SQL 语句的语法: 'SELECT * FROM users WHERE condition' "
服务器将接收到请求,调用 'lint_sql' 工具分析 SQL 语句,并将结果返回给客户端。客户端再将结果呈现给你。
信息
分类
数据库与文件