使用说明
mcp sql
MCP服务器,允许LLM查询PostgreSQL、SQLite和MySQL数据库。单二进制,默认只读,多数据库。
安装
cargo install mcp-sql
用法
# Demo mode — try it instantly with sample data
mcp-sql --demo
# Single database
mcp-sql --url postgres://user:pass@localhost/mydb
# SQLite
mcp-sql --url sqlite:path/to/db.sqlite
# Multiple databases
mcp-sql --url postgres://localhost/app --url sqlite:analytics.db
# Enable write operations
mcp-sql --url sqlite:local.db --allow-write
# Custom row limit
mcp-sql --url mysql://user:pass@localhost/shop --row-limit 500
# Read URL from environment variable
mcp-sql --url-env DATABASE_URL
# Mix --url and --url-env
mcp-sql --url sqlite:local.db --url-env PROD_DB_URL
# Custom query timeout (default: 30s)
mcp-sql --url sqlite:local.db --query-timeout 60
配置
克劳德代码
claude mcp add sql -- mcp-sql --url sqlite:path/to/your.db
或编辑 ~/.claude.json 直接:
{
"mcpServers": {
"sql": {
"type": "stdio",
"command": "mcp-sql",
"args": ["--url", "sqlite:path/to/your.db"]
}
}
}
克劳德桌面
添加到您的Claude桌面配置(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上):
{
"mcpServers": {
"sql": {
"command": "mcp-sql",
"args": [
"--url", "postgres://user:pass@localhost/mydb",
"--url", "sqlite:analytics.db"
]
}
}
}
光标/VS代码
添加到MCP配置(.cursor/mcp.json 或同等):
{
"mcpServers": {
"sql": {
"command": "mcp-sql",
"args": ["--url", "sqlite:path/to/your.db"]
}
}
}
工具
| 工具 | 说明 |
|---|---|
list_databases |
显示所有连接的数据库及其名称和类型 |
list_tables |
列出具有行数的表 |
describe_table |
列详细信息:名称、类型、可空、默认值、主键、外键 |
show_create_table |
显示表的CREATE TABLE DDL语句 |
show_schema |
所有表格及其关系的Mermaid ER图 |
list_indexes |
索引名称、列和唯一性约束 |
sample_data |
以JSON格式返回表中的示例行(不需要SQL) |
query |
执行SQL并以JSON格式返回结果 |
explain |
显示查询执行计划 |
query_dry_run |
验证SQL并在不执行的情况下显示查询计划 |
所有工具都接受可选 database 连接多个数据库时的参数。如果只连接了一个数据库,则会自动使用它。
CLI选项
| 标志 | 默认值 | 描述 |
|---|---|---|
--url |
-- | 数据库连接URL(可重复) |
--url-env |
-- | 从环境变量读取数据库URL(可重复) |
--demo |
false |
从预加载示例数据的演示SQLite数据库开始 |
--allow-write |
false |
启用写入操作(INSERT、UPDATE、DELETE、CREATE、DROP) |
--row-limit |
100 |
每个查询返回的最大行数 |
--query-timeout |
30 |
查询超时(秒) |
至少一个 --url 或 --url-env 是必需的(除非使用 --demo).
安全
- 默认情况下为只读 --只有
SELECT,WITH,SHOW,PRAGMA,以及EXPLAIN允许查询 - 行限制已执行 —
LIMIT如果不存在,则注入(默认值:100) - 查询超时 --查询在配置的超时后被终止(默认值:30秒)
- 已编辑凭据 --密码被屏蔽
list_databases输出 - PostgreSQL/MySQL --额外使用
SET TRANSACTION READ ONLY用于数据库级别的强制执行
通过 --allow-write 启用 INSERT, UPDATE, DELETE, CREATE,以及 DROP 操作。
支持的数据库
| 数据库 | URL方案 | 备注 |
|---|---|---|
| PostgreSQL | postgres:// 或 postgresql:// |
全力支持 |
| SQLite | sqlite:path 或 sqlite::memory: |
全力支持 |
| MySQL | mysql:// 或 mariadb:// |
全力支持 |
许可证
根据以下任一方式获得许可 Apache许可证,版本2.0 或 MIT许可证 由您选择。