使用说明

项目简介

MySQL数据库访问MCP服务器是一个基于Model Context Protocol (MCP) 的后端服务,旨在为大型语言模型(LLM)提供安全、可控的MySQL数据库访问能力。该服务器允许LLM通过标准化的MCP协议,执行只读的数据库操作,从而获取结构化数据作为上下文信息,提升LLM在数据驱动型应用中的性能。

主要功能点

  • 数据库和表信息查询: 支持列出MySQL服务器上的所有数据库,以及特定数据库中的所有表。
  • 表结构描述: 提供查看表结构的工具,帮助LLM理解数据模式。
  • 只读SQL查询执行: 允许执行 'SELECT', 'SHOW', 'DESCRIBE', 'EXPLAIN' 等只读SQL语句,安全地获取数据库数据。
  • 安全性:
    • 只读访问: 仅限只读操作,防止数据修改。
    • SQL注入防护: 内置查询验证机制,避免SQL注入风险。
    • 查询超时与行数限制: 防止资源滥用和数据泄露。

安装步骤

  1. 安装Node.js和npm: 确保你的系统已安装Node.js和npm (Node包管理器)。
  2. 安装mysql-mcp-server: 可以选择全局安装或本地安装到你的项目。
    • 全局安装:
      npm install -g mysql-mcp-server
    • 本地安装:
      npm install mysql-mcp-server
  3. 配置环境变量: 你需要设置MySQL数据库连接相关的环境变量,包括:
    • 'MYSQL_HOST': MySQL服务器地址 (例如: 'localhost' 或 '127.0.0.1')
    • 'MYSQL_PORT': MySQL服务器端口 (默认为 '3306')
    • 'MYSQL_USER': MySQL用户名
    • 'MYSQL_PASSWORD': MySQL密码 (推荐配置以保证安全)
    • 'MYSQL_DATABASE': 默认连接的数据库名 (可选)

服务器配置

为了让MCP客户端能够连接到 'mysql-mcp-server',你需要在MCP客户端的配置文件中添加以下服务器配置信息。这通常是一个JSON格式的配置文件,例如 'mcp-config.json'。

{
  "mcpServers": {
    "mysql": {
      "command": "npx",
      "args": ["mysql-mcp-server"],
      "env": {
        "MYSQL_HOST": "your-mysql-host",  // 请替换为你的MySQL服务器地址
        "MYSQL_PORT": "3306",           // MySQL服务器端口,默认3306
        "MYSQL_USER": "your-mysql-user",    // 请替换为你的MySQL用户名
        "MYSQL_PASSWORD": "your-mysql-password", // 请替换为你的MySQL密码 (可选,但推荐)
        "MYSQL_DATABASE": "your-default-database" // 默认数据库名 (可选)
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

配置参数说明:

  • 'server name': 'mysql' (服务器名称,客户端据此名称调用工具)
  • 'command': 'npx' (用于执行npm包的命令)
  • 'args': '["mysql-mcp-server"]' (启动 'mysql-mcp-server' 的参数)
  • 'env': 环境变量配置,用于 'mysql-mcp-server' 连接MySQL数据库。
    • 'MYSQL_HOST': MySQL服务器地址。
    • 'MYSQL_PORT': MySQL服务器端口。
    • 'MYSQL_USER': MySQL用户名。
    • 'MYSQL_PASSWORD': MySQL密码。
    • 'MYSQL_DATABASE': 默认数据库名。
  • 'disabled': 'false' (启用该服务器)
  • 'autoApprove': '[]' (自动批准的工具列表,默认为空)

基本使用方法

配置完成后,MCP客户端即可通过JSON-RPC协议与 'mysql-mcp-server' 交互。客户端可以发送请求调用以下工具:

  • 'list_databases': 获取数据库列表 (无需参数)。
  • 'list_tables': 获取指定数据库的表列表 (可选参数 'database' 指定数据库名)。
  • 'describe_table': 获取表的结构信息 (参数 'table' 为表名, 可选参数 'database' 指定数据库名)。
  • 'execute_query': 执行只读SQL查询 (参数 'query' 为SQL查询语句, 可选参数 'database' 指定数据库名)。

具体的请求格式和参数,请参考仓库的 'README.md' 文档中 "Available Tools" 章节的说明和示例。

信息

分类

数据库与文件