mcpField
@
@enemyrr/mcp-mysql-server

@enemyrr/mcp-mysql-server

本地服务
github.com/enemyrr数据库3341 周前更新

关于 @enemyrr/mcp-mysql-server

@enemyrr/mcp-mysql-server 是一个 MCP 服务,为 AI 模型提供 MySQL 数据库操作接口。适合希望通过标准化工具查询和修改 MySQL 数据库的用户。

主要功能

  1. 01查询、写入与表结构管理工具
  2. 02MCP 资源用于浏览数据库结构
  3. 03MCP 提示词用于生成 SQL 语句
  4. 04支持 URL、工作区与直接连接方式
  5. 05使用预处理语句传递查询参数

适用场景

  1. 01让 AI 模型查询 MySQL 数据表
  2. 02在 Cursor IDE 中操作 MySQL 数据库
  3. 03查看表结构、索引与外键关系

MCP 相关

该项目是一个 MCP 服务,向 MCP 客户端暴露 MySQL 查询、结构管理工具,以及资源和提示词。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"mysql-server-enemyrr": {
"command": "npx",
"args": [
"-y",
"@smithery/cli"
]
}
}
}
启动命令npx -y @smithery/cli

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@smithery/cli

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

@enemyrr/mcp-mysql-server

smithery 徽章

一个提供 MySQL 数据库操作功能的 Model Context Protocol 服务。此服务通过标准化接口,让 AI 模型能够与 MySQL 数据库交互。

MCP-MySQL Server MCP 服务

Cursor IDE 的安装与设置

通过 Smithery 安装

通过 Smithery 自动为 Claude Desktop 安装 MySQL Database Server:

npx -y @smithery/cli install @enemyrr/mcp-mysql-server --client claude
手动安装
  1. 克隆并构建项目:
git clone https://github.com/enemyrr/mcp-mysql-server.git
cd mcp-mysql-server
npm install
npm run build
  1. 在 Cursor IDE 设置中添加服务:
    • 打开命令面板(Cmd/Ctrl + Shift + P)
    • 搜索 "MCP: Add Server"
    • 填写以下字段:
      • 名称:mysql
      • 类型:command
      • 命令:node /absolute/path/to/mcp-mysql-server/build/index.js

注意:将 /absolute/path/to/ 替换为克隆并构建项目所在的实际路径。

数据库配置

可以通过以下三种方式配置数据库连接:

  1. 在 .env 中设置数据库 URL(推荐):
DATABASE_URL=mysql://user:password@host:3306/database
  1. 在 .env 中设置单独参数:
DB_HOST=localhost
DB_USER=your_user
DB_PASSWORD=your_password
DB_DATABASE=your_database
  1. 通过工具直接连接:
use_mcp_tool({
  server_name: "mysql",
  tool_name: "connect_db",
  arguments: {
    url: "mysql://user:password@host:3306/database"
    // OR
    workspace: "/path/to/your/project" // Will use project's .env
    // OR
    host: "localhost",
    user: "your_user",
    password: "your_password",
    database: "your_database"
  }
});

可用工具

1. connect_db

使用 URL、工作区路径或直接凭据连接 MySQL 数据库。

2. query

执行 SELECT 查询,可选用预处理语句参数。

use_mcp_tool({
  server_name: "mysql",
  tool_name: "query",
  arguments: {
    sql: "SELECT * FROM users WHERE id = ?",
    params: [1]
  }
});
3. execute

执行 INSERT、UPDATE 或 DELETE 查询,可选用预处理语句参数。

use_mcp_tool({
  server_name: "mysql",
  tool_name: "execute",
  arguments: {
    sql: "INSERT INTO users (name, email) VALUES (?, ?)",
    params: ["John Doe", "[email protected]"]
  }
});
4. list_tables

列出已连接数据库中的所有表。

use_mcp_tool({
  server_name: "mysql",
  tool_name: "list_tables"
});
5. describe_table

获取指定表的结构。

use_mcp_tool({
  server_name: "mysql",
  tool_name: "describe_table",
  arguments: {
    table: "users"
  }
});
6. create_table

使用指定字段和索引创建新表。

use_mcp_tool({
  server_name: "mysql",
  tool_name: "create_table",
  arguments: {
    table: "users",
    fields: [
      {
        name: "id",
        type: "int",
        autoIncrement: true,
        primary: true
      },
      {
        name: "email",
        type: "varchar",
        length: 255,
        nullable: false
      }
    ],
    indexes: [
      {
        name: "email_idx",
        columns: ["email"],
        unique: true
      }
    ]
  }
});
7. add_column

向现有表添加新列。

use_mcp_tool({
  server_name: "mysql",
  tool_name: "add_column",
  arguments: {
    table: "users",
    field: {
      name: "phone",
      type: "varchar",
      length: 20,
      nullable: true
    }
  }
});
8. alter_column

修改现有列(类型、是否允许空值、默认值或重命名)。

use_mcp_tool({
  server_name: "mysql",
  tool_name: "alter_column",
  arguments: {
    table: "users",
    column: "phone",
    type: "varchar",
    length: 50,
    nullable: false,
    newName: "phone_number" // optional: rename column
  }
});
9. drop_column

从表中移除列。

use_mcp_tool({
  server_name: "mysql",
  tool_name: "drop_column",
  arguments: {
    table: "users",
    column: "phone_number"
  }
});
10. drop_table

删除表(需要确认)。

use_mcp_tool({
  server_name: "mysql",
  tool_name: "drop_table",
  arguments: {
    table: "old_table",
    confirm: true
  }
});
11. truncate_table

移除表中的所有行(需要确认)。

use_mcp_tool({
  server_name: "mysql",
  tool_name: "truncate_table",
  arguments: {
    table: "logs",
    confirm: true
  }
});
12. list_databases

列出服务上所有可访问的数据库。

13. get_indexes

列出表上的所有索引。

use_mcp_tool({
  server_name: "mysql",
  tool_name: "get_indexes",
  arguments: {
    table: "users"
  }
});
14. get_foreign_keys

列出表的所有外键关系。

use_mcp_tool({
  server_name: "mysql",
  tool_name: "get_foreign_keys",
  arguments: {
    table: "orders"
  }
});

MCP 资源

将数据库架构作为资源浏览:

URI描述
mysql://schema数据库概览(表数量、大小)
mysql://tables列出所有表及其元数据
mysql://tables/{name}表详情(列、索引、外键)
mysql://tables/{name}/columns列定义
mysql://tables/{name}/indexes索引定义
mysql://tables/{name}/sample表中的 5 行示例数据

MCP 提示词

用于常见操作的预置提示词:

提示词描述
generate-select为表构建 SELECT 查询
generate-insert生成 INSERT 模板
generate-update生成 UPDATE 模板
explain-schema以自然语言解释架构
suggest-indexes为表推荐索引

功能

  • 14 个数据库工具,用于查询、架构管理等
  • 用于浏览数据库架构的 MCP 资源
  • 用于生成 SQL 查询的 MCP 提示词
  • 多种连接方式(URL、工作区、直接连接)
  • 安全的连接处理,并在完成后自动清理
  • 支持查询参数的预处理语句
  • 全面的错误处理和验证
  • 支持 TypeScript

安全性

  • 使用预处理语句防止 SQL 注入
  • 支持通过环境变量安全处理密码
  • 执行前验证查询
  • 完成后自动关闭连接

错误处理

服务会针对以下问题提供详细的错误消息:

  • 连接失败
  • 查询或参数无效
  • 缺少配置
  • 数据库错误
  • 架构验证错误

贡献

欢迎贡献!欢迎向 https://github.com/enemyrr/mcp-mysql-server 提交 Pull Request。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。