A community-driven registry for Claude, Cursor, Windsurf, Cline & more. Not affiliated with Anthropic.
Are you the author? Sign in to claim
DatabaseMcpServer
🇺🇸 English | 🇨🇳 中文 | 🌐 官网
一个功能强大的数据库操作 MCP (Model Context Protocol) 服务器,聚焦 19 种常用数据库类型(主流 + 特定场景 + 国产化/信创),支持 单实例多数据库动态切换,让 AI 助手能够安全、便捷地执行数据库操作。
# 安装最新版本
dotnet tool install --global DatabaseMcpServer
# 验证安装(CLI 本身没有 --version 参数;传入会得到退出码 2)
dotnet tool list --global | Select-String databasemcpserver
创建 databases.json 配置文件:
{
"databases": [
{
"name": "default",
"connectionString": "Server=localhost;Database=test;Uid=root;Pwd=123456;",
"dbType": "MySql",
"description": "默认数据库",
"isDefault": true
}
]
}
创建 mcp.json 配置文件(VS Code: .vscode/mcp.json):
{
"mcpServers": {
"database": {
"command": "DatabaseMcpServer",
"env": {
"DB_CONFIG_PATH": "D:\\config\\databases.json"
}
}
}
}
重启 IDE 后,在 AI 助手中测试:
"测试数据库连接"
系统返回:
{
"success": true,
"connected": true,
"databaseType": "MySql"
}
从当前版本开始,DatabaseMcpServer 在保留原有 MCP stdio 模式的同时,也支持直接从命令行做两类事情:
-web:启动 localhost Web 配置管理页,并默认自动打开浏览器tool 子命令:直接调用已暴露的 MCP toolinit / config 子命令:初始化并维护本地 databases.json# 启动本地 Web 配置页(默认自动打开浏览器)
DatabaseMcpServer -web
DatabaseMcpServer -web --config "D:\config\databases.json" --no-browser
# 初始化默认配置文件(默认写到 %USERPROFILE%/.database-mcp/databases.json)
DatabaseMcpServer init
# 查看 / 管理本地连接配置
DatabaseMcpServer config list
DatabaseMcpServer config presets
DatabaseMcpServer config preset --db-type Sqlite
DatabaseMcpServer config create --from-preset Sqlite --name sqlite-local --connection-string "Data Source=./data/local.db;Cache=Shared;Mode=ReadWriteCreate;" --description "local sqlite" --set-default
DatabaseMcpServer config create --from-preset Sqlite --name sqlite-preview --print-only
DatabaseMcpServer config add --name sqlite-local --db-type Sqlite --connection-string "Data Source=./data/local.db;Cache=Shared;Mode=ReadWriteCreate;" --set-default
DatabaseMcpServer config rename --name sqlite-local --new-name sqlite-dev
DatabaseMcpServer config update --name sqlite-dev --description "dev sqlite" --set-default
DatabaseMcpServer config validate
DatabaseMcpServer config clone --name sqlite-dev --new-name sqlite-ci
DatabaseMcpServer config doctor
DatabaseMcpServer config export --output ".\\backup-databases.json"
DatabaseMcpServer config import --input ".\\backup-databases.json" --config "D:\config\databases.json" --force
# 列出所有可调用的 tool
DatabaseMcpServer tool list
# 查看某个 tool 的帮助
DatabaseMcpServer tool help switch_database
# 直接调用 tool
DatabaseMcpServer tool list_databases --config "D:\config\databases.json"
DatabaseMcpServer tool get_table_schema --table-name users --config "D:\config\databases.json"
-web 主要用于本地可视化配置管理
localhost / 127.0.0.1,不对公网暴露--config -> ./databases.json -> ./local-databases.json -> DB_CONFIG_PATH -> %USERPROFILE%/.database-mcp/databases.json%USERPROFILE%/.database-mcp/databases.json 作为可写目标databases.json 中的默认连接,以及 %USERPROFILE%/.database-mcp/cli-state.json 中的当前连接--port <number> 可显式指定端口;不传则自动分配可用端口--no-browser 可禁用自动打开浏览器init / config 主要用于本地配置管理
%USERPROFILE%/.database-mcp/databases.json--config <path> 临时覆盖目标配置文件config use / config set-default 用来切换默认连接(写回 databases.json)config rename / config update 用来演进已有连接config validate 用来做配置文件层校验(不是连通性测试)config clone 用来快速复制连接config presets / config preset 用来查看内置连接模板config create --from-preset 用来直接基于模板生成连接骨架,也可顺手覆盖连接串/描述config update --clear-description 用来显式清空说明config doctor 用来做诊断,默认会测试各连接连通性,并给出修复建议;--summary-only 适合脚本config export / config import 用来备份和迁移配置文件snake_case
list_databases、get_table_schema、execute_commandkebab-case 选项
databaseName -> --database-nameinitialDelayMs -> --initial-delay-mstool switch_database 用来切换当前连接
%USERPROFILE%/.database-mcp/cli-state.jsondatabases.json 里的默认连接tool get_current_database / tool list_databases / 查询类命令都会继续使用这个当前连接--config <path>:本次调用临时指定配置文件--yes:执行写操作 / 高风险 schema tool 时必须显式确认--help:显示帮助如果执行的是 DatabaseMcpServer tool ...,且没有显式传 --config,CLI 会按以下顺序查找数据库配置:
./databases.json./local-databases.jsonDB_CONFIG_PATH%USERPROFILE%/.database-mcp/databases.json以下写操作 / 高风险命令必须追加 --yes:
DatabaseMcpServer tool drop_table --table-name users --config "D:\config\databases.json" --yes
DatabaseMcpServer tool execute_command --sql "delete from users where id = 1" --config "D:\config\databases.json" --yes
CLI 模式下,命令结果 JSON 输出到 stdout,帮助和日志输出到 stderr,便于脚本集成。
另外,tool switch_database 与 config use 语义不同:前者切换并持久化“当前连接”,后者修改配置文件中的“默认连接”。
详细命令说明见:
安装:
dotnet tool install --global DatabaseMcpServer
# 更新:dotnet tool update --global DatabaseMcpServer
MCP 配置:
{
"mcpServers": {
"database": {
"command": "DatabaseMcpServer",
"env": {
"DB_CONFIG_PATH": "D:\\config\\databases.json"
}
}
}
}
安装:
dnx DatabaseMcpServer@2.5.0 --yes
MCP 配置:
{
"mcpServers": {
"database": {
"command": "dnx",
"args": ["DatabaseMcpServer@2.5.0", "--yes"],
"env": {
"DB_CONFIG_PATH": "D:\\config\\databases.json"
}
}
}
}
运行:
git clone https://github.com/ttcc666/DatabaseMcpServer.git
cd DatabaseMcpServer
# .NET 9
dotnet run --framework net9.0
# .NET 10
dotnet run --framework net10.0
MCP 配置:
{
"mcpServers": {
"database-net9": {
"command": "dotnet",
"args": ["run", "--framework", "net9.0", "--project", "path/to/DatabaseMcpServer"],
"env": {
"DB_CONFIG_PATH": "D:\\config\\databases.json"
}
},
"database-net10": {
"command": "dotnet",
"args": ["run", "--framework", "net10.0", "--project", "path/to/DatabaseMcpServer"],
"env": {
"DB_CONFIG_PATH": "D:\\config\\databases.json"
}
}
}
}
DatabaseMcpServer 2.0.0 统一使用 JSON 配置文件管理数据库连接。
通过环境变量 DB_CONFIG_PATH 指定配置文件的绝对路径:
MCP 配置示例:
{
"mcpServers": {
"database": {
"command": "DatabaseMcpServer",
"env": {
"DB_CONFIG_PATH": "D:\\config\\databases.json"
}
}
}
}
当 databases.json 内容更新后,可以直接调用 reload_database_config,让 MCP 在不重启进程的情况下重新读取配置并刷新连接缓存。
配置文件格式 (databases.json):
{
"databases": [
{
"name": "mysql-main",
"connectionString": "Server=localhost;Database=myapp;User=root;Password=123456;",
"dbType": "MySql",
"description": "MySQL 主库",
"isDefault": true,
"optimizationSettings": {
"enableCache": "true",
"batchSize": "1000"
}
},
{
"name": "postgres-analytics",
"connectionString": "Host=localhost;Database=analytics;Username=postgres;Password=123456;",
"dbType": "PostgreSQL",
"description": "PostgreSQL 分析库",
"optimizationSettings": {
"autoToLower": "true",
"enableIlike": "true"
}
}
]
}
多数据库管理工具:
list_databases - 列出所有可用的数据库连接switch_database - 切换到指定的数据库get_current_database - 获取当前活动的数据库test_connection_by_name - 测试指定数据库的连接性能优化工具:
health_check - 对所有数据库连接执行健康检查(响应时间、连接状态)test_connection_with_retry - 带自动重试的连接测试(指数退避策略)DB_CONFIG_PATH: 数据库配置文件路径(必需)
D:\config\databases.jsonSEQ_SERVER_URL: Seq 日志服务器地址(可选)SEQ_API_KEY: Seq API 密钥(可选)DB_DDL_WHITELIST: DDL 操作白名单(可选,分号分隔的正则表达式)从 2.0.0 版本开始,所有数据库特定优化配置都在 databases.json 的 optimizationSettings 中设置。
详细配置文档:
DatabaseMcpServer 2.0.0 移除了环境变量配置方式,统一使用 JSON 配置文件。
旧方式(1.x - 已废弃):
{
"mcpServers": {
"database": {
"command": "DatabaseMcpServer",
"env": {
"DB_CONNECTION_STRING": "Server=localhost;Database=test;...",
"DB_TYPE": "MySql",
"DB_DM_LOWERCASE_TABLES": "true"
}
}
}
}
新方式(2.0):
databases.json 文件:{
"databases": [
{
"name": "default",
"connectionString": "Server=localhost;Database=test;...",
"dbType": "MySql",
"description": "默认数据库",
"isDefault": true,
"optimizationSettings": {
"lowercaseTables": "true"
}
}
]
}
{
"mcpServers": {
"database": {
"command": "DatabaseMcpServer",
"env": {
"DB_CONFIG_PATH": "D:\\config\\databases.json"
}
}
}
}
| 旧环境变量 | 新 JSON 配置路径 |
|---|---|
DB_CONNECTION_STRING | databases[].connectionString |
DB_TYPE | databases[].dbType |
DB_DM_LOWERCASE_TABLES | databases[].optimizationSettings.lowercaseTables |
DB_KDBNDP_MODE | databases[].optimizationSettings.mode |
DB_GAUSSDB_NATIVE_DRIVER | databases[].optimizationSettings.nativeDriver |
DB_ORACLE_CAMEL_CASE | databases[].optimizationSettings.camelCase |
DB_POSTGRES_AUTO_TO_LOWER | databases[].optimizationSettings.autoToLower |
DB_SQLITE_ENABLE_DEFAULT_VALUE | databases[].optimizationSettings.enableDefaultValue |
DB_DISABLE_NVARCHAR | databases[].optimizationSettings.disableNvarchar |
完整映射表请参考各数据库配置文档。
如果您仍在使用旧的环境变量配置,DatabaseMcpServer 2.0.0 会自动检测并显示详细的迁移提示。
| 数据库 | 连接字符串示例 | 详细文档 |
|---|---|---|
| MySQL | Server=localhost;Port=3306;Database=mydb;User=root;Password=123456; | MySQL.md |
| PostgreSQL | Host=localhost;Port=5432;Database=mydb;Username=postgres;Password=123456; | PostgreSQL.md |
| SQL Server | Server=localhost;Database=mydb;User Id=sa;Password=123456; | SQLServer.md |
| Oracle | Data Source=localhost/orcl;User ID=system;Password=oracle123; | Oracle.md |
| MongoDB | mongodb://localhost:27017/mydb | MongoDB.md |
| SQLite | Data Source=mydb.db; | SQLite.md |
| ClickHouse | Host=localhost;Port=8123;User=default;Password=;Database=default; | ClickHouse.md |
| TiDB | Server=localhost;Port=4000;Database=mydb;User=root;Password=123456; | TiDB.md |
| OceanBase | Server=localhost;Port=2881;Database=mydb;User=root@sys;Password=123456; | OceanBase.md |
| OceanBase (Oracle 模式) | Driver={OceanBase ODBC 2.0 Driver};Server=172.19.9.9;Port=2883;Database=TRD;User=USER@TENANT#CLUSTER:1650773680;Password=123456;Option=3; | OceanBase.md |
| QuestDB | host=localhost;port=8812;username=admin;password=quest;database=qdb;ServerCompatibilityMode=NoTypeLoading; | QuestDb.md |
| DuckDB | DataSource=train_services.db | DuckDB.md |
| 达梦数据库 | Server=localhost;Port=5236;Database=mydb;User=SYSDBA;Password=SYSDBA001; | DM.md |
| 人大金仓 | Server=localhost;Port=54321;Database=mydb;User=SYSTEM;Password=system123; | Kdbndp.md |
| GBase 8s | Host=localhost;Service=19088;Server=gbase01;Database=testdb;Protocol=onsoctcp;Uid=gbasedbt;Pwd=GBase123;Db_locale=zh_CN.utf8;Client_locale=zh_CN.utf8 | GBase.md |
| GaussDB / OpenGauss | PORT=5432;DATABASE=mydb;HOST=localhost;PASSWORD=Gauss@123;USER ID=gaussdb; | GaussDB.md |
| PolarDB | Server=localhost;Port=3306;Database=mydb;User=root;Password=123456; | PolarDB.md |
| Vastbase | Host=localhost;Port=5432;Database=mydb;Username=vastbase;Password=123456; | Vastbase.md |
| TDengine | Host=localhost;Port=6030;Username=root;Password=taosdata;Database=power | TDengine.md |
| 瀚高数据库 | Server=localhost;Port=5866;Database=mydb;Uid=highgo;Pwd=123456; | HighGo.md |
| 神通数据库 | Data Source=localhost;User Id=sysdba;Password=oracle; | Oscar.md |
| GoldenDB | Server=localhost;Port=1888;Database=mydb;Uid=golden;Pwd=123456; | GoldenDB.md |
更多连接字符串和优化配置请参考 DatabaseSetting/ 目录下的详细文档。
基础连接管理:
databases.json 并刷新当前配置缓存多数据库管理:
性能与健康检查:
基础查询:
高级查询:
标量值查询:
表操作:
列操作:
约束和索引:
其他:
完整工具列表请参考 .mcp/server.json
测试数据库连接
测试数据库连接
列出所有表
列出当前数据库的所有表
查询用户数据
查询 users 表中的所有数据
条件查询
查询 users 表中年龄大于 25 岁的活跃用户,按创建时间倒序排列
IN 参数查询
查询用户ID在 [1,2,3,4,5] 中的用户信息
多条件查询
查询城市为"北京"、年龄在 20-30 之间、状态为活跃的用户
聚合查询
统计 products 表中每个分类的商品数量和平均价格
多结果集查询
同时查询:1) 用户总数和活跃用户数量 2) 最近 7 天的订单数据
标量值查询
获取订单表中订单状态为"已完成"的总金额
插入新数据
向 products 表插入新商品:名称为"MacBook Pro M3",价格为 14999,库存为 50
批量更新
批量更新以下用户的VIP状态:用户ID 1,3,5,7,9 设置为VIP,其他设置为普通用户
事务操作
执行转账操作:从账户A(ID:1001)转账 500 元到账户B(ID:1002)
获取表结构
获取 orders 表的完整结构信息:列、主键、索引、自增列等
查询索引信息
查询 users 表的所有索引信息
检查表是否存在
检查数据库中是否存在名为"user_logs"的表
简单存储过程
调用存储过程 sp_monthly_report,传入参数年份 2025,月份 11
带输出参数的存储过程
调用存储过程 sp_user_statistics,传入用户ID 1001,获取该用户的订单总数和总金额
系统自动检测并阻止以下危险操作:
DROP TABLE / DROP DATABASE - 删除表/数据库TRUNCATE TABLE - 清空表数据ALTER TABLE - 修改表结构DELETE / UPDATE如需执行这些操作,请使用专门的架构操作工具(如 drop_table、truncate_table 等),这些工具会明确提示风险。
所有查询都支持参数化查询,自动防止 SQL 注入:
{
"sql": "SELECT * FROM users WHERE age > @age AND city = @city",
"parameters": "{\"age\":18,\"city\":\"北京\"}"
}
Password=****)# 克隆项目
git clone https://github.com/ttcc666/DatabaseMcpServer.git
cd DatabaseMcpServer
# 创建配置文件 databases.json 后运行
DB_CONFIG_PATH="path/to/databases.json" dotnet run --framework net9.0
# 或使用 .NET 10
DB_CONFIG_PATH="path/to/databases.json" dotnet run --framework net10.0
# 构建项目
dotnet build
# 运行测试
dotnet test
# 打包发布
dotnet pack -c Release
推荐的稳定验证方式:
.\scripts\verify.ps1
2.5.0
-web 本地配置管理页,支持浏览器内维护 databases.json 与 cli-state.jsonVue 3 + shadcn-vue 风格工作台,并补齐连接表格、编辑抽屉、诊断与导入导出交互--port 崩溃和前端产物过期打包问题,补充对应测试覆盖2.1.1
reload_database_config,支持运行时重新加载 DB_CONFIG_PATH 指向的数据库配置2.2.2
switch_database 仅在单次进程内生效的问题,改为按配置文件路径持久化“当前连接”2.2.2 打包发布2.2.1
database-mcp-cli skill 的触发词、CLI 工作流说明与故障排查矩阵agents/openai.yaml,补齐 UI metadata,使 skill 展示与触发语义一致2.2.1 打包发布2.2.0
DatabaseMcpServer tool <tool_name> 直接调用已有数据库工具tool list / tool help / --config / --yesstdoutdatabase-mcp-cli skill 草案2.1.0
创建工具类文件
# 在 Tools/ 目录下创建新工具类
# Management/ - 连接和架构管理
# Query/ - 查询工具
# Command/ - 命令工具
实现工具类
using System.ComponentModel;
using ModelContextProtocol.Server;
using DatabaseMcpServer.Interfaces;
namespace DatabaseMcpServer.Tools;
[McpServerToolType]
internal class YourNewTools
{
private readonly IDatabaseConfigService _databaseConfig;
private readonly IDatabaseHelperService _databaseHelper;
public YourNewTools(IDatabaseConfigService databaseConfig, IDatabaseHelperService databaseHelper)
{
_databaseConfig = databaseConfig;
_databaseHelper = databaseHelper;
}
[McpServerTool]
[Description("你的工具描述")]
public string YourMethod([Description("参数描述")] string parameter)
{
using var db = _databaseConfig.CreateClient();
// 实现你的功能
return _databaseHelper.SerializeResult(new { success = true, data = "result" });
}
}
注册工具
在 Program.cs 中:
builder.Services
.AddMcpServer()
.WithStdioServerTransport()
.WithTools<ConnectionTools>()
.WithTools<SchemaTools>()
.WithTools<QueryTools>()
.WithTools<CommandTools>()
.WithTools<ExcelExportTools>()
.WithTools<DocumentationTools>();
MCP Protocol Layer (stdio)
↓
Tools Layer (Connection/Query/Command/Schema)
↓
Services Layer (DatabaseConfigService)
↓
Data Access Layer (SqlSugar ORM)
关键组件:
DatabaseConfigService - 配置管理和连接创建DatabaseHelper - 数据库类型解析和安全检查McpExceptionFilter - 统一异常处理ApiResult<T> - 标准化返回格式欢迎提交 Issue 和 Pull Request!
git checkout -b feature/AmazingFeaturegit commit -m 'Add AmazingFeature'git push origin feature/AmazingFeature本项目采用 MIT 许可证 - 详见 LICENSE 文件。
DatabaseMCP - 让 AI 助手轻松操作数据库!
Run Claude Code as an MCP server so any agent can delegate coding tasks to it
Browser automation using accessibility snapshots instead of screenshots
MCP server integration for DaVinci Resolve Studio
A Jetbrains IDE IntelliJ plugin aimed to provide coding agents the ability to leverage intelliJ's indexing of the codeba