项目简介

本项目 'mcp-server-mysql' 是一个基于 Model Context Protocol (MCP) 构建的后端服务器,旨在为大型语言模型(LLM)提供访问 MySQL 数据库的能力。通过此服务器,LLM 客户端可以安全、便捷地查询 MySQL 数据库,并获取数据库结构信息,从而增强 LLM 在数据分析、知识检索等方面的应用能力。

主要功能点

  • 资源 (Resources) 管理:
    • 提供数据库表结构的 JSON Schema 信息,包括表名、列名、数据类型、索引、外键等。
    • 自动从数据库元数据中发现和更新表结构信息。
  • 工具 (Tools) 注册与执行:
    • 内置 'mysql_query' 工具,允许 LLM 客户端执行只读 SQL 查询。
    • 支持预编译语句,防止 SQL 注入。
    • 可配置查询超时和结果分页。
    • 提供查询执行统计信息。
  • 安全性:
    • 所有查询在只读事务中执行,确保数据安全。
    • 支持 SQL 注入防御、查询白名单/黑名单、速率限制等安全特性。
  • 性能优化:
    • 连接池管理,提高数据库访问效率。
    • 查询结果缓存,减少重复查询开销。
    • 支持大型结果集流式传输。
  • 监控与调试:
    • 详细的查询日志记录。
    • 性能指标监控。
    • 错误跟踪和报告。

安装步骤

本项目可以通过多种方式安装,推荐使用 'npm' 或 'pnpm' 进行全局安装:

  1. 使用 npm 安装 (推荐):

    npm install -g @benborla29/mcp-server-mysql
  2. 使用 pnpm 安装:

    pnpm add -g @benborla29/mcp-server-mysql

安装完成后,'mcp-server-mysql' 命令将添加到您的全局环境中。

服务器配置

MCP 服务器需要配置后才能被 MCP 客户端(如 Claude Desktop App)使用。客户端需要提供服务器的启动命令和参数。以下是针对 Claude Desktop App 的配置示例,您需要将此配置添加到 'claude_desktop_config.json' 文件中:

{
  "mcpServers": {
    "mcp_server_mysql": {
      "command": "npx",
      "args": [
        "-y",
        "@benborla29/mcp-server-mysql"
      ],
      "env": {
        "MYSQL_HOST": "127.0.0.1",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "root",
        "MYSQL_PASS": "",
        "MYSQL_DB": "db_name"
      }
    }
  }
}

配置参数说明:

  • server name: 'mcp_server_mysql' (服务器名称,客户端用此名称引用)
  • command: 'npx' (启动命令,这里使用 'npx' 运行 npm 包)
  • args:
    • '-y': ( 'npx' 参数,自动确认安装包 )
    • '@benborla29/mcp-server-mysql': ( 要运行的 npm 包名,即 MCP 服务器 )
  • env: 环境变量配置,用于连接 MySQL 数据库:
    • 'MYSQL_HOST': MySQL 服务器地址,默认为 '127.0.0.1'。
    • 'MYSQL_PORT': MySQL 服务器端口,默认为 '3306'。
    • 'MYSQL_USER': MySQL 用户名,默认为 'root'。
    • 'MYSQL_PASS': MySQL 密码,请替换为您的实际密码。
    • 'MYSQL_DB': 要访问的数据库名,可以指定单个数据库,留空则可访问所有数据库。

请根据您的 MySQL 数据库配置修改 'env' 中的参数。更多高级配置选项(如连接池大小、超时时间、安全设置、监控设置等)请参考仓库 README.md 文件中的 "Advanced Configuration Options" 和 "Environment Variables" 章节。

基本使用方法

配置完成后,MCP 客户端(如 Claude Desktop App)将能够:

  1. 列出数据库资源: 客户端可以请求服务器列出可用的数据库表结构信息资源。
  2. 读取资源信息: 客户端可以请求服务器提供特定表的结构 (Schema) 信息,用于了解数据表的字段和类型。
  3. 调用工具执行查询: 客户端可以调用 'mysql_query' 工具,并提供 SQL 查询语句作为参数,执行数据库查询并获取结果。

例如,在 Claude Desktop App 中,您可以指示 Claude:

  • "查询 'users' 表的所有用户" (Claude 可能会使用 'mysql_query' 工具执行 'SELECT * FROM users' 查询)
  • "获取 'products' 表的结构信息" (Claude 可能会请求 'products' 表的 schema 资源)

具体使用方式取决于 MCP 客户端的功能和界面,但核心是通过客户端与 'mcp-server-mysql' 服务器的交互,实现 LLM 对 MySQL 数据库的访问和利用。

信息

分类

数据库与文件