当前位置: 首页 > news >正文

使用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、克隆并导入项目

  1. 克隆项目到本地

    git clone https://github.com/benborla/mcp-server-mysql.git
    

    之后Github上MySQL MCP service的完整源码就导入到你的本地了

  2. 使用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_HOSTMYSQL_USERMYSQL_PASSWORDMYSQL_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 服务器

  1. 直接在终端运行:
    在 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中好用非常多,欢迎大家阅读我的下一篇文章。

相关文章:

  • [极客大挑战 2019]PHP 1
  • AI改变生活
  • 苍穹外卖day04
  • JPG同步删除RAW批处理文件
  • Vue ‘v-model‘ directives require the attribute value which is valid as LHS.
  • 八、自动化函数
  • 单基因高低分组和相关基因的GSEA等富集分析教程,代做分析
  • dev中使用auto的方法
  • AETTA: Label-Free Accuracy Estimation for Test-Time Adaptation
  • python编程-实现非确定性有限自动机
  • 正弦波有效值和平均值(学习笔记)
  • 探秘Transformer系列之(27)--- MQA GQA
  • 【一篇关于自我刷题的思考】
  • 使用Python进行AI图像生成:从GAN到风格迁移的完整指南
  • 如何安装git?
  • 智能Todo协作系统开发日志(二):架构优化与安全增强
  • 算法题(125):子集
  • AJAX与Axios基础
  • 网页爬虫--赶集网租房信息爬取(Python)
  • 开源模型应用落地-模型上下文协议(MCP)-第三方MCP Server实战指南(五)
  • 成都一季度GDP为5930.3亿元,同比增长6%
  • 神舟二十号载人飞船成功飞天,上海航天有何贡献?
  • 魔都眼·上海车展④|奔驰宝马保时捷……全球豪车扎堆首秀
  • 中国体育报:中国乒协新周期新起点再出发
  • 已有17个国家和国际组织、50多个国际科研机构加入国际月球科研站合作
  • 福建一改造项目1人高处坠亡且事故迟报41天,住建厅约谈相关责任单位