项目简介

MySQL Database Server 是一个基于 Model Context Protocol (MCP) 构建的服务器,它充当 LLM (大型语言模型) 客户端与 MySQL 数据库之间的桥梁。该服务器允许 LLM 安全地连接到 MySQL 数据库,并执行以下操作:

  • 检查数据库结构 (Schema Inspection): LLM 可以获取数据库中表的结构信息,例如表名、列名和数据类型,帮助 LLM 理解数据组织方式。
  • 执行只读查询 (Read-only Queries): LLM 可以执行 SQL 查询来检索数据库中的数据,但所有查询都是只读的,确保不会对数据库进行任何修改。

该服务器旨在为 LLM 应用提供安全可靠的 MySQL 数据库访问能力,使其能够利用数据库中的信息来增强对话和推理能力。

主要功能点

  • 只读数据库访问: 保障数据安全,所有操作均为只读事务。
  • 数据库结构探索: 允许 LLM 获取数据库表和列的元数据信息。
  • 安全查询执行: 提供执行 SQL 查询工具,但仅限于只读操作。
  • Docker 支持: 方便容器化部署和运行。
  • NPM 包: 提供 NPM 包,方便集成到 Node.js 环境。

安装步骤

你可以选择使用 Docker 或 NPM 安装 MySQL Database Server。

方法一:使用 Docker

  1. 构建 Docker 镜像: 打开终端,导航到仓库根目录,执行以下命令构建 Docker 镜像:

    make docker
  2. 运行 Docker 容器: 使用以下命令运行 Docker 容器,你需要将 'mysql://host:port/dbname' 替换为你的 MySQL 数据库连接 URL。

    docker run -i --rm mcp/mysql mysql://host:port/dbname

    请注意替换 'host:port/dbname' 为你的实际 MySQL 服务器地址、端口和数据库名。如果 MySQL 服务器运行在本地主机的 Docker 容器中,macOS 上可能需要使用 'host.docker.internal' 作为 host。

方法二:使用 NPM

  1. 安装 NPM 包: 如果你的环境中有 Node.js 和 NPM,可以使用以下命令安装 NPM 包:
    npm install @modelcontextprotocol/server-mysql

服务器配置

要将 MySQL Database Server 集成到 MCP 客户端(例如 Claude Desktop),你需要配置客户端以启动和连接到该服务器。以下是 Claude Desktop 的配置示例,你需要将这段 JSON 配置添加到你的 'claude_desktop_config.json' 文件中。

{
  "mcpServers": {
    "mysql": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "mcp/mysql",
        "mysql://host:port/dbname"  //  请将 "mysql://host:port/dbname" 替换为你的 MySQL 数据库连接 URL
      ]
    }
  }
}

配置参数说明:

  • '"mysql"': 服务器名称,可以自定义,用于在客户端中标识该服务器。
  • '"command": "docker"': 启动服务器的命令,这里使用 Docker 运行。如果你使用 NPM 安装,可以将 'command' 设置为 Node.js 的执行命令,例如 '"node"',并修改 'args'。
  • '"args"': 启动命令的参数列表。
    • '"run"': Docker run 命令。
    • '"-i"': 保持 STDIN 打开,即使没有连接。
    • '"--rm"': 容器退出后自动删除容器。
    • '"mcp/mysql"': Docker 镜像名称。
    • '"mysql://host:port/dbname"': MySQL 数据库连接 URL,这是 必须配置 的参数,请替换为你实际的数据库连接信息,例如 'mysql://user:password@localhost:3306/mydatabase'。

数据库连接 URL 格式:

mysql://[user][:password]@host[:port]/database

请根据你的 MySQL 数据库配置,替换 'user', 'password', 'host', 'port', 和 'database' 为实际值。

基本使用方法

配置完成后,当 MCP 客户端(例如 Claude Desktop)连接到 MySQL Database Server 后,LLM 就可以通过 MCP 协议与服务器交互,执行以下操作:

  1. 列出数据库资源 (List Resources): LLM 可以请求服务器列出可用的数据库资源,服务器会返回数据库中表的列表,每个表作为一个资源。
  2. 读取数据库结构 (Read Resource): LLM 可以请求读取特定表的结构信息,服务器会返回该表的列名和数据类型等 schema 信息,通常以 JSON 格式返回。
  3. 调用工具执行查询 (Call Tool): LLM 可以调用名为 "query" 的工具,并提供 SQL 查询语句作为参数,服务器会执行该查询并返回只读的查询结果。

具体的交互方式取决于 MCP 客户端的功能和界面,但核心是通过 MCP 协议进行请求和响应,LLM 客户端负责构建 MCP 请求,并将请求发送到 MySQL Database Server,服务器处理请求并将结果返回给客户端。

信息

分类

数据库与文件