2025-5-12
Words 1184Read Time 3 min
Score:90

DBHub是一个通用的数据库网关,实现MCP服务器接口,支持多种数据库的连接和探索。

DBHub 是一个实现了 Model Context Protocol (MCP) 服务器接口的通用数据库网关。该网关允许兼容 MCP 的客户端连接并探索不同的数据库。

演示 SSE 端点

https://demo.dbhub.ai/sse 连接了一个示例员工数据库。您可以将 Cursor 或 MCP Inspector 指向该端点以查看其实际效果。
https://raw.githubusercontent.com/bytebase/dbhub/main/resources/images/mcp-inspector.webp

支持矩阵

数据库资源

资源名称
URI 格式
PostgreSQL
MySQL
MariaDB
SQL Server
SQLite
Oracle
schemas
db://schemas
tables_in_schema
db://schemas/{schemaName}/tables
table_structure_in_schema
db://schemas/{schemaName}/tables/{tableName}
indexes_in_table
db://schemas/{schemaName}/tables/{tableName}/indexes
procedures_in_schema
db://schemas/{schemaName}/procedures
procedure_details_in_schema
db://schemas/{schemaName}/procedures/{procedureName}

数据库工具

工具
命令名称
PostgreSQL
MySQL
MariaDB
SQL Server
SQLite
Oracle
执行 SQL
execute_sql
列出连接器
list_connectors

提示功能

提示
命令名称
PostgreSQL
MySQL
MariaDB
SQL Server
SQLite
Oracle
生成 SQL
generate_sql
解释数据库元素
explain_db

安装

Docker

NPM

注意:演示模式包含一个捆绑的 SQLite 示例“员工”数据库,其中包含员工、部门、薪资等表格。

Claude Desktop

https://raw.githubusercontent.com/bytebase/dbhub/main/resources/images/claude-desktop.webp

Cursor

https://raw.githubusercontent.com/bytebase/dbhub/main/resources/images/cursor.webp
  • Cursor 支持 stdiosse 两种传输模式。

使用

只读模式

您可以在只读模式下运行 DBHub,该模式限制 SQL 查询执行为只读操作:
在只读模式下,仅允许执行 只读 SQL 操作
这为连接生产数据库提供了额外的安全层。

配置数据库连接

您可以使用 DBHub 的演示模式进行测试,该模式包含一个示例员工数据库:
对于真实数据库,需要提供数据库源名称 (DSN)。您可以通过以下几种方式提供:
  • 命令行参数(最高优先级):
    • 环境变量(第二优先级):
      • 环境文件(第三优先级):
        • 开发环境:创建 .env.local 并填写您的 DSN
        • 生产环境:创建 .env 并填写您的 DSN
      [!WARNING] 在 Docker 中运行时,使用 host.docker.internal 代替 localhost 以连接到主机上的数据库。例如:mysql://user:password@host.docker.internal:3306/dbname
      DBHub 支持以下数据库连接字符串格式:
      数据库
      DSN 格式
      示例
      MySQL
      mysql://[user]:[password]@[host]:[port]/[database]
      mysql://user:password@localhost:3306/dbname
      MariaDB
      mariadb://[user]:[password]@[host]:[port]/[database]
      mariadb://user:password@localhost:3306/dbname
      PostgreSQL
      postgres://[user]:[password]@[host]:[port]/[database]
      postgres://user:password@localhost:5432/dbname?sslmode=disable
      SQL Server
      sqlserver://[user]:[password]@[host]:[port]/[database]
      sqlserver://user:password@localhost:1433/dbname
      SQLite
      sqlite:///[path/to/file]sqlite::memory:
      sqlite:///path/to/database.db, sqlite:C:/Users/YourName/data/database.db (windows)sqlite::memory:
      Oracle
      oracle://[user]:[password]@[host]:[port]/[service_name]
      oracle://username:password@localhost:1521/service_name

      Oracle

      如果看到错误 "NJS-138: connections to this database server version are not supported by node-oracledb in Thin mode",您需要使用 Thick 模式,如下所述。

      Docker

      使用 bytebase/dbhub-oracle-thick 代替 bytebase/dbhub 的 Docker 镜像。

      npx

      1. 下载并安装适用于您平台的 Oracle Instant Client
      1. ORACLE_LIB_DIR 环境变量设置为您的 Oracle Instant Client 路径:

      SQL Server

      额外的查询参数:

      authentication

      • authentication=azure-active-directory-access-token. 仅在从 Azure 运行时适用。请参阅 DefaultAzureCredential

      传输模式

      • stdio(默认) - 用于与 Claude Desktop 等工具的直接集成:
        • sse - 用于浏览器和网络客户端:

          命令行选项

          选项
          描述
          默认值
          demo
          使用示例员工数据库运行演示模式
          false
          dsn
          数据库连接字符串
          如果不使用演示模式则为必需
          transport
          传输模式:stdiosse
          stdio
          port
          HTTP 服务器端口(仅在 --transport=sse 时适用)
          8080
          readonly
          限制 SQL 执行为只读操作
          false
          演示模式使用内存中的 SQLite 数据库,加载了 示例员工数据库,其中包含员工、部门、职位、薪资、部门员工和部门经理等表格。示例数据库包括用于创建表、加载数据和测试的 SQL 脚本。

          开发

          1. 安装依赖:
            1. 以开发模式运行:
              1. 构建生产版本:

                使用 MCP Inspector 调试

                stdio

                SSE

                连接到 DBHub 服务器的 /sse 端点

                贡献者

                Star 历史

                上一篇
                agentic-workflow-mcp
                下一篇
                VibeCheck