一个功能强大的数据库操作 MCP 服务器,聚焦 19 种常用数据库(MySQL/PG/SQLServer/Oracle/MongoDB、SQLite/ClickHouse/TiDB/OceanBase/DB2/HANA、达梦/人大金仓/华为 GaussDB/PolarDB/Vastbase/瀚高/神通/GoldenDB)。
$ dotnet add package DatabaseMcpServer🇺🇸 English | 🇨🇳 中文 | 🌐 官网
一个功能强大的数据库操作 MCP (Model Context Protocol) 服务器,聚焦 19 种常用数据库类型(主流 + 特定场景 + 国产化/信创),支持 单实例多数据库动态切换,让 AI 助手能够安全、便捷地执行数据库操作。
# 安装最新版本
dotnet tool install --global DatabaseMcpServer
# 验证安装
DatabaseMcpServer --version创建 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"
}安装:
dotnet tool install --global DatabaseMcpServer
# 更新:dotnet tool update --global DatabaseMcpServerMCP 配置:
{
"mcpServers": {
"database": {
"command": "DatabaseMcpServer",
"env": {
"DB_CONFIG_PATH": "D:\\config\\databases.json"
}
}
}
}安装:
dnx DatabaseMcpServer@2.0.5 --yesMCP 配置:
{
"mcpServers": {
"database": {
"command": "dnx",
"args": ["DatabaseMcpServer@2.0.5", "--yes"],
"env": {
"DB_CONFIG_PATH": "D:\\config\\databases.json"
}
}
}
}运行:
git clone https://github.com/ttcc666/DatabaseMcpServer.git
cd DatabaseMcpServer
dotnet runMCP 配置:
{
"mcpServers": {
"database": {
"command": "dotnet",
"args": ["run", "--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):
{
"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 |
| IBM DB2 | Server=localhost:50000;Database=mydb;UID=db2;PWD=123456; | DB2.md |
| SAP HANA | ServerNode=localhost:39015;UserID=SYSTEM;Password=hana123; | Hana.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 |
| 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 |
| 瀚高数据库 | 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/ 目录下的详细文档。
基础连接管理:
多数据库管理:
性能与健康检查:
基础查询:
高级查询:
标量值查询:
表操作:
列操作:
约束和索引:
其他:
完整工具列表请参考 .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
# 构建项目
dotnet build
# 运行测试
dotnet test
# 打包发布
dotnet pack -c Release创建工具类文件
# 在 Tools/ 目录下创建新工具类
# Management/ - 连接和架构管理
# Query/ - 查询工具
# Command/ - 命令工具
实现工具类
using System.ComponentModel;
using ModelContextProtocol.Server;
using DatabaseMcpServer.Interfaces;
namespace DatabaseMcpServer.Tools;
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<YourNewTools>(); // 添加你的工具
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 助手轻松操作数据库!