使用MCP用自然语言查询数据库,告别SQL烦恼


在日常工作中,如果你是产品经理经常需要拉取各种数据来做分析,但这类需求通常琐碎、个性化,找研发呢有时间沟通成本高,而且还不会写SQL,或者写起来费劲。 如果你是研发人员,有时候呢写sql突然会卡壳,然后各种搜,问题搜的还可能不太是自己想要的 你是不是也曾遇到这样的困扰? 心里想,如果有能通过自然语言搞定查询或者直接出报表那就太好了

 +------------------+    +--------------+    +------------------+
 |                  |    |              |    |                  |
 |  Claude Desktop  +--->+              +--->+    PostgreSQL    |
 |                  |    |              |    |                  |
 |      Cursor      +--->+    DBHub     +--->+    SQL Server    |
 |                  |    |              |    |                  |
 |     Other MCP    +--->+              +--->+     SQLite       |
 |      Clients     |    |              |    |                  |
 |                  |    |              +--->+     MySQL        |
 |                  |    |              |    |                  |
 |                  |    |              +--->+    MariaDB       |
 |                  |    |              |    |                  |
 +------------------+    +--------------+    +------------------+
      MCP Clients           MCP Server             Databases

好消息!MCP(Model Context Protocol)+ DBHub 让这一切变得简单!

DBHub 是一个通用数据库网关,支持 MCP 协议,能够让你用自然语言查询数据库,生成 SQL 并返回结果,无需懂代码,轻松出报表。


如何安装和使用?

1. 快速安装 DBHub

你可以选择 Docker 或 NPM 安装(示例以 Mysql 为例):

Docker 安装:

docker run --rm --init \
   --name dbhub \
   --publish 8080:8080 \
   bytebase/dbhub \
   --transport sse \
   --port 8080 \
   --dsn "mysql://user:password@localhost:3306/dbname?sslmode=disable"

NPM 安装:

npx @bytebase/dbhub --transport sse --port 8080 --dsn "mysql://user:password@localhost:3306/dbname"

⚠️ 注意: user:数据库的账号 password:密码 localhost:数据地址 3306:端口号 dbname:数据库名 如果你是产品经理可以找你们公司的研发人员要到这些

如果只是想体验,可以运行 Demo 模式:

npx @bytebase/dbhub --transport sse --port 8080 --demo

这将自动加载一个示例员工数据库,你可以直接进行查询和测试,等你测试有感觉可以直接。 例如:你可以说,帮我查一下有多个表,分别是什么


2. 配置数据库连接

如果要连接自己的数据库,你需要提供 Database Source Name (DSN),方式如下:

  • 命令行直接指定(优先级最高):
    npx @bytebase/dbhub --dsn "mysql://user:password@localhost:3306/dbname"
  • 环境变量指定(优先级次之):
    export DSN="mysql://user:password@localhost:3306/dbname"
    npx @bytebase/dbhub
  • 环境文件方式(适用于开发和生产环境):
    • 开发环境:创建 .env.local 文件
    • 生产环境:创建 .env 文件
    DSN=mysql://user:password@localhost:3306/dbname

⚠️ 注意:如果数据库运行在 Docker 内部,连接地址需要改成 host.docker.internal,比如:

mysql://user:password@host.docker.internal:3306/dbname

3. 如何用自然语言查询数据?

DBHub 兼容 MCP 客户端,比如 Cursor、Claude Desktop 等工具。你可以在这些工具中输入问题,DBHub 会自动生成 SQL 语句并执行。例如:

mcp配置:

windows:

{
  "mcpServers": {
    "dbhub-mysql-npx": {
      "command": "cmd",
      "args": [
        "/c",
        "npx",
        "-y",
        "@bytebase/dbhub",
        "--transport",
        "stdio",
        "--dsn",
        "mysql://user:password@localhost:3306/demo"
      ]
    }
  }
}

mac or liunx:

{
  "mcpServers": {
    "dbhub-mysql-npx": {
      "command": "npx",
      "args": [
        "-y",
        "@bytebase/dbhub",
        "--transport",
        "stdio",
        "--dsn",
        "mysql://user:password@localhost:3306/demo"
      ]
    }
  }
}

sse:

{
  "mcpServers":{
    "dbhub-mysql-npx":{
        "url":"http://localhost:8080/sse"
     }
   }
}

🔹 查询过去一周的新增用户
”How many new users signed up in the past week?”
自动生成 SQL并由DBHub 自动执行然后返回结果:

SELECT COUNT(*) FROM users WHERE created_at >= NOW() - INTERVAL '7 days';

🔹 获取某个产品的销售数据
”Show me the total sales for Product X in the last month.”
DBHub 自动执行查询并返回结果,无需手写 SQL!


4. 适用于哪些数据库?

DBHub 目前支持 PostgreSQL、MySQL、SQL Server 和 SQLite,基本覆盖了大部分企业的数据库需求。


结语:产品经理必备的神器,研发的超级助手!

如果你经常需要拉数据分析,但又不想被 SQL 绑架,DBHub + MCP 绝对是你的福音。你可以用自然语言直接查询数据库,实时获取数据结果,减少沟通成本,提高工作效率!

赶快试试吧!