CodeBuddy+MCP 实现 “自然语言操纵数据库”
本文最后更新于26 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

一、文章核心目标

解决 “大模型无法访问本地 / 隐私数据库” 的痛点,通过 MCP(Model Context Protocol,模型上下文协议) 打通 CodeBuddy(AI 编辑器)与本地 / 远程数据库的连接,让用户无需编写 SQL 代码,仅用自然语言就能完成数据库的查询、新增、修改等操作(如 “查张三的课程总数”“给学生表加一条记录”),同时附带高德地图 MCP 服务配置示例,展示 MCP 连接外部工具的通用性。

二、完整操作步骤(分 2 大场景:高德地图 MCP 配置、MySQL 数据库 MCP 配置)

前置准备(通用)

  1. 工具安装
    • 安装 CodeBuddy(支持 MCP 协议,官网下载:Tencent Cloud Code Assistant CodeBuddy – AI Code Editor 国际版:https://www.codebuddy.ai/genie/login)。
    • 确保本地安装 npx(Node.js 自带,若未安装需先装 Node.js,推荐 16.x+,执行 node -v 验证)。
    • 若操作数据库:提前启动 MySQL 服务(本地 / 远程均可),准备数据库地址、端口、用户名、密码、目标库名。
  2. 密钥 / 信息获取
    • 高德地图场景:从 高德开放平台 申请 AMAP_MAPS_API_KEY(注册→创建应用→添加 Key,服务平台选 “Web 服务”)。
    • 数据库场景:确认 MySQL 权限(如 root 账号能读写目标数据库)。

场景 1:CodeBuddy 配置高德地图 MCP Server(验证 MCP 基础功能)

步骤 1:进入 CodeBuddy 的 MCP 配置界面

步骤 2:配置高德地图 MCP 服务

  1. 模式,粘贴以下配置(替换 AMAP_MAPS_API_KEY为你的真实密钥):
  2. {
       "mcpServers": {
         "amap-maps": {
           "command": "npx",
           "args": ["-y", "@amap/amap-maps-mcp-server"],
           "env": {
             "AMAP_MAPS_API_KEY": "你的高德地图API密钥"  // 替换为申请到的Key
          }
        }
      }
     }
  3. 点击 “保存”,返回 MCP 服务器列表,确认 “amap-maps” 状态为 “Enabled”(绿色,若为红色点击 “刷新” 重试,通常是密钥错误或网络问题)。

步骤 3:测试高德地图 MCP 功能(自然语言调用)

  1. 在聊天框中输入自然语言需求,CodeBuddy 会自动调用高德地图 MCP 工具:
    • 示例 1:“帮我查武汉未来 3 天的天气”→ 自动触发 maps_weather 工具,返回温度、风力等结果。
    • 示例 2:“找杭州西湖 1 公里内的五星级酒店”→ 自动调用 maps_geo(解析西湖坐标)→ maps_around_search(周边搜索)→ maps_search_detail(获取酒店详情),最终返回酒店列表(地址、评分、营业时间)。

场景 2:CodeBuddy 配置 MySQL MCP Serverm (windows操作系统)(核心:自然语言操纵数据库)

步骤 1:进入 CodeBuddy 的 MCP 配置界面

同场景 1 – 步骤 1:打开 CodeBuddy → 进入 “MCP” 页面 。

步骤 2:配置 MySQL MCP 服务

  1. 粘贴以下配置(根据你的 MySQL 信息修改参数): 
{
  "mcpServers": {
    "mysql": {
      "command": "npx",
      "args": ["-y", "@f4ww4z/mcp-mysql-server"],
      "env": {
        "MYSQL_HOST": "your_host",	//数据库地址
        "MYSQL_USER": "your_user",	//数据库用户名(如root)
        "MYSQL_PASSWORD": "your_password",	//数据库密码(替换为你的真实密码)
        "MYSQL_DATABASE": "your_database"	//目标数据库名(替换为你要操作的库)
      }
    }
  }
}
  1. 点击 “保存”,确认 “MySQL” 服务状态启动。若失败:
    • 服务启动命令: Windows 中检查 / 启动 MySQL 服务的命令与 Linux 不同:
      • 查看状态:sc query mysql(若服务名不是 mysql,需替换为实际名称,如 mysql80
      • 启动服务:net start mysql(需以管理员身份运行命令提示符,否则可能权限不足)
    • 确认配置中的 IP、端口、密码是否正确(远程数据库需开放 3306 端口,如阿里云安全组配置)。

步骤 3:自然语言操纵数据库(核心功能测试)

  1. 输入自然语言需求,无需手动写 SQL,CodeBuddy 会自动调用 mysql_query 工具执行操作:
① 查询表数据量
  • 输入需求:“帮我查 aidemo 数据库中 prodects 表有多少条数据”
  • 执行逻辑:Cursor 自动生成 SELECT COUNT(*) AS total_count FROM prodects ;,调用 MCP 执行后返回结果(如 “共 6 条数据”)。
② 查询数据库所有表及功能
  • 输入需求:“帮我查 aidemo 数据库有多少张表,用表格列出表名和作用”
  • 执行逻辑:自动查询数据库元数据,分析表结构,生成表格(如 pmhub_project 是项目主表,pmhub_project_task 是任务表)。
③ 新增数据(以学生表为例)
  • 前提:先通过 Navicat/MySQL 命令行创建学生表(当前 MCP 不支持 DDL 建表,需手动创建,SQL 如下): 
    • CREATE TABLE student (
        id VARCHAR(64) NOT NULL COMMENT ‘学生ID’,
        name VARCHAR(50) NOT NULL COMMENT ‘姓名’,
        age INT NOT NULL COMMENT ‘年龄’,
        gender VARCHAR(10) NOT NULL COMMENT ‘性别’,
        created_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT ‘创建时间’,
        updated_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ‘更新时间’,
         PRIMARY KEY (id)
       ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT=’学生表’;
  • 输入需求:“帮我在 student 表中添加一条记录:张三,16岁,男”
  • 执行逻辑:自动生成 INSERT INTO student (id, name, age, gender) VALUES (UUID(), '张三', 16, '男');,执行后返回 “插入成功”,并可验证数据是否存在。
④ 修改数据
  • 输入需求:“把 student 表中张三的年龄改成18岁”
  • 执行逻辑:自动生成 UPDATE student SET age = 18 WHERE name = '张三';,返回 “影响 1 行数据”,并查询修改后结果。
⑤ 多表联查(学生表 + 课程表)
  • 前提:创建课程表并插入数据(SQL 如下):
    •  CREATE TABLE course (
        id VARCHAR(64) NOT NULL COMMENT ‘课程ID’,
        course_name VARCHAR(100) NOT NULL COMMENT ‘课程名称’,
        duration INT NOT NULL COMMENT ‘时长(分钟)’,
        student_id VARCHAR(64) NOT NULL COMMENT ‘关联学生ID’,
        created_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT ‘创建时间’,
        updated_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ‘更新时间’,
         PRIMARY KEY (id),
         FOREIGN KEY (student_id) REFERENCES student(id)
       ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT=’课程表’;
  • 先插入一条测试数据:帮我往课程表里面插入一条数据,是张三选的化学课程,课程时长120分钟

同样的方法插入 3 条数据,现在只需要用自然语言来进行多表联查。

  • 输入需求:“帮我查张三一共修了多少门课,总时长是多少,列出每门课的明细”
  • 执行逻辑:自动生成多表联查 SQL(SELECT s.name AS student_name, COUNT(c.id) AS course_count, SUM(c.duration) AS total_duration FROM student s JOIN course c ON s.id = c.student_id WHERE s.name = '张三';),返回结果(如 “4 门课,总时长 360 分钟”,并列出化学、物理等课程明细)。

(因编码排版问题,语法可能存在中英文混乱,需稍作修改)

好玩好玩~ 爸爸妈妈再也不用担心我不会写代码了~❤️

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇