关于 @enemyrr/mcp-mysql-server
@enemyrr/mcp-mysql-server 是一个 MCP 服务,为 AI 模型提供 MySQL 数据库操作接口。适合希望通过标准化工具查询和修改 MySQL 数据库的用户。
主要功能
- 01查询、写入与表结构管理工具
- 02MCP 资源用于浏览数据库结构
- 03MCP 提示词用于生成 SQL 语句
- 04支持 URL、工作区与直接连接方式
- 05使用预处理语句传递查询参数
适用场景
- 01让 AI 模型查询 MySQL 数据表
- 02在 Cursor IDE 中操作 MySQL 数据库
- 03查看表结构、索引与外键关系
MCP 相关
该项目是一个 MCP 服务,向 MCP 客户端暴露 MySQL 查询、结构管理工具,以及资源和提示词。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
@enemyrr/mcp-mysql-server
一个提供 MySQL 数据库操作功能的 Model Context Protocol 服务。此服务通过标准化接口,让 AI 模型能够与 MySQL 数据库交互。
Cursor IDE 的安装与设置
通过 Smithery 安装
通过 Smithery 自动为 Claude Desktop 安装 MySQL Database Server:
npx -y @smithery/cli install @enemyrr/mcp-mysql-server --client claude
手动安装
- 克隆并构建项目:
git clone https://github.com/enemyrr/mcp-mysql-server.git
cd mcp-mysql-server
npm install
npm run build
- 在 Cursor IDE 设置中添加服务:
- 打开命令面板(Cmd/Ctrl + Shift + P)
- 搜索 "MCP: Add Server"
- 填写以下字段:
- 名称:
mysql - 类型:
command - 命令:
node /absolute/path/to/mcp-mysql-server/build/index.js
- 名称:
注意:将
/absolute/path/to/替换为克隆并构建项目所在的实际路径。
数据库配置
可以通过以下三种方式配置数据库连接:
- 在 .env 中设置数据库 URL(推荐):
DATABASE_URL=mysql://user:password@host:3306/database
- 在 .env 中设置单独参数:
DB_HOST=localhost
DB_USER=your_user
DB_PASSWORD=your_password
DB_DATABASE=your_database
- 通过工具直接连接:
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
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。