到底 MCP 有什么魅力?10分钟让 AI 直接操作数据库!

大家好,我是松柏。

这几天老是听到 MCP 的概念,为了让自己不那么 out ,昨天下班之后我也是抓紧去看了下这到底是何方神圣。

MCP,全称 Model Context Protocol,是一个开源协议,目的是为大语言模型(LLM)提供一个标准化的上下文接口。也就是说,为各种应用对接 AI 提供了一个规范,就像 USB 接口一样。

听起来有点摸不着头脑,没事,看看官方给的 demo 就知道是怎么回事了。这个 demo 做的事情很简单,就是写了两个获取天气情况的方法给 AI 用!因为 AI 的训练是使用已有的数据,所以如果直接问 AI 现在几点了,那它肯定懵逼,同样 AI 也不知道明天的天气会怎么样,因为训练它的历史数据里没有。那我们让代码告诉它,它再告诉我不就完了?没错,这个 demo 做的就是这件事。

根据这个 demo ,我们自己也搓一个出来玩玩。平时开发的时候,免不了要造一些测试数据到数据库,以前都是告诉 AI DDL,让它生成对应的 insert 语句,然后手动 copy 到控制台执行。现在我们把这个过程全部交给 AI 来做,甚至把实现这个过程的代码也可以让 AI 来写!

手把手从零实现的步骤(因为官方 demo 是 python 多一点,我这里也直接用 python 了):

1)先把官方的项目初始化命令全执行一遍:

bash 复制代码
# 安装 python 的包管理工具,安装后重开命令行窗口
curl -LsSf https://astral.sh/uv/install.sh | sh

# 创建项目文件夹
uv init gen-data
cd gen-data

# 创建虚拟环境并激活
uv venv
source .venv/bin/activate

ok,前置步骤就这些,接下来就是打开 ide 写代码了。

2)给 AI 我们的需求,让 AI 仿照官方的 demo 给出实现:

(我这里仅给出部分截图,源码会放到文末)

当然了,我写 prompt 的水平非常有限,一般生成出来的内容是要改吧改吧的。在改代码以前,先把依赖安装下:

csharp 复制代码
uv add dotenv aiomysql mcp 

3)稍微改了下上面的代码之后,我又让 GPT 给我加了一个获取某表 DDL 的功能,这样就更省事一点,使用的时候就不用我告诉它了:

4)这样功能就完成,接下来就是配置到客户端里使用。官方推荐的是 Claude for Desktop ,不过我实测下来在国内用起来很不方便,所以更推荐用 Cursor:

然后在打开的文件里写入以下内容:

json 复制代码
{
  "mcpServers": {
    "gen-data": {
      "command": "uv",
      "args": [
        "--directory",
        "/项目文件夹路径(gen-data)",
        "run",
        "功能代码(main).py"
      ],
      "env": {
        "MYSQL_PASSWORD": "数据库密码"
      }
    }
  }
}

配置之后记得重启 Cursor ,否则很可能不生效。

5)来看下效果吧:

整个过程并不难,但还是让我感受到了一些震撼,AI 的使用成本越来越低了,像我这样的普通开发者也能很轻易的把 AI 接到常用的工具中,程序员还是要紧跟科技发展的步伐,避免自己被淘汰掉,一起加油吧兄弟们!

当然了,这个 demo 就是把数据库账号密码告诉 AI ,让它自己随便去搞,所以仅限于在本地玩一玩,不要带到生产环境上。

上述demo地址:GitHub - co-pine/gen-data

相关推荐
雨落倾城夏未凉9 分钟前
5.通过拷贝构造函数复制一个对象,假如对象的成员中有个指针类型的变量,如何避免拷贝出来的副本中的该成员之下行同一块内存(等价于默认拷贝构造函数有没有缺点)
c++·后端
雨落倾城夏未凉11 分钟前
4.深拷贝VS浅拷贝
c++·后端
dl74314 分钟前
一文看懂spring配置原理
后端
ERP老兵_冷溪虎山17 分钟前
IDEA 幽灵触手实锤!Python 文件一开,Anaconda 全局库让 JDK 编译慢 2-4 秒(附截图证据)
后端
阿华的代码王国24 分钟前
【Android】适配器与外部事件的交互
android·xml·java·前端·后端·交互
写bug写bug25 分钟前
分布式锁的使用场景和常见实现(下)
分布式·后端·面试
Postkarte不想说话26 分钟前
Debian13编译安装FreeSWITCH
后端
mit6.82427 分钟前
[AI React Web] 包与依赖管理 | `axios`库 | `framer-motion`库
前端·人工智能·react.js
SimonKing30 分钟前
Mybatis批量插入,形式不同性能也不同
数据库·后端·程序员
MacroZheng34 分钟前
还在用WebSocket实现即时通讯?试试MQTT吧,真香!
java·spring boot·后端