使用MCP服务通过自然语言操作数据库(vscode+cline版本)

news2025/7/11 13:35:18

使用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中好用非常多,欢迎大家阅读我的下一篇文章。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2335486.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue 3 + TypeScript 实现一个多语言国际化组件(支持语言切换与内容加载)

文章目录 一、项目背景与功能概览二、项目技术架构与依赖安装2.1 技术栈2.2 安装依赖 三、国际化组件实现3.1 创建 i18n 实例3.2 配置 i18n 到 Vue 应用3.3 在组件中使用国际化内容3.4 支持语言切换 四、支持类型安全4.1 添加类型支持4.2 自动加载语言文件 一、项目背景与功能概…

PhalApi 2.x:让PHP接口开发从“简单”到“极简”的开源框架

—— 专为高效开发而生,助你轻松构建高可用API接口 一、为什么选择PhalApi 2.x? 1.轻量高效,性能卓越 PhalApi 2.x 是一款专为接口开发设计的轻量级PHP框架,其核心代码精简但功能强大。根据开发者实测,在2核2G服务器…

Java 企业级应用:SOA 与微服务的对比与选择

企业级应用开发中,架构设计是决定系统可扩展性、可维护性和性能的关键因素。SOA(面向服务的架构)和微服务架构是两种主流的架构模式,它们各自有着独特的和设计理念适用场景。本文将深入探讨 SOA 和微服务架构的对比,并…

Zookeeper的典型应用场景?

大家好,我是锋哥。今天分享关于【Zookeeper的典型应用场景?】面试题。希望对大家有帮助; Zookeeper的典型应用场景? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 ZooKeeper 是一个开源的分布式协调服务,主要用于管理和协调大…

数据分析不只是跑个SQL!

数据分析不只是跑个SQL! 数据分析五大闭环,你做到哪一步了?闭环一:认识现状闭环二:原因分析闭环三:优化表现闭环四:预测走势闭环五:主动解读数据 数据思维:WHY-WHAT-HOW模…

Dify智能体平台源码二次开发笔记(4) - 多租户的SAAS版实现

前言 Dify 的多租户功能是其商业版的标准功能,我们应当尊重其盈利模式。只有保持良性的商业运作,Dify 才能持续发展,并为用户提供更优质的功能。因此,此功能仅限学习使用。 我们的需求是:实现类似 SaaS 版的账号隔离&a…

layui中transfer两个table展示不同的数据列

在项目的任务开发中需要达到transfer右侧table需要有下拉框可选择状态,左侧table不变 使用的layui版本为2.4.5,该版本没有对transfer可自定义数据列的配置,所以改动transfer.js中的源码 以下为transfer.js部分源码 也是transfer.js去render的…

【机器学习】机器学习笔记

1 机器学习定义 计算机程序从经验E中学习,解决某一任务T,进行某一性能P,通过P测定在T上的表现因经验E而提高。 eg:跳棋程序 E: 程序自身下的上万盘棋局 T: 下跳棋 P: 与新对手下跳棋时赢的概率…

STM32 BOOT设置,bootloader,死锁使用方法

目录 BOOT0 BOOT1的配置含义 bootloader使用方法 芯片死锁解决方法开发调试过程中,由于某种原因导致内部Flash锁死,无法连接SWD以及JTAG调试,无法读到设备,可以通过修改BOOT模式重新刷写代码。修改为BOOT01,BOOT10…

【Redis】string类型

目录 1、介绍2、底层实现【1】SDS【2】int编码【3】embstr编码【4】raw编码【5】embstr和raw的区别 3、常用指令【1】字符串基本操作:【2】批量操作【3】计数器【4】过期时间【5】不存在就插入 4、使用场景 1、介绍 string是redis中最简单的键值对形式,…

PostgreSQL全平台安装指南:从入门到生产环境部署

一、PostgreSQL核心特性全景解析 1.1 技术架构深度剖析 graph TDA[客户端] --> B(连接池)B --> C{查询解析器}C --> D[优化器]D --> E[执行引擎]E --> F[存储引擎]F --> G[物理存储]G --> H[WAL日志]H --> I[备份恢复] 1.2 特性优势对比矩阵 特性维度…

UE5 物理模拟 与 触发检测

文章目录 碰撞条件开启模拟关闭模拟 多层级的MeshUE的BUG 触发触发条件 碰撞 条件 1必须有网格体组件 2网格体组件必须有网格,没有网格虽然可以开启物理模拟,但是不会有任何效果 注意开启的模拟的网格体组件会计算自己和所有子网格的mesh范围 3只有网格…

做仪器UI用到的颜色工具网站

https://color.adobe.com/zh/create/color-wheel 1. 图片取颜色工具 2. 对比度工具,煤矿井下设备,光线暗,要求背景与文字有合适的对比度,可以用这个软件 3. 颜色生成ARGB的值工具,这三个工具,都在上面这…

网络安全·第三天·ICMP协议安全分析

一、ICMP功能介绍 ICMP(Internet Control Message Protocal)是一种差错和控制报文协议,不仅用于传输差错报文, 还传输控制报文,但是ICMP只是尽可能交付,提供的服务是无连接、不可靠的,并不能保…

SpringBoot对接火山引擎大模型api实现图片识别与分析

文章目录 一、前言二、创建应用三、后端1.SDK集成2.调用Rest API 四、前端 一、前言 Spring AI实战初体验——实现可切换模型AI聊天助手-CSDN博客 如上,在上一篇博客,我们已经实现了spring ai对接本地大模型实现了聊天机器人,但是目前有个新…

单片机方案开发 代写程序/烧录芯片 九齐/应广等 电动玩具 小家电 语音开发

在电子产品设计中,单片机(MCU)无疑是最重要的组成部分之一。无论是消费电子、智能家居、工业控制,还是可穿戴设备,小家电等,单片机的应用无处不在。 单片机,简而言之,就是将计算机…

ARCGIS PRO 在已建工程地图中添加在线地图

一、手工添加 如图所示: 1、在上方的菜单栏中点击“插入”,选择“连接” 2、新建ArcGIS Server 3、在弹出框中输入在线图集的URL,点击“确定” https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer 4、查看在…

ScholarCopilot:“学术副驾驶“

这里写目录标题 引言:学术写作的痛点与 AI 的曙光ScholarCopilot 的核心武器库:智能生成与精准引用智能文本生成:不止于“下一句”智能引用管理:让引用恰到好处 揭秘背后机制:检索与生成的动态协同快速上手&#xff1a…

MATLAB仿真多相滤波抽取与插值的频谱变化(可视化混叠和镜像)

MATLAB画图仿真多相滤波抽取与插值的频谱变化 可视化多速率信号处理抽取与插值的频谱变化 实信号/复信号 可视化混叠和镜像 目录 前言 一、抽取的基本原理 二、MATLAB仿真抽取运算 三、内插的基本原理 四、MATLAB仿真内插运算 总结 前言 在多速率系统中增加信号采样率的运…

MySQL-存储引擎索引

存储引擎 MySQL体系结构 1). 连接层 最上层是一些客户端和链接服务,包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于 TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程 池的概念,为通过认证安…