# SQLx MCP 数据库配置功能验证
本文档展示了 SQLx MCP 服务器如何主动报告数据库配置信息。
## 实现的功能
1. **自动检测数据库配置**:服务器启动时会按以下优先级检测数据库配置:
- 命令行参数 `--database-url`
- 环境变量 `DATABASE_URL`
- 无配置(需要客户端提供)
2. **安全的信息显示**:数据库 URL 中的密码会被自动掩码为 `***`
3. **客户端通知**:通过 MCP 协议的 `initialize` 响应中的 `instructions` 字段告知客户端当前的数据库配置状态
## 测试结果
### 测试 1: 无数据库配置
```
Database configuration: No database configured. Will require database_url parameter in tool calls.
```
### 测试 2: 环境变量配置
```bash
$env:DATABASE_URL = "postgresql://test_user:test_password@localhost:15432/test_db"
```
输出:
```
Database configuration: Database configured via environment variable: postgresql://test_user:***@localhost:15432/test_db
```
### 测试 3: 命令行参数配置
```bash
.\target\release\sqlx-mcp.exe --database-url "mysql://root:secret123@localhost:13306/testdb"
```
输出:
```
Database configuration: Database configured via command line: mysql://root:***@localhost:13306/testdb
```
## 客户端使用指南
当客户端连接到 MCP 服务器时,会在初始化响应的 `instructions` 字段中看到当前的数据库配置信息:
```
This server provides SQL database tools. Tools: get_database_info, list_tables, get_table_structure, get_table_ddl, execute_readonly_query, execute_write_query.
Current database configuration: [配置状态]
If a database is already configured, you can omit the database_url parameter in tool calls.
```
## 工具描述更新
所有工具的 `database_url` 参数描述已更新为:
```
Database URL to connect to (optional, falls back to command line or environment variable)
```
这样客户端就清楚知道:
- 如果服务器已经配置了数据库,可以不传 `database_url` 参数
- 如果需要连接不同的数据库,可以在工具调用时提供 `database_url` 参数覆盖默认配置