项目简介
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 客户端解析和处理。
安装步骤
-
安装 Go: 确保你的系统已安装 Go 语言环境 (版本 1.18 或更高)。你可以从 https://go.dev/dl/ 下载并安装。
-
安装 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://' 前缀)
基本使用方法
-
启动 db-mcp 服务器: MCP 客户端根据上述配置启动 'db-mcp' 服务器。
-
使用 '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" } } } -
使用 '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;" } } } -
使用 'flavor' 工具获取数据库类型:
- 通过 MCP 客户端调用 'flavor' 工具。
- (可选) 提供 'database' 参数,指定要获取类型的数据库连接名称。如果不提供,则会获取默认数据库的类型。
例如,获取 "my_postgres_db" 数据库的类型:
{ "tool_call": { "tool_name": "flavor", "arguments": { "database": "my_postgres_db" } } }
通过以上步骤,LLM 客户端即可利用 db-mcp 服务器提供的工具,与数据库进行交互,获取数据并用于后续的自然语言处理任务。
信息
分类
数据库与文件