使用说明
本地数据库mcp
v1.2.0版本 --本地 主控程序 服务器,允许AI代理和LLM(例如Cursor、Claude Code、其他MCP客户端)访问您的数据库 不公开凭据 到模型。服务器在您的计算机上运行,从env或config读取连接详细信息,并公开一组固定的工具(请参阅 工具 在......下面代理人按名称调用工具;连接字符串保留在服务器进程中。
与代理/LLM一起使用
- Cursor、Claude Code或任何MCP客户端: 在MCP设置中添加此服务器。客户端运行服务器(例如。
./localdb-mcp或go run ./cmd/server).代理只看到工具名称和JSON输入/输出;它永远看不到连接字符串或凭据。 - 工作流程: 您可以配置数据库(Postgres、SQL Server、通过Docker的MySQL或本地SQLite文件),并通过env或config将服务器指向它们。当你要求代理“添加测试数据”或“更新时间戳”时,它会调用以下工具
list_tables,describe_table,run_query,insert_test_row,或update_test_row。代理不需要知道主机、端口、用户或密码。 - 典型用途: 仅限本地或开发数据库——生成测试数据、检查模式、运行只读查询。不用于生产(见下文免责声明)。
为什么
- 凭据仅在env或
~/.localdb-mcp/config.yaml--永远不要出现在IDE/MCP配置或工具响应中。 - 修复了代理不需要主机/端口/用户/密码的工具集。
- 支持PostgreSQL、SQL Server、SQLite和MySQL作为命名连接
postgres,sqlserver,sqlite,以及mysql.
需求
- 转到1.25+
- PostgreSQL、SQL Server、MySQL可访问(例如Docker)用于数据库工具,或SQLite文件/
:memory:.
快速开始
-
构建并运行
go build -o localdb-mcp ./cmd/server ./localdb-mcp或者:
go run ./cmd/server -
配置 (可选用于
ping和list_connections;需要list_tables,describe_table等等)- Env或 .env:参见 .env.示例 为了
MCP_DB_POSTGRES_URI,MCP_DB_SQLSERVER_URI,MCP_DB_SQLITE_URI,以及MCP_DB_MYSQL_URI。服务器加载.env如果存在,则从其工作目录中删除;否则,导出到您的shell中。 - 可选文件:
~/.localdb-mcp/config.yaml随着connections: { postgres: "uri", sqlserver: "uri", sqlite: "/path/to/db.sqlite", mysql: "user:pass@tcp(host:3306)/db" }.ev覆盖文件。
- Env或 .env:参见 .env.示例 为了
-
添加到您的MCP客户端 --配置示例见下文。
客户端配置
光标
首选 设置 > 特性 > MCP服务器 > +添加新的MCP服务器:
- 姓名:
localdb(或任何名称) - 类型:
command - 命令: 二进制文件的绝对路径(例如。
/Users/me/dev/localdb-mcp/localdb-mcp)或go run ... - Args: (如果使用二进制,请留空,或使用
run /path/to/cmd/server如果使用go)
或手动编辑 .cursor/mcp.json (如果项目特定):
{
"mcpServers": {
"localdb": {
"command": "/Users/me/dev/localdb-mcp/localdb-mcp",
"args": [],
"env": {
"MCP_DB_POSTGRES_URI": "postgres://user:pass@localhost:5432/db",
"MCP_DB_SQLSERVER_URI": "sqlserver://sa:Pass@localhost:1433"
}
}
}
}
注: 游标也可以读取
.env如果您从服务器的工作目录运行该文件,则可以将其保存在该目录中,但在配置中显式设置环境变量通常更可靠。
克劳德桌面版
编辑配置文件:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 窗户:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"localdb": {
"command": "/Users/me/dev/localdb-mcp/localdb-mcp",
"env": {
"MCP_DB_POSTGRES_URI": "postgres://user:pass@localhost:5432/db"
}
}
}
}
VS代码(通用MCP扩展)
如果在VS Code中使用MCP扩展,通常会将其添加到 .vscode/settings.json 或扩展的特定配置:
"mcp.servers": {
"localdb": {
"command": "/path/to/localdb-mcp",
"transport": "stdio"
}
}
工具
| 工具 | 说明 |
|---|---|
ping |
健康检查→ {"message":"pong"} |
list_connections |
配置的连接ID和类型(无凭据) |
list_tables |
connection_id,可选 schema → 表名称 |
describe_table |
connection_id, table,可选 schema → 列(名称、类型、可空、is_pk) |
run_query (只读) |
connection_id, sql,可选 params → rows.拒绝插入/更新/删除/DDL。 |
insert_test_row |
connection_id, table, row,可选 schema, return_id → 可选的 inserted_id |
update_test_row |
connection_id, table, key (PK), set (值),可选 schema → rows_affected |
export_database |
connection_id, path → 使用引擎本机工具将数据库导出到SQL转储文件 |
import_database |
connection_id, path, confirm_destructive → 导入SQL转储文件(破坏性) |
安全
默认情况下为只读; run_query 只允许SELECT(和只读SQL)。仅通过以下方式写入 insert_test_row 和 update_test_row. update_test_row 强制只针对主键——它验证了 key 列与表的实际PK匹配,以防止大规模更新。没有DDL。凭证从不包含在工具结果或日志中。
export_database 和 import_database 使用引擎原生CLI工具(pg_dump/psql、mysqldump/mysql、sqlite3、sqlcmd)。导入需要明确 confirm_destructive=true 因为它可能会覆盖数据。SQL Server导出使用纯Go(不需要外部工具);所有其他引擎都需要在服务器上安装相应的CLI工具。
免责声明
此软件仅用于开发和测试。
- 不要将其与生产数据库或生产机密一起使用。 仅与本地或专用的开发/测试数据库以及您可以在计算机上公开的凭据一起使用。
- 无保修。 本软件“按原样”提供。作者和贡献者不对因使用本软件而导致的任何损坏、数据丢失或误用负责,包括(但不限于)配置错误、凭据泄露或对生产系统的使用。
- 你有责任 关于如何配置和运行服务器,以及如何防止凭据在生产环境中使用。
持续集成
GitHub Actions在每个PR上运行 main 并推动 main:构建、测试(-race), go vet,以及 戈朗茨皮棉 静态分析。看 .github/workflows/ci.yml 和 .golangci.yml.
测试
go test ./...
go run ./cmd/mcpclient ping
go run ./cmd/mcpclient list_connections
go run ./cmd/mcpclient list_tables '{"connection_id":"postgres"}'
go run ./cmd/mcpclient describe_table '{"connection_id":"postgres","table":"users"}'
go run ./cmd/mcpclient run_query '{"connection_id":"postgres","sql":"SELECT 1"}'
go run ./cmd/mcpclient insert_test_row '{"connection_id":"postgres","table":"users","row":{"name":"Test"}}'
go run ./cmd/mcpclient update_test_row '{"connection_id":"postgres","table":"users","key":{"id":1},"set":{"name":"Updated"}}'
go run ./cmd/mcpclient export_database '{"connection_id":"postgres","path":"/tmp/dump.sql"}'
go run ./cmd/mcpclient import_database '{"connection_id":"postgres","path":"/tmp/dump.sql","confirm_destructive":true}'
布局
cmd/server--MCP服务器入口点(stdio)cmd/mcpclient--CLI调用任何工具(用于测试)internal/config--env+可选.env(cwd)及~/.localdb-mcp/config.yamlinternal/server--MCP服务器和工具注册internal/db--驱动程序接口、Postgres/SQL Server/SQLite/MySQL实现、连接管理器
贡献
欢迎捐款。请打开一个问题来讨论更大的更改,或者发送一个bug修复和小改进的拉取请求。通过贡献,您同意您的提交将获得相同的许可 麻省理工学院 这个项目的条款。
许可证
麻省理工学院.使用风险自负;请参阅上文免责声明。