项目简介

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'进行安装,因为它能提供更快的依赖解析和更可靠的安装:

  1. 确保安装 'uv' (如果未安装): 请访问 uv GitHub页面 获取适用于您操作系统的安装指南。
  2. 安装 SQLsaber:
    uv tool install sqlsaber
    或者使用 'pipx':
    pipx install sqlsaber
    或者使用 'brew' (macOS/Linux):
    brew 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服务器会利用这些已配置的数据库来响应客户端的工具调用请求。

基本使用方法

  1. 配置数据库连接: 在开始使用MCP服务器前,您需要先使用SQLsaber CLI配置一个或多个数据库连接。

    saber db add my_database_name
    # 命令行将引导您输入数据库类型(如postgresql, mysql, sqlite)、主机、端口、数据库名、用户名和密码等详细连接信息。
  2. 启动MCP服务器: 在终端中运行以下命令来启动SQLsaber MCP服务器:

    uvx --from sqlsaber saber-mcp

    服务器启动后,它将监听来自MCP客户端的连接请求。

  3. 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与计算