DBChat 能将你的数据库转变为一个智能的对话伙伴。你可以用自然语言提问,即刻获取答案,并创建精美的可视化图表,这一切都能通过 Claude Desktop 实现。
从 GitHub Releases 下载最新版本:
dbchat-2.0.4.jar
- 基础版本(支持 PostgreSQL、SQLite、H2、HSQLDB、CSV)dbchat-2.0.4.jar
- 标准版本(新增 MySQL、MariaDB、ClickHouse)dbchat-2.0.4.jar
- 企业版本(新增 Oracle、SQL Server、DB2)dbchat-2.0.4.jar
- 包含所有数据库支持(400MB+)注意:你也可以仅构建包含所需驱动的自定义 JAR 文件。详情请参阅 INSTALL.md。
重要提示:请确保你拥有使用所安装的任何 JDBC 驱动的合法许可。DBChat 许可不涵盖任何第三方代码或二进制文件。
创建一个配置文件 dbchat.conf
:
# 基本数据库连接
DB_URL=jdbc:mysql://localhost:3306/your_database
DB_USER=your_username
DB_PASSWORD=your_password
DB_DRIVER=com.mysql.cj.jdbc.Driver
# 可选:启用 Web 界面
HTTP_MODE=false
HTTP_PORT=8080
常见数据库示例: MySQL:
DB_URL=jdbc:mysql://localhost:3306/your_database
DB_USER=your_username
DB_PASSWORD=your_password
DB_DRIVER=com.mysql.cj.jdbc.Driver
PostgreSQL:
DB_URL=jdbc:postgresql://localhost:5432/your_database
DB_USER=your_username
DB_PASSWORD=your_password
DB_DRIVER=org.postgresql.Driver
SQLite:
DB_URL=jdbc:sqlite:/path/to/your/database.db
DB_USER=
DB_PASSWORD=
DB_DRIVER=org.sqlite.JDBC
使用 H2 进行测试(无需设置):
DB_URL=jdbc:h2:mem:testdb
DB_USER=sa
DB_PASSWORD=
DB_DRIVER=org.h2.Driver
{
"mcpServers": {
"database": {
"command": "java",
"args": [
"-jar",
"/absolute/path/to/dbchat-2.0.4.jar",
"--config_file=/absolute/path/to/dbchat.conf"
]
}
}
}
不使用配置文件的替代方法:
{
"mcpServers": {
"database": {
"command": "java",
"args": ["-jar", "/absolute/path/to/dbchat-2.0.4.jar"],
"env": {
"DB_URL": "jdbc:mysql://localhost:3306/your_database",
"DB_USER": "your_username",
"DB_PASSWORD": "your_password",
"DB_DRIVER": "com.mysql.cj.jdbc.Driver"
}
}
}
}
Windows 示例:
{
"mcpServers": {
"database": {
"command": "java",
"args": [
"-jar",
"C:/Users/YourName/Downloads/dbchat-2.0.4.jar",
"--config_file=C:/Users/YourName/dbchat.conf"
]
}
}
}
注意:如果 Java 不在你的系统路径中,请在命令中使用 Java(JDK 17+)的完整路径。
你可以同时使用多个数据库!
{
"mcpServers": {
"production-db": {
"command": "java",
"args": ["-jar", "/path/to/dbchat-2.0.4.jar"],
"env": {
"DB_URL": "jdbc:mysql://prod-server:3306/production",
"DB_USER": "readonly_user",
"DB_PASSWORD": "secure_password",
"DB_DRIVER": "com.mysql.cj.jdbc.Driver",
"SELECT_ONLY": "true"
}
},
"analytics-db": {
"command": "java",
"args": ["-jar", "/path/to/dbchat-2.0.4.jar"],
"env": {
"DB_URL": "jdbc:postgresql://analytics:5432/warehouse",
"DB_USER": "analyst",
"DB_PASSWORD": "password",
"DB_DRIVER": "org.postgresql.Driver"
}
}
}
}
关闭并重新打开 Claude Desktop。你应该会在聊天输入框中看到数据库连接指示器。
DBChat 几乎可以与任何数据库配合使用(只要该数据库有 JDBC 驱动)。
完整列表和构建选项请参阅 INSTALL.md。
"数据库中有哪些表?"
"显示客户表的结构"
"每个表中有多少条记录?"
"计算每个客户细分市场的客户终身价值"
"识别我们销售数据中的季节性趋势"
"找出客户年龄与购买行为之间的相关性"
"显示从访客到购买的转化漏斗"
"哪些产品的退货率最高?"
"创建一个显示每日销售业绩的仪表盘"
"找出有流失风险的客户"
"显示客户满意度趋势"
"确定我们最有价值的客户细分市场"
"生成本季度的损益表摘要"
"显示过去 12 个月的现金流趋势"
"按部门创建费用明细"
"监控所有仓库的库存水平"
"显示各承运商的运输绩效"
"找出我们订单履行流程中的瓶颈"
DBChat 使 Claude 能够直接从你的数据库创建令人惊叹的可视化图表:
通过只读访问保护你的数据:
SELECT_ONLY=true
控制资源使用:
MAX_ROWS_LIMIT=1000
QUERY_TIMEOUT_SECONDS=30
MAX_SQL_LENGTH=10000
启用 HTTP 模式以实现基于 Web 的访问:
# 开启 HTTP 监听器
HTTP_MODE=true
# 监听端口 8080
HTTP_PORT=8080
# 绑定到所有接口(允许外部访问)
BIND_ADDRESS=0.0.0.0
# 注意:如果未指定绑定地址,默认绑定到本地主机(最安全)
然后通过 http://localhost:8080/
进行访问。例如,尝试 http://localhost:8080/health
来检查健康状态。
若要通过 CLI 参数进行类似配置,请使用:
# 仅绑定到本地主机(默认,最安全)
java -jar dbchat-2.0.4.jar --http_mode=true --http_port=8080
# 绑定到所有接口(允许外部访问)
java -jar dbchat-2.0.4.jar --http_mode=true --bind_address=0.0.0.0 --http_port=8080
# 绑定到特定接口
java -jar dbchat-2.0.4.jar --http_mode=true --bind_address=192.168.1.100 --http_port=8080
为了实现最大的灵活性,DBChat 支持多种配置方法,如 CLI 参数、配置文件、环境变量、系统属性和内置默认值。了解优先级顺序对于故障排除和高级设置至关重要。
这意味着命令行参数将始终覆盖配置文件,配置文件将覆盖环境变量,依此类推。
格式:--parameter_name=value
使用场景:快速覆盖、测试、一次性配置
java -jar dbchat-2.0.4.jar \
--db_url="jdbc:mysql://localhost:3306/mydb" \
--db_user="username" \
--db_password="password" \
--db_driver="com.mysql.cj.jdbc.Driver" \
--http_mode=true \
--http_port=8080 \
--select_only=true
可用参数:
--config_file=/path/to/config.conf
--db_url="jdbc:..."
--db_user="username"
--db_password="password"
--db_driver="com.mysql.cj.jdbc.Driver"
--http_mode=true
--http_port=8080
--max_connections=20
--connection_timeout_ms=30000
--query_timeout_seconds=60
--select_only=true
--max_sql_length=50000
--max_rows_limit=10000
格式:KEY=VALUE
(每行一个)
使用场景:生产环境、复杂配置、版本控制
创建一个文件(例如 dbchat.conf
):
# 数据库连接
DB_URL=jdbc:postgresql://localhost:5432/myapp
DB_USER=dbuser
DB_PASSWORD=my secure password with spaces
DB_DRIVER=org.postgresql.Driver
# 连接池设置
MAX_CONNECTIONS=20
CONNECTION_TIMEOUT_MS=60000
IDLE_TIMEOUT_MS=300000
MAX_LIFETIME_MS=1800000
LEAK_DETECTION_THRESHOLD_MS=60000
# 查询设置
QUERY_TIMEOUT_SECONDS=45
SELECT_ONLY=false
MAX_SQL_LENGTH=50000
MAX_ROWS_LIMIT=50000
# 服务器设置
HTTP_MODE=true
HTTP_PORT=8080
使用方法:
java -jar dbchat-2.0.4.jar --config_file=dbchat.conf
配置文件特性:
#
开头DB_PASSWORD="password with spaces"
格式:UPPERCASE_WITH_UNDERSCORES
使用场景:Docker、云部署、CI/CD、安全凭证管理
export DB_URL="jdbc:mysql://localhost:3306/mydb"
export DB_USER="username"
export DB_PASSWORD="password"
export DB_DRIVER="com.mysql.cj.jdbc.Driver"
export HTTP_MODE="true"
export HTTP_PORT="8080"
export SELECT_ONLY="true"
java -jar dbchat-2.0.4.jar
所有环境变量:
CONFIG_FILE
- 配置文件的路径DB_URL
- 数据库连接 URLDB_USER
- 数据库用户名DB_PASSWORD
- 数据库密码DB_DRIVER
- JDBC 驱动类HTTP_MODE
- 启用 HTTP 模式(true/false)HTTP_PORT
- HTTP 服务器端口MAX_CONNECTIONS
- 连接池大小CONNECTION_TIMEOUT_MS
- 连接超时时间QUERY_TIMEOUT_SECONDS
- 查询超时时间SELECT_ONLY
- 只读模式(true/false)MAX_SQL_LENGTH
- 最大查询长度MAX_ROWS_LIMIT
- 最大结果行数IDLE_TIMEOUT_MS
- 连接空闲超时时间MAX_LIFETIME_MS
- 连接最大生命周期LEAK_DETECTION_THRESHOLD_MS
- 泄漏检测阈值格式:-Dparameter.name=value
(下划线变为点)
使用场景:JVM 特定配置、IDE 运行配置
java -Ddb.url="jdbc:mysql://localhost:3306/mydb" \
-Ddb.user="username" \
-Ddb.password="password" \
-Ddb.driver="com.mysql.cj.jdbc.Driver" \
-Dhttp.mode="true" \
-Dhttp.port="8080" \
-jar dbchat-2.0.4.jar
属性命名:环境变量 DB_URL
对应的系统属性为 db.url
适用情况:未提供配置时 值:为开发提供安全的默认值
DB_URL=jdbc:h2:mem:testdb
DB_USER=sa
DB_PASSWORD=
DB_DRIVER=org.h2.Driver
HTTP_MODE=false
HTTP_PORT=8080
MAX_CONNECTIONS=10
CONNECTION_TIMEOUT_MS=30000
QUERY_TIMEOUT_SECONDS=30
SELECT_ONLY=true
MAX_SQL_LENGTH=10000
MAX_ROWS_LIMIT=10000
# 配置文件中设置 HTTP_PORT=8080
echo "HTTP_PORT=8080" > config.conf
# 环境变量设置不同的端口
export HTTP_PORT=9090
# 命令行参数覆盖两者
java -jar dbchat-2.0.4.jar --config_file=config.conf --http_port=7070
# 结果:使用端口 7070(命令行参数优先级最高)
# 使用配置文件设置数据库相关设置
echo "DB_URL=jdbc:mysql://localhost:3306/mydb" > prod.conf
echo "DB_USER=produser" >> prod.conf
echo "SELECT_ONLY=true" >> prod.conf
# 通过环境变量覆盖密码(更安全)
export DB_PASSWORD="secure_password"
# 通过命令行参数覆盖端口(仅本次运行有效)
java -jar dbchat-2.0.4.jar --config_file=prod.conf --http_port=9090
{
"mcpServers": {
"database": {
"command": "java",
"args": [
"-jar", "/path/to/dbchat-2.0.4.jar",
"--config_file=/path/to/production.conf",
"--select_only=true"
],
"env": {
"DB_PASSWORD": "secure_password_from_env"
}
}
}
}
DB_URL
- JDBC 连接字符串(必需)DB_USER
- 数据库用户名DB_PASSWORD
- 数据库密码DB_DRIVER
- JDBC 驱动类(必需)MAX_CONNECTIONS=10
- 最大并发连接数CONNECTION_TIMEOUT_MS=30000
- 连接获取超时时间IDLE_TIMEOUT_MS=600000
- 连接空闲超时时间(10 分钟)MAX_LIFETIME_MS=1800000
- 连接最大生命周期(30 分钟)LEAK_DETECTION_THRESHOLD_MS=60000
- 连接泄漏检测(1 分钟)QUERY_TIMEOUT_SECONDS=30
- SQL 查询执行超时时间SELECT_ONLY=true
- 只读模式(阻止 INSERT/UPDATE/DELETE 操作)MAX_SQL_LENGTH=10000
- SQL 查询的最大字符数MAX_ROWS_LIMIT=10000
- 每个查询返回的最大行数HTTP_MODE=false
- 启用 HTTP Web 界面HTTP_PORT=8080
- HTTP 服务器端口# 推荐:使用环境变量存储密码
export DB_PASSWORD="secure_password"
java -jar dbchat-2.0.4.jar --config_file=app.conf
# 推荐:使用具有受限权限的配置文件
chmod 600 secure.conf
java -jar dbchat-2.0.4.jar --config_file=secure.conf
# 避免:在命令行中明文显示密码(会在进程列表中可见)
java -jar dbchat-2.0.4.jar --db_password="visible_password"
# 创建安全的配置文件
umask 077
cat > secure.conf << EOF
DB_PASSWORD=secure_password
EOF
# 验证权限
ls -la secure.conf
# 应该显示:-rw-------(仅所有者可读写)
启用调试日志以查看实际使用的值:
java -Dlogging.level.root=DEBUG -jar dbchat-2.0.4.jar --config_file=myconfig.conf
env | grep DB_
进行验证# 使用当前配置测试数据库连接
java -jar dbchat-2.0.4.jar --help
# 验证配置文件语法
grep -v "^#" myconfig.conf | grep -v "^$"
# 检查环境变量
env | grep -E "(DB_|HTTP_|MAX_|SELECT_)"
MAX_ROWS_LIMIT=1000
QUERY_TIMEOUT_SECONDS=30
MAX_CONNECTIONS=10
"ClassNotFoundException"
"Connection refused"
"Server not responding"
SELECT_ONLY=true
MAX_ROWS_LIMIT
和超时设置改变你与数据的交互方式。无需再编写复杂的 SQL 查询,无需再等待报告。只需通过自然语言与你的数据库对话,借助 Claude 的智能和 DBChat 的无缝集成。
立即开始,发现你的数据想要告诉你的信息。