项目简介
SQLsaber是一个功能强大的开源智能SQL助手,旨在帮助用户通过自然语言与数据库交互。它能够自动进行数据库模式内省、安全执行SQL查询,并分析结果以回答用户的提问。项目支持PostgreSQL、SQLite和MySQL等多种数据库,并集成了Model Context Protocol (MCP) 服务器功能,允许AI代理(如Claude Code)直接利用其SQL工具。
主要功能点
- 自然语言到SQL: 将用户的自然语言问题自动转化为可执行的SQL查询。
- 数据库模式内省: 自动发现数据库中的表结构和关系,提供详细的模式信息。
- 安全查询执行: 默认只执行只读查询,内置保护机制,防止对数据库进行修改性操作。
- 内存管理: 允许用户为模型添加数据库相关的特定上下文信息,提升交互的准确性和相关性。
- 会话与历史: 支持交互式会话模式,并能存储、显示和恢复之前的对话线程。
- 多数据库支持: 兼容PostgreSQL、SQLite和MySQL数据库,并可通过CSV文件创建临时数据库。
- MCP服务器集成: 提供一个MCP服务器,将SQLsaber的核心功能(如列出数据库、内省模式、执行SQL)作为工具暴露给LLM客户端。
安装步骤
SQLsaber可以通过'uv'、'pipx'或'brew'等工具轻松安装。推荐使用'uv'进行安装,因为它能提供更快的依赖解析和更可靠的安装:
- 确保安装 'uv' (如果未安装): 请访问 uv GitHub页面 获取适用于您操作系统的安装指南。
- 安装 SQLsaber:
或者使用 'pipx':uv tool install sqlsaber
或者使用 'brew' (macOS/Linux):pipx install sqlsaberbrew install uv uv tool install sqlsaber
MCP服务器配置
SQLsaber的MCP服务器允许AI客户端(如Claude Code)通过JSON-RPC协议调用其数据库工具。要配置MCP客户端,您需要提供服务器的启动命令。
MCP客户端所需配置信息示例: (以下为MCP客户端在连接SQLsaber MCP服务器时需要配置的信息格式,具体字段名称和结构会因客户端类型而异。请根据您使用的MCP客户端文档进行实际配置。)
{ "server_name": "SQLsaber Assistant", "command": "uvx", "args": ["--from", "sqlsaber", "saber-mcp"], "description": "连接到SQLsaber MCP服务器,通过AI调用SQL工具来查询数据库。", "tools_available": [ "get_databases", "list_tables", "introspect_schema", "execute_sql" ] }
配置信息说明:
- 'server_name': 给MCP服务器起一个易于识别的名称,例如 "SQLsaber Assistant"。
- 'command': 启动MCP服务器的命令,这里是'uvx'。
- 'args': 传递给'command'的参数列表,用于指定启动'sqlsaber'的'saber-mcp'模块。
- 'description': 服务器的简要功能描述。
- 'tools_available': 服务器暴露给客户端的工具列表。
注意: 在启动MCP服务器之前,请务必使用'saber db add'命令配置至少一个数据库连接。MCP服务器会利用这些已配置的数据库来响应客户端的工具调用请求。
基本使用方法
-
配置数据库连接: 在开始使用MCP服务器前,您需要先使用SQLsaber CLI配置一个或多个数据库连接。
saber db add my_database_name # 命令行将引导您输入数据库类型(如postgresql, mysql, sqlite)、主机、端口、数据库名、用户名和密码等详细连接信息。 -
启动MCP服务器: 在终端中运行以下命令来启动SQLsaber MCP服务器:
uvx --from sqlsaber saber-mcp服务器启动后,它将监听来自MCP客户端的连接请求。
-
MCP客户端调用工具示例: 一旦MCP客户端连接到SQLsaber MCP服务器,它就可以通过JSON-RPC协议调用SQLsaber提供的数据库工具:
- 获取所有已配置的数据库列表: 客户端可以调用'get_databases()'工具来了解服务器可用的数据库。
- 列出指定数据库的表: 客户端可以调用'list_tables(database='my_database_name')'工具来获取'my_database_name'中所有表的名称和行数。
- 内省数据库模式: 客户端可以调用'introspect_schema(database='my_database_name', table_pattern='users%')'工具来获取匹配'users%'模式的表的详细模式信息。
- 执行SQL查询: 客户端可以调用'execute_sql(database='my_database_name', query='SELECT * FROM users LIMIT 10')'工具来安全执行只读SQL查询并获取结果。
信息
分类
AI与计算