项目简介

DatabaseMCP 是一个功能强大的 Model Context Protocol (MCP) 服务器,旨在让 AI 助手能够安全、便捷地执行数据库操作。它支持 34 种主流、国产、分布式及时间序列数据库,通过标准化的 MCP 协议,提供统一的工具接口进行数据查询、修改和架构管理,并内置安全防护机制,确保操作的可靠性。

主要功能点

  • 广泛的数据库兼容性:支持 MySQL, SQL Server, PostgreSQL, Oracle, SQLite 等主流关系型数据库,以及达梦、人大金仓、神通等国产数据库,还包括 OceanBase, TiDB 等分布式数据库,和 TDengine, ClickHouse 等时序数据库。
  • 全面的数据库操作工具:提供多达 47 个 MCP 工具,涵盖从测试连接、获取表结构、查询数据、插入/更新/删除数据,到执行事务、调用存储过程等数据库操作和管理功能。
  • 强大的安全防护:内置危险操作检测(如 'DROP TABLE'、无 'WHERE' 条件的 'DELETE' / 'UPDATE'),有效防止误操作;所有查询均支持参数化,自动防止 SQL 注入;同时对连接字符串中的密码等敏感信息进行保护。
  • 高性能:底层基于流行的 SqlSugar ORM 框架,确保高效稳定的数据库访问性能。
  • 易于部署和配置:可作为 .NET 全局工具一键安装,通过环境变量配置数据库连接信息,支持 Windows、macOS、Linux 等多种操作系统,实现跨平台运行。

安装步骤

  1. 安装 .NET 全局工具
    • 确保您的系统已安装 .NET 8 或更高版本运行时。
    • 打开命令行工具(如 Windows 的 PowerShell 或 Linux/macOS 的 Terminal),执行以下命令安装 DatabaseMcpServer:
      dotnet tool install --global DatabaseMcpServer
    • 验证安装是否成功,执行以下命令,如果显示版本号,则安装成功:
      DatabaseMcpServer --version

服务器配置

MCP 客户端(例如:Visual Studio Code 的 Copilot Chat)需要通过配置文件来连接 DatabaseMcpServer。您通常需要在 MCP 客户端的配置目录(如 '.vscode/mcp.json')中创建或修改 'mcp.json' 文件。

以下是一个配置示例,请根据您的实际数据库信息替换 'DB_CONNECTION_STRING' 和 'DB_TYPE':

{
  "mcpServers": {
    "database": {
      "command": "DatabaseMcpServer",
      "env": {
        // DB_CONNECTION_STRING: 必需,您的数据库连接字符串。
        // 例如:
        // MySQL -> "Server=localhost;Port=3306;Database=testdb;Uid=root;Pwd=your_password;"
        // SQL Server -> "Server=localhost;Database=testdb;User Id=sa;Password=your_password;"
        // SQLite -> "Data Source=mydb.db;"
        // PostgreSQL -> "Host=localhost;Port=5432;Database=testdb;Username=postgres;Password=your_password;"
        // 达梦数据库 -> "Server=localhost;Port=5236;Database=testdb;User=SYSDBA;Password=SYSDBA001;"
        "DB_CONNECTION_STRING": "Server=localhost;Database=your_database;Uid=your_user;Pwd=your_password;",
        
        // DB_TYPE: 可选,指定数据库类型,默认值为 "MySql"。
        // 可选值包括 README 中列出的 34 种数据库类型,例如:"MySql", "SqlServer", "PostgreSQL", "Oracle", "Dm", "OceanBase", "SQLite" 等。
        "DB_TYPE": "MySql",
        
        // SEQ_SERVER_URL: 可选,用于将服务器日志发送到 Seq 日志服务器的地址。
        // "SEQ_SERVER_URL": "http://localhost:5341",
        
        // SEQ_API_KEY: 可选,Seq 日志服务器的 API 密钥。
        // "SEQ_API_KEY": "your-seq-api-key",
        
        // DB_DDL_WHITELIST: 可选,用于指定允许跳过危险 SQL 检测的 DDL 语句正则表达式白名单。
        // 多个正则表达式规则之间用分号分隔。例如:"(?i)^CREATE\\s+TABLE\\s+temp_.*$;ALTER\\s+TABLE\\s+staging\\."
        // "DB_DDL_WHITELIST": ""
      }
    }
  }
}

基本使用方法

配置完成后,重启您的 MCP 客户端。在 AI 助手中,您可以直接通过自然语言描述来调用 DatabaseMcpServer 提供的工具。AI 助手会根据您的指令和可用的工具自动选择并执行相应的数据库操作。

  1. 测试数据库连接:

    "测试数据库连接"

    (或者用英文:'"Test database connection"')

    预期响应示例:

    {
      "success": true,
      "message": "连接成功",
      "connected": true,
      "databaseType": "MySql"
    }
  2. 查询数据:

    "查询 users 表中所有年龄大于 25 岁的活跃用户,按创建时间倒序排列"

    (或者用英文:'"Query all active users from the 'users' table older than 25 years old, ordered by creation time in descending order"')

  3. 获取表结构信息:

    "获取 'orders' 表的完整结构信息,包括列、主键、索引和自增列"

    (或者用英文:'"Get the full schema information for the 'orders' table, including columns, primary keys, indexes, and identity columns"')

  4. 插入新数据:

    "向 products 表插入新商品:名称为\"MacBook Pro M3\",价格为 14999,库存为 50"

    (或者用英文:'"Insert a new product into the 'products' table: name 'MacBook Pro M3', price 14999, stock 50"')

信息

分类

数据库与文件