使用说明
MCP MySQL服务器
这是一个基于Node.js的MCP(托管连接器平台)MySQL服务器,提供与MySQL数据库交互的功能。
特性
- 怎么翻译:使用可选参数执行SQL查询。
- describe_table:描述指定表的架构。
- list_tables:列出连接数据库中的所有表。
- 更新:对表执行更新操作。
- 插入:将单个记录插入表中。
- 删除:根据条件从表中删除记录(由实现
deleteSingle内部)。
设置和配置
先决条件
- Node.js(推荐LTS版本)
- npm(节点包管理器)
- MySQL服务器正在运行且可访问
- Express.js(作为依赖项包含)
安装
-
克隆存储库(或手动创建项目结构):
git clone <repository-url> cd mcp-mysql如果您是手动设置的,请确保您已
package.json和index.js如所提供的。 -
安装依赖项:
导航到项目目录并运行:
npm install
配置
-
创建一个
.env文件:在项目的根目录中,创建一个名为
.env. -
将数据库凭据添加到
.env:填充
.env包含MySQL数据库连接详细信息的文件:DB_HOST=localhost DB_PORT=3306 DB_USER=root DB_PASSWORD=password DB_DATABASE=mysql_db注: 替换
localhost,3306,root,password,mysql_db,以及your_mysql_port分别使用您的实际数据库主机、端口、用户名、密码、数据库名称和所需的服务器端口。
IDE的MCP JSON配置(例如,游标AI、VS代码)
为了允许IDE自动发现您的MCP MySQL服务器并与之交互,您可以将以下JSON配置添加到IDE中 .cursor/mcp.json 文件。
{
"mcpServers": {
"mcp_mysql_dheer": {
"command": "node",
"args": ["index.js"],
"env": {
"DB_HOST": "your_db_host",
"DB_PORT": "your_db_port",
"DB_USER": "your_db_user",
"DB_PASSWORD": "your_db_pwd",
"DB_DATABASE": "your_db"
}
}
}
}
Docker使用
此MCP服务器作为stdio应用程序运行。下面是构建Docker镜像并在容器中运行服务器的说明。
-
构建Docker镜像:
导航到包含以下内容的项目目录
Dockerfile和package.json,然后运行:docker build -t mcp_mysql_dheer . -
运行Docker容器(作为stdio服务器):
运行Docker容器时,您需要提供MySQL数据库凭据作为环境变量。
docker run -i mcp_mysql_dheer node index.js \ -e DB_HOST=your_mysql_host \ -e DB_USER=your_mysql_user \ -e DB_PASSWORD=your_mysql_password \ -e DB_DATABASE=your_mysql_database \ -e DB_PORT=your_mysql_port注:
-i国旗对于STDIN以保持开放,允许MCP客户端与服务器通信。- 替换
your_mysql_host,your_mysql_user,your_mysql_password,your_mysql_database,以及your_mysql_port使用您的实际数据库连接详细信息。
用法(假设的MCP客户端示例)
此服务器旨在供MCP客户端使用。以下是MCP客户端如何与这些功能交互的概念示例:
const client = new MCPClient({
server: {
command: 'docker',
args: [
'run',
'-i',
'--rm',
'mcp_mysql_dheer',
'node',
'index.js',
'-e', 'DB_HOST=your_mysql_host',
'-e', 'DB_USER=your_mysql_user',
'-e', 'DB_PASSWORD=your_mysql_password',
'-e', 'DB_DATABASE=your_mysql_database',
'-e', 'DB_PORT=your_mysql_port'
],
},
});
async function exampleUsage() {
// Example: List tables
const tables = await client.callTool('list_tables', {});
console.log('Tables:', tables);
// Example: Query data
const users = await client.callTool('query', { sql: 'SELECT * FROM users' });
console.log('Users:', users);
}
exampleUsage();
