MySQL数据库查询服务

一个基于Model Context Protocol (MCP)的MySQL数据库访问服务,提供SQL查询执行和结果返回功能,适用于需要与MySQL数据库交互的应用场景。

  • by michael7736
  • JavaScript
  • 本地部署
  • 7 星标
  • 更新于
在 GitHub 查看 michael7736/mysql-mcp-server

使用说明

MySQL MCP服务器

这是一个模型上下文协议(MCP)服务器,提供对MySQL数据库的访问。它允许代理对MySQL数据库执行SQL查询。

特性

  • 对MySQL数据库执行SQL查询:
    • 读取数据(SELECT语句)
    • 创建表(Create TABLE语句)
    • 插入数据(Insert INTO语句)
    • 更新数据(Update语句)
    • 删除数据(Delete FROM语句)
  • 以JSON格式返回查询结果
  • 可配置的数据库连接设置
  • 具有唯一ID的事务日志记录

先决条件

  • Node.js(v14或更高版本)
  • MySQL服务器
  • MCP-SDK

安装

  1. 克隆或下载此存储库
  2. 安装依赖项:
cd mysql-mcp-server
npm install
  1. 构建服务器:
npm run build

配置

MySQL MCP服务器使用以下环境变量进行配置:

  • MYSQL_HOST:MySQL服务器主机名(默认值:“localhost”)
  • MYSQL_PORT:MySQL服务器端口(默认:3306)
  • MYSQL_USER:MySQL用户名(默认值:“mcp101”)
  • MYSQL_PASSWORD:MySQL密码(默认值:'123qwe')
  • MYSQL_DATABASE:MySQL数据库名称(默认值:“mcpdb”)

数据库设置

  1. 创建MySQL数据库:
CREATE DATABASE mcpdb;
  1. 创建一个具有数据库访问权限的MySQL用户:
CREATE USER 'mcp101'@'localhost' IDENTIFIED BY '123qwe';
GRANT ALL PRIVILEGES ON mcpdb.* TO 'mcp101'@'localhost';
FLUSH PRIVILEGES;
  1. 使用示例数据创建测试表:
USE mcpdb;
CREATE TABLE test_users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(100),
  email VARCHAR(100),
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

INSERT INTO test_users (name, email) VALUES
  ('John Doe', 'john@example.com'),
  ('Jane Smith', 'jane@example.com'),
  ('Bob Johnson', 'bob@example.com');

MCP配置

将MySQL MCP服务器添加到MCP设置文件中:

VSCode(克劳德扩展)

文件: ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json

根据MySQL配置更改args

{
  "mcpServers": {
    "mysql-mcp-server": {
      "autoApprove": [],
      "disabled": false,
      "timeout": 60,
      "command": "node",
      "args": [
        "/path/to/mysql-mcp-server/build/index.js"
      ],
      "env": {
        "MYSQL_HOST": "localhost",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "mcp101",
        "MYSQL_PASSWORD": "123qwe",
        "MYSQL_DATABASE": "mcpdb"
      },
      "transportType": "stdio"
    }
  }
}

克劳德桌面应用程序

文件: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "mysql-mcp-server": {
      "autoApprove": [],
      "disabled": false,
      "timeout": 60,
      "command": "node",
      "args": [
        "/path/to/mysql-mcp-server/build/index.js"
      ],
      "env": {
        "MYSQL_HOST": "localhost",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "mcp101",
        "MYSQL_PASSWORD": "123qwe",
        "MYSQL_DATABASE": "mcpdb"
      },
      "transportType": "stdio"
    }
  }
}

用法

配置后,您可以在与Claude的对话中使用MySQL MCP服务器。例如:

“您能向我显示test_users表中的所有用户吗?”

克劳德将使用 run_sql_query 执行工具:

SELECT * FROM test_users

可用工具

run_sql_query

对MySQL数据库执行只读SQL查询(仅限SELECT语句)。

参数:

  • query:要执行的SQL SELECT查询。

例子:

{
  "query": "SELECT * FROM test_users"
}

create_table

在MySQL数据库中创建新表。

参数:

  • query:要执行的SQL CREATE TABLE查询。

例子:

{
  "query": "CREATE TABLE products (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100), price DECIMAL(10,2))"
}

insert_data

将数据插入MySQL数据库的表中。

参数:

  • query:要执行的SQL INSERT INTO查询。

例子:

{
  "query": "INSERT INTO products (name, price) VALUES ('Laptop', 999.99), ('Smartphone', 499.99)"
}

update_data

更新MySQL数据库表中的数据。

参数:

  • query:要执行的SQL UPDATE查询。

例子:

{
  "query": "UPDATE products SET price = 899.99 WHERE name = 'Laptop'"
}

删除数据

从MySQL数据库的表中删除数据。

参数:

  • query:要执行的SQL DELETE FROM查询。

例子:

{
  "query": "DELETE FROM products WHERE name = 'Smartphone'"
}

安全考虑

  • 为MCP服务器使用具有适当权限的专用MySQL用户
  • 如果只需要查询数据,请考虑使用只读权限
  • 安全地存储数据库凭据等敏感信息
  • 所有操作都记录了唯一的事务ID以供审计