使用MCP服务通过自然语言操作数据库(vscode+cline版本)
使用MCP服务操纵数据库(vscode+cline版本)
本文主要介绍,在vscode中使用cline插件调用deepseek模型,通过MCP服务器 使用自然语言去操作指定数据库。本文使用的是以己经创建号的珠海航展数据库。
理解MCP服务:
MCP(Model Context Protocol)是一种用于连接和管理机器学习模型与外部系统的协议,通常用于通过网络接口实现模型与其他服务的交互。它提供了一种标准化的方式,让不同的应用程序、服务或客户端可以与模型进行数据交换、执行推理操作并获取结果。
具体来说,MCP协议通过定义模型服务的输入和输出格式,允许模型在一个抽象的层次上进行交互,而不依赖于具体的底层实现。这意味着你可以将多个模型和应用程序连接到同一个协议层,进而在不修改模型本身的情况下,进行跨平台、跨应用的集成和管理。
在一些应用中,MCP也用于实现模型的异步调用和实时查询,尤其适用于需要大规模部署和管理模型的环境。通过MCP协议,用户可以方便地查询模型、获取推理结果,并在不同的系统间共享模型服务。
举个例子,MCP可以通过一个API接口,让机器学习模型能够接收来自客户端的自然语言请求,比如查询数据库或执行某些操作,并返回结果。这个协议通常包含服务器配置、模型接口和通信协议等内容,确保模型与外部环境的顺畅配合。
**这是官网的一张架构图:**https://modelcontextprotocol.io/introduction
MCP就是AI 模型和不同的数据源和工具的中间层,AI模型可以通过这个中间层来操作不同的数据源和工具实现具体的功能。
1、配置Cline插件
我们在cline中的使用的主要是deepseek的api接口,deepseek有免费的接口,也有收费的,大家可以自行选选择。在这里默认大家已经将vscode下载到本地,接下来我们打开vscode。
点击图中标记标记的图标,在搜索框搜索cline , 点击并安装该插件,如果你是第一次安装,安装完成后你需要先进行注册,注册完成功能之后,我们对cline进行设置。
在这里说明一下:如果你想要长期使用的话,建议你去购买一家模型的api,有的大模型厂家对于新用户会赠送15块钱的免费额度。在这里给大家提供两家好用的,比如deepseek, kimi。
deekseek(没有免费额度,但是便宜):https://api-docs.deepseek.com/zh-cn/api/deepseek-api/
kimi(有免费额度): https://platform.moonshot.cn/docs/guide/start-using-kimi-api
进行到这里,我们的cline的配置基本上就完成了。
2、MCP服务器配置
2.1、克隆并导入项目
-
克隆项目到本地
git clone https://github.com/benborla/mcp-server-mysql.git
之后Github上MySQL MCP service的完整源码就导入到你的本地了
-
使用VSCode打开
在 VSCode 中,File -> Open Folder...
选择你克隆下来的项目文件夹即可。
2.2、安装前置依赖
1、安装 Node.js 与 npm
请确保本地环境已经正确安装了 Node.js(最好是 LTS 版本)和 npm。可以在终端运行以下命令来验证:
node -v
npm -v
如果能看到版本号,说明安装没问题。否则请前往 Node.js 官网 下载并安装。
2、(可选)全局安装 @smithery/cli
如果你打算通过 Smithery 自动安装和管理 MCP 服务器,可以先全局安装 @smithery/cli
:
npm install -g @smithery/cli
当然你也可以跳过全局安装这一步,后续使用 npx
来调用 @smithery/cli
。
2.3、通过Smithery安装(推荐方式)
如果你选择使用 Smithery 自动安装和管理 MCP 服务器,你可以执行以下命令:
npx -y @smithery/cli install @f4ww4z/mcp-mysql-server --client claude
这条命令会做以下事情:
- 自动将
@f4ww4z/mcp-mysql-server
依赖加到package.json
中(如果不存在则会初始化)。 - 在
smithery.yaml
(或等效的配置文件)里添加对应的安装信息。
安装完成后,你可以在 package.json
中看到 @f4ww4z/mcp-mysql-server
的依赖,也能在 node_modules
中找到它。
2.4、手动安装(备选方式)
如果不想使用 Smithery 或想直接手动执行,你可以在 VSCode 终端中进入项目根目录,执行:
npx @f4ww4z/mcp-mysql-server
或先安装到本地再执行:
npm install @f4ww4z/mcp-mysql-server
# 安装完之后
npx @f4ww4z/mcp-mysql-server
这样也可以直接使用该包提供的命令。区别在于:
- 通过 Smithery 方式,会自动把依赖加到 Smithery 的配置中,后续可以用统一的方式管理。
- 手动安装需要你自己编写或管理脚本和依赖。
2.5、配置环境变量
在vscode中配置.env文件,在你的项目根目录下(或者 MCP 相关目录下),创建一个名为 .env
的文件(有的话直接写入即可),写入类似以下内容:
MYSQL_HOST=localhost
MYSQL_USER=your_user
MYSQL_PASSWORD=your_password
MYSQL_DATABASE=your_database
此处的 MYSQL_HOST
、MYSQL_USER
、MYSQL_PASSWORD
、MYSQL_DATABASE
分别对应你的 MySQL 数据库的主机名、用户名、密码和数据库名。
重要提示:.env
文件一般要写入到 .gitignore
中,防止账号密码泄露。
2.6、配置MCP设置
MCP 服务器需要一个配置文件来告知如何启动,通常可以放在项目内的某处(比如 .mcp
文件、smithery.yaml
等),这个项目的配置文件放在了smithery.yaml中,我们在文件列表中找到它,
并将进行如下配置:
因为我们之前设置了 .env
,因此你可以将以上四个变量直接改为从 .env
读取,或者在这里直接写死硬编码也行。通常推荐使用下面的方式,把 .env
中的变量注入:
# Smithery configuration file: https://smithery.ai/docs/config#smitheryyaml
startCommand:
type: stdio
configSchema:
# JSON Schema defining the configuration options for the MCP.
type: object
required:
- mysqlHost
- mysqlPort
- mysqlUser
properties:
mysqlHost:
type: string
description: The host address of the MySQL database.
default: "${env:MYSQL_HOST}"
mysqlPort:
type: string
description: The port number for connecting to MySQL.
default: "3306"
mysqlUser:
type: string
description: The username for MySQL authentication.
default: "${env:MYSQL_USER}"
mysqlPass:
type: string
description: The password for the specified MySQL user.
default: "${env:MYSQL_PASSWORD}"
mysqlDb:
type: string
description: The database name to connect to. If left blank, retrieves all databases.
default: "${env:MYSQL_DATABASE}"
ssl:
type: boolean
default: false
description: If set to true, the connection will use SSL.
rejectUnauthorizedSSL:
type: boolean
default: false
description: If set to true, the connection will verify the SSL certificate.
allowInsertOperation:
type: boolean
default: true
description: If set to true, INSERT operations will be allowed.
allowUpdateOperation:
type: boolean
default: true
description: If set to true, UPDATE operations will be allowed.
allowDeleteOperation:
type: boolean
default: false
description: If set to true, DELETE operations will be allowed.
commandFunction:
|-
(config) => ({ "command": "node", "args": ["dist/index.js"], "env": { "MYSQL_HOST": config.mysqlHost, "MYSQL_PORT": config.mysqlPort, "MYSQL_USER": config.mysqlUser, "MYSQL_PASS": config.mysqlPass, "MYSQL_DB": config.mysqlDb, "MYSQL_SSL": config.ssl, "MYSQL_SSL_REJECT_UNAUTHORIZED": config.rejectUnauthorizedSSL, "ALLOW_INSERT_OPERATION": config.allowInsertOperation, "ALLOW_UPDATE_OPERATION": config.allowUpdateOperation, "ALLOW_DELETE_OPERATION": config.allowDeleteOperation } })
这个文件中同时包括了MCP服务的权限设置,我们可以对它的权限进行修改:
3、在 VSCode 中运行或调试 MCP 服务器
-
直接在终端运行:
在 VSCode 的终端里,先确保已经在项目根目录,然后执行:npx -y @f4ww4z/mcp-mysql-server
或者你可以通过 Smithery 启动(如果你配置了 Smithery):
npx -y @smithery/cli run mysql
这样就可以启动 MCP 服务器。
4、测试运行
MCP服务器启动之后就可以调用cline插件使用自然语言操纵数据库了。
这个是我运行的一个实例:
讲到最后,我想说的是,vscode调用MCP服务有的时候不是很稳定,有的时候无法正确理解我的查询请求,这里可能是我调用deepseek的理解能力问题(我是这样认为的)。下一篇文章我将讲解如何在cursor中配置MCP服务,并用自然语言操作数据库,cursor对于MCP服务适配的非常好,比在vscode中好用非常多,欢迎大家阅读我的下一篇文章。