项目简介

DB Query (db-mcp) 是一个实现了 Model Context Protocol (MCP) 的服务器,旨在为支持 MCP 协议的 LLM (大型语言模型) 客户端提供数据库查询能力。通过 db-mcp,LLM 可以安全、可控地连接和查询多种类型的数据库,从而获取结构化数据,增强其上下文理解和信息检索能力。

主要功能点

  • 支持多种数据库系统: 目前支持 PostgreSQL, MySQL, SQLite 三种主流数据库。
  • 工具化数据库操作: 提供 'connect' 工具用于连接数据库,'query' 工具用于执行 SQL 查询,'flavor' 工具用于获取数据库类型。
  • DSN 连接: 使用标准的 DSN (Data Source Name) 字符串进行数据库连接配置,简化配置过程。
  • 默认数据库: 支持配置默认数据库,简化常用数据库的访问。
  • CSV 格式结果: 查询结果以 CSV (逗号分隔值) 格式返回,方便 LLM 客户端解析和处理。

安装步骤

  1. 安装 Go: 确保你的系统已安装 Go 语言环境 (版本 1.18 或更高)。你可以从 https://go.dev/dl/ 下载并安装。

  2. 安装 db-mcp: 打开终端,运行以下命令安装 db-mcp 工具:

    go install github.com/alx99/db-mcp/cmd/db-mcp@latest

    安装成功后,'db-mcp' 可执行文件通常会位于 '$GOPATH/bin' 目录或 '$HOME/go/bin' 目录。请确保该目录已添加到系统的 PATH 环境变量中。

服务器配置

MCP 客户端需要配置以下 JSON 信息来启动和连接 db-mcp 服务器。

{
  "serverName": "DB Query",
  "command": "db-mcp",
  "args": [
    // (可选) 默认数据库 DSN。
    // 如果设置,客户端可以直接使用 query 工具查询默认数据库,无需在工具参数中指定数据库名称。
    // 例如: "postgresql://postgres:password@localhost:5432/mydatabase"
    // 可以配置 PostgreSQL, MySQL, 或 SQLite 的 DSN。
    // "-default-dsn", "<请替换为你的默认数据库DSN>"
  ]
}

参数说明:

  • 'serverName': 服务器名称,设置为 "DB Query" 即可。
  • 'command': 启动服务器的命令,这里是 'db-mcp' (假设 'db-mcp' 可执行文件已在 PATH 环境变量中)。
  • 'args': 传递给 'db-mcp' 命令的参数,目前支持 '-default-dsn' 参数用于配置默认数据库的 DSN。

DSN 构造参考:

  • PostgreSQL: 'postgresql://用户名:密码@主机:端口/数据库名' (更多信息请参考 PostgreSQL DSN 示例)
  • MySQL: 'mysql://用户名:密码@协议(地址)/数据库名' (更多信息请参考 MySQL DSN 示例,注意添加 'mysql://' 前缀)
  • SQLite: 'sqlite://数据库文件路径' (更多信息请参考 SQLite DSN 示例,注意添加 'sqlite://' 前缀)

基本使用方法

  1. 启动 db-mcp 服务器: MCP 客户端根据上述配置启动 'db-mcp' 服务器。

  2. 使用 'connect' 工具连接数据库:

    • 通过 MCP 客户端调用 'connect' 工具。
    • 提供 'database_dsn' 参数,指定要连接的数据库 DSN 字符串。
    • 提供 'name' 参数,为该数据库连接指定一个名称,后续可以使用该名称在 'query' 工具中引用该数据库连接。

    例如,连接 PostgreSQL 数据库并命名为 "my_postgres_db":

    {
      "tool_call": {
        "tool_name": "connect",
        "arguments": {
          "database_dsn": "postgresql://postgres:password@localhost:5432/mydatabase",
          "name": "my_postgres_db"
        }
      }
    }
  3. 使用 'query' 工具执行 SQL 查询:

    • 通过 MCP 客户端调用 'query' 工具。
    • 提供 'query' 参数,指定要执行的 SQL 查询语句。
    • (可选) 提供 'database' 参数,指定要查询的数据库连接名称。如果不提供,则会查询默认数据库(如果配置了 '-default-dsn')。

    例如,查询 "my_postgres_db" 数据库中的 "users" 表:

    {
      "tool_call": {
        "tool_name": "query",
        "arguments": {
          "database": "my_postgres_db",
          "query": "SELECT * FROM users LIMIT 10;"
        }
      }
    }
  4. 使用 'flavor' 工具获取数据库类型:

    • 通过 MCP 客户端调用 'flavor' 工具。
    • (可选) 提供 'database' 参数,指定要获取类型的数据库连接名称。如果不提供,则会获取默认数据库的类型。

    例如,获取 "my_postgres_db" 数据库的类型:

    {
      "tool_call": {
        "tool_name": "flavor",
        "arguments": {
          "database": "my_postgres_db"
        }
      }
    }

通过以上步骤,LLM 客户端即可利用 db-mcp 服务器提供的工具,与数据库进行交互,获取数据并用于后续的自然语言处理任务。

信息

分类

数据库与文件