🎏:你只管努力,剩下的交给时间
🏠 :小破站
我用 TRAE 做了一个不一样的 MySQL MCP
-
- 摘要
- 为什么要做这个工具?
- 环境准备
- 开发过程
-
- [第一步:明确需求,AI 开始规划](#第一步:明确需求,AI 开始规划)
- 第二步:技术选型的调整与决策
- 第三步:搭建项目架构与依赖安装
- 第四步:调试修复与代码优化
- 配置和测试
-
- [配置 MCP Server 的完整流程](#配置 MCP Server 的完整流程)
- 实际功能测试与效果验证
- [关于 TRAE 的使用体验与 AI 协作心得](#关于 TRAE 的使用体验与 AI 协作心得)
- 总结与展望
- 感谢
摘要
项目背景: 无论你是学生做数据分析作业、老板想看业务报表、产品经理需要查询用户数据,还是程序员调试代码,都免不了要查数据库。传统方式是打开 Navicat 之类的数据库工具,写 SQL 查询,然后导出数据。这个过程不仅麻烦,对不懂 SQL 的人来说更是门槛很高。
解决方案: 利用 TRAE AI 助手开发了一个 MySQL MCP 工具,让你可以用人话直接查数据库。比如说"帮我看看最近一周的订单",AI 就能自动生成 SQL、执行查询、格式化结果,甚至直接导出 Excel 表格。
核心成果:
- ⚡ 2小时完成开发:从零到可用,包括编码、调试、测试全流程
- 🗣️ 自然语言查询:"查询我有多少个表" → 自动执行并返回结果
- 📊 一键导出 Excel:"把最近10条账单导出" → 生成格式完整的表格文件
- 🔒 绝对安全:只读模式,禁止任何删除、修改操作,再也不怕误删数据库
- 👥 零门槛使用:不需要懂 SQL、不需要学数据库工具,会说话就能用
适用人群: 学生、数据分析师、产品经理、运营人员、老板、程序员------任何需要查看数据库数据的人
为什么要做这个工具?
痛点场景
想象几个常见的场景:
场景1:学生做数据分析作业
老师布置了一个作业,要分析学校图书馆的借阅数据。数据在 MySQL 数据库里,但你不太会写 SQL,每次都要找学长帮忙查数据,很麻烦。
场景2:老板要看业务数据
周一早会前,老板想看看上周的销售数据。运营同学要先找技术,技术写 SQL 查出来,导成 Excel 发给老板。一个简单的需求要折腾好几个人。
场景3:产品经理调研数据
产品经理想看看某个功能的使用情况,需要查用户表。但不懂 SQL,只能找开发帮忙。开发手头有活,要等半天才能帮忙查,效率很低。
场景4:程序员调试代码
程序员在写代码时,需要频繁查看数据库确认数据。但每次都要切换到数据库工具,打断了编程思路,很烦人。
这些痛点的核心问题是:查数据库这件事,对大部分人来说门槛太高了。
我们的解决方案
有了这个 MySQL MCP 工具,一切变得简单:
学生:
"帮我查一下2024年借阅次数最多的10本书"
AI 自动生成 SQL、执行查询、返回结果,还能导出成 Excel 交作业
老板:
"给我看看上周的销售数据,按销售额排序"
几秒钟就能拿到 Excel 报表,不用麻烦任何人
产品经理:
"统计一下最近一个月注册的用户数量"
立即得到答案,不需要懂 SQL,不需要等开发
程序员:
"查一下 user_id=12345 的订单记录"
在对话框里直接就能看到结果,不用切换工具
关键是:所有人都用自然语言,不需要学 SQL,不需要懂数据库,就像和同事聊天一样简单。
最神奇的是:这个工具是用 TRAE AI 助手开发的,只花了2个小时。
从提需求到写代码,从调试到测试,TRAE 承担了绝大部分工作,我主要负责把控方向和做决策。这也证明了 AI 辅助开发的强大能力------不仅开发者能用 AI 提高效率,普通人也能通过 AI 开发的工具降低技术门槛。
接下来,我会详细记录整个开发过程,包括遇到的问题、解决方案、以及我对 AI 辅助开发的思考。无论你是想学习如何用 TRAE 开发工具,还是想了解 MCP 协议,或者只是好奇 AI 能做到什么程度,相信这篇文章都能给你一些启发。
环境准备
开始动手之前,先把环境准备好是很重要的。这里我详细列一下我使用的环境配置,包括具体的版本号。如果你想跟着这篇文章实践的话,建议环境尽量保持一致,避免遇到一些奇怪的兼容性问题。
必需的运行环境
Node.js: v18.17.0
我选择 Node.js 主要是因为它的生态完善,特别是 MCP SDK 对 Node.js 的支持非常好。理论上 v18 以上的版本都可以,但我测试用的是 v18.17.0 这个 LTS 版本,比较稳定。如果你用的是 v16 或者更老的版本,可能会遇到一些 ES Module 相关的问题。
检查你的 Node.js 版本:
bash
node -v # 应该输出 v18.x.x 或更高
MySQL: v8.0.33
数据库方面,我用的是 MySQL 8.0.33。理论上 MySQL 5.7 及以上版本都能用,但 8.0 的性能更好,而且有一些新特性比较方便。如果你用的是 MariaDB,应该也能兼容,不过我没测试过。
测试环境我是用 Docker 跑的 MySQL,这样比较干净,不会影响本地的其他项目:
bash
docker run -d \
--name mysql-test \
-e MYSQL_ROOT_PASSWORD=your_password \
-p 3306:3306 \
mysql:8.0.33
TypeScript: v5.0+
TypeScript 是必须的,因为类型检查能帮我们避免很多低级错误。特别是在处理数据库连接、SQL 查询这些地方,有类型提示会安心很多。我用的是 v5.2.2,如果你是全局安装的旧版本,建议更新一下。
开发工具
TRAE
这是这次开发的核心工具。TRAE 是一个 AI 编程助手,我主要用它的 Builder 模式来生成代码。相比其他 AI 助手,TRAE 的优势是:
- 理解能力强,不需要反复解释需求
- 生成的代码质量高,符合最佳实践
- 支持 MCP 协议,可以直接调用我们开发的工具
WPS Office / Microsoft Excel
用来查看导出的 Excel 文件。两个都可以,我个人用的是 WPS,因为它免费而且功能够用。如果你用的是 Mac,Numbers 也可以打开,但某些样式可能会有点差异。
环境准备就是这些,接下来进入正题。
开发过程
第一步:明确需求,AI 开始规划
开发的第一步,也是最重要的一步,就是把需求说清楚。我打开 TRAE,切换到 Builder 模式,然后直接跟它说:
"我想实现一个 mysql-mcp,看清楚啊,想实现的是一个 mcp。主要是可以实现 mysql 的连接、mysql 的基本查询,为了安全考虑,一定要禁止出现删除表、删库等一系列高风险的操作。请帮我实现一下,谢谢"

TRAE 收到需求后,先回复了一句"明白了,您想要实现一个 MySQL MCP (MySQL Control Panel) 工具。我会帮您实现一个安全的 MySQL 管理工具,包含连接管理和安全的查询功能。",然后直接开始规划任务。
不过这里有个小插曲,从截图中可以看到,TRAE 最开始准备用 Go 语言来实现。它的任务列表里预计用时5步办,每步大概几分钟,看起来挺有条理的。但是,Go 语言虽然性能好,但对我来说并不是最佳选择。
第二步:技术选型的调整与决策
看到 TRAE 准备用 Go 实现,我想了想,虽然 Go 性能确实不错,但这个项目用 Node.js 可能更合适。主要考虑以下几点:
- MCP SDK 的成熟度:官方的 MCP SDK 对 Node.js 支持最完善,文档和示例都比较多
- 生态系统:Node.js 的数据库库、Excel 处理库都很成熟,而且我之前用过,知道哪些坑
- 开发效率:TypeScript 的类型系统足够用,而且开发效率比 Go 高
- 部署简单:Node.js 项目部署很方便,不需要编译,复制文件就能跑
于是我点了下界面上的"使用node实现"按钮,告诉 TRAE 改用 Node.js。

TRAE 很快就理解了我的意图,回复说:"好的,我来帮您使用 Node.js 重新实现这个 MySQL MCP。我们将使用 TypeScript 来实现,这样可以获得更好的类型安全性。"
然后它重新规划了任务列表,变成了5个步骤:
- 创建 Node.js 项目结构和依赖配置
- 实现 MySQL 连接池管理器
- 实现 SQL 语句安全检查器
- 实现查询接口
- 添加使用示例
可以看出,任务的核心内容没变,只是实现方式从 Go 换成了 Node.js。而且 TRAE 主动提到了要用 TypeScript,这点我很满意,说明它理解了类型安全的重要性。
接下来就进入实际的开发环节了。TRAE 先说要删除之前 Go 语言实现的文件,准备清理工作区。然后准备初始化一个新的 Node.js 项目。
第三步:搭建项目架构与依赖安装
确定了技术栈之后,TRAE 就开始真正的开发工作了。它的执行过程非常有条理,我看着它一步步操作,感觉就像在看一个经验丰富的工程师在工作。

从截图可以看到,整个搭建过程分为以下几个步骤:
1. 初始化 Node.js 项目
首先是创建项目目录并初始化:
bash
npm init -y
这个命令会生成一个基础的 package.json
文件。TRAE 用的是 -y
参数,表示使用默认配置,不需要一个个回答问题。这种细节处理得很好,说明它理解实际开发中的效率优先原则。
2. 安装必需的依赖
然后是安装依赖,TRAE 先执行的命令是:
bash
npm install typescript @types/node mysql2 @types/mysql2 --save-dev && npm install mysql2
这里有个小细节,它把 TypeScript 和类型定义安装到 devDependencies,把 mysql2 同时安装到 dependencies。虽然 mysql2 被安装了两次(因为后面又单独装了一次),但这不是错误,npm 会自动处理。
不过后来我发现 @types/mysql2 这个包不存在,因为 mysql2 本身就包含了 TypeScript 类型定义。TRAE 后来也发现了这个问题,调整了安装命令:
bash
npm install typescript @types/node mysql2 --save-dev && npm install mysql2
3. 初始化 TypeScript 配置
接下来是初始化 TypeScript:
bash
npx tsc --init
这会生成一个 tsconfig.json
文件,包含了 TypeScript 的编译配置。TRAE 后续还会修改这个文件,调整模块系统和输出目录等配置。
4. 创建核心文件
然后 TRAE 开始创建项目的核心文件:
-
src/mcp.ts (+118行):这是 MCP Server 的核心实现,包含了数据库连接、SQL 安全检查、查询执行等所有核心逻辑。118行代码,功能完整,结构清晰。
-
src/example.ts (+59行):这是一个示例文件,展示如何使用这个 MCP。包含了连接数据库、执行查询、错误处理等典型场景。
-
package.json (+16行 -6行):TRAE 在原有基础上添加了启动脚本,比如
build
、start
、dev
等,方便开发和运行。 -
README.md (+118行):一个详细的说明文档,包含了功能介绍、安装步骤、使用示例、配置说明等。文档写得很全面,连我都觉得可以直接用了。
整个文件创建过程中,TRAE 还会显示每个文件的行数变化,比如 +118-0
表示新增了118行。这个反馈很直观,让我知道它确实在干活,而不是糊弄我。
看着 TRAE 一步步搭建项目,我感觉自己真的就像是在和一个靠谱的同事协作。它不仅能写代码,还能考虑到很多细节问题,这种体验确实很神奇。
第四步:调试修复与代码优化
代码写完之后,并不是就万事大吉了。实际上,开发过程中总会遇到各种各样的问题,特别是涉及类型系统、模块导入这些细节的时候。TRAE 在这个阶段展现出了很强的问题诊断和修复能力。

从截图可以看到,TRAE 在执行了一系列修复操作后,最终显示"任务完成"
在底部,可以看到一个绿色的"任务完成"提示框,说明所有的编译错误都已经解决了。TRAE 还主动提醒:"请检查一下编辑器的 Problems 面板,看看是否还有其他需要解决的问题。如果还有其他问题,我很乐意继续帮您解决。"
个人体会:
这个调试修复的过程让我印象特别深刻。很多 AI 助手在代码生成方面做得不错,但遇到编译错误或者运行时错误,它们往往就卡壳了。但 TRAE 不一样,它能够:
- 主动发现问题:不需要我把错误信息复制给它,它自己就能发现编译错误
- 准确定位原因:能够快速判断是类型问题、模块导入问题还是配置问题
- 系统性修复:不是头痛医头脚痛医脚,而是从根本上解决问题
- 考虑最佳实践:修复的时候不是简单地让代码能跑就行,而是按照最佳实践来调整
举个例子,在处理模块导入的时候,TRAE 没有简单地把所有 import
改成 require
,而是统一使用了 ES Module 标准。这说明它理解现代 JavaScript 的发展方向,知道 ES Module 是未来的趋势。
另外,TRAE 修改代码的时候,还会保持代码风格的一致性。比如缩进、换行、注释的格式等,都和原有代码保持一致。这种细节的关注,让整个项目看起来像是一个人写的,而不是拼凑起来的。
整个开发过程到这里,核心功能基本就完成了。接下来就是配置和测试环节,看看这个 MCP 工具在实际使用中表现如何。
配置和测试
代码开发完成并编译成功后,接下来就是最激动人心的环节了------把我们开发的 MCP 工具真正用起来。这个过程分为两个部分:先在 TRAE 中配置 MCP Server,然后进行实际的功能测试。
配置 MCP Server 的完整流程
要让 TRAE 能够使用我们开发的 MySQL MCP,需要进行一系列配置。整个配置过程其实不复杂,但有一些细节需要注意。
第一步:切换到 Builder with MCP 模式

打开 TRAE 之后,你会看到有几个内置智能体的选项:Chat、Builder、Builder with MCP。我们需要选择"Builder with MCP"这个模式。
为什么要选这个模式呢?因为:
- Chat 模式:只是普通的对话,没有工具调用能力
- Builder 模式:可以生成代码,但不能调用外部 MCP 工具
- Builder with MCP 模式:既能生成代码,又能调用 MCP 工具,功能最全面
从截图可以看到,选择"Builder with MCP"后,界面上会有一个勾选标记,表示当前处于这个模式。同时,底部还有一个"创建智能体"的选项,不过我们这次不需要创建新的智能体,用默认的就行。
第二步:进入 MCP 配置页面

选择了"Builder with MCP"模式后,点击右上角的设置按钮(或者通过菜单),进入智能体配置页面。在这个页面中,有几个标签页:智能体、MCP、上下文、规则、模型。我们需要点击"MCP"这个标签。
进入 MCP 配置页面后,会看到一个"MCP Servers"的介绍面板,下面有两个按钮:
- 手动添加:手动填写 MCP Server 的配置
- 从市场添加:从官方市场选择已经发布的 MCP
因为我们的 MCP 是自己开发的,还没发布到市场,所以选择"手动添加"。这个界面设计得挺直观的,还有一些常见 MCP 的图标展示,比如 GitHub、GitLab、Google Maps、Figma 等,说明 MCP 生态已经有不少工具了。
第三步:配置 MCP Server 参数

点击"手动添加"后,会弹出一个配置表单。从截图可以看到,我们添加的 MCP 名称叫 acowbo-mysql
,右侧有一个开关按钮,显示为绿色表示已启用。
完整的配置内容包含以下几个部分:
1. 基本信息配置
json
{
"mcpServers": {
"acowbo-mysql": {
"command": "acowbo-mcp-mysql",
"env": {
"MYSQL_HOST": "123.56.86.34",
"MYSQL_PORT": "3351",
"MYSQL_USER": "root",
"MYSQL_PASSWORD": "tLo1d5mR5nDURjSs",
"MYSQL_DATABASE": "tally_book"
}
}
}
}
- mcpServers:这是配置的根节点,下面可以配置多个 MCP Server
- acowbo-mysql:这是我们给这个 MCP 起的名字,后续调用工具的时候会用到这个名字
- command :启动命令,这里是
node
,表示用 Node.js 来运行
环境变量用来传递数据库连接信息。
2. 测试配置是否生效
配置保存后,可以看到 MCP 列表中出现了 acowbo-mysql
,右侧的开关是绿色的,表示已启用。这时候 TRAE 应该已经加载了这个 MCP,可以开始调用它提供的工具了。
如果配置有问题,开关可能会显示为灰色或者红色,这时候需要检查:
- 文件路径是否正确
- 命令是否能执行(比如 node 是否在 PATH 中)
- 环境变量是否配置正确
- 是否有错误日志可以查看
实际功能测试与效果验证
配置完成后,就进入了最激动人心的测试环节。之前都是在写代码、改配置,现在终于可以看看这个工具在实际使用中的表现了。
测试场景1:查询数据库表列表

我用很自然的语言问 TRAE:"查询我有多少个表"
这个问题看起来很简单,但其实背后涉及几个步骤:
- TRAE 理解我的意图,知道我想查看数据库中的表列表
- 调用
acowbo-mysql/test_connection
工具测试数据库连接 - 连接正常后,调用
acowbo-mysql/list_tables
工具列出所有表
从截图可以看到,TRAE 的回应非常专业:"我将帮您查看数据库中的表信息。首先让我们测试数据库连接是否正常。"然后它就自动调用了相应的 MCP 工具。
返回的结果也很详细,它告诉我:"很好,数据库连接正常。现在让我们查看当前数据库中的所有表。"接着列出了完整的表信息。
最后,TRAE 还很贴心地问我:"您想了解这些表中的具体结构吗?我可以帮您查看任何一个表的详细信息。"这种主动询问下一步操作的方式,让整个对话体验非常流畅。
这个测试验证了几个关键点:
- MCP 工具调用成功:TRAE 能够正确识别并调用我们开发的 MCP 工具
- 数据库连接正常:test_connection 工具工作正常,能够验证数据库连接
- 数据解析正确:list_tables 工具返回的数据结构正确,包含了表名、行数、大小等信息
- 用户体验良好:TRAE 用自然语言描述结果,不是直接扔一堆 JSON 数据
测试场景2:导出数据到 Excel 文件
看到查询表列表成功后,我决定测试一个更复杂的功能------数据导出。这个功能涉及到 SQL 查询、数据关联、Excel 生成等多个环节,是对整个系统能力的综合考验。

我继续用自然语言下达指令:"请帮我把最近10条账单作为Excel输出"
这句话包含了几个关键信息:
- 数据来源:"账单" → 对应 tb_bill 表
- 数量限制:"最近10条" → 需要排序并限制数量
- 输出格式:"Excel" → 调用 export_to_excel 工具
有意思的是,TRAE 没有立即开始导出,而是先做了一些准备工作。从界面上可以看到,它先后调用了:
acowbo-mysql/list_tables
- 确认有哪些表acowbo-mysql/describe_table
(多次) - 查看表结构
这个行为让我很惊喜,因为这说明 TRAE 是真正理解了任务,而不是机械执行命令。它知道要导出账单数据,首先需要了解数据结构,这样才能写出正确的 SQL 语句。
然后调用 acowbo-mysql/export_to_excel
工具执行导出。
导出的 Excel 文件内容分析

打开导出的 Excel 文件后,我发现数据非常完整和规范:
看导出的数据,质量非常高:
- 日期格式正确,按时间倒序排列(最新的在最上面)
- 金额数据精确,没有丢失精度
- 中文显示正常,没有乱码
- 关联查询正确,分类信息都对应上了
一句话就搞定了,这才是 AI + MCP 的真正威力。
关于 TRAE 的使用体验与 AI 协作心得
这次开发过程中,TRAE 的表现确实超出了我的预期。不过更重要的是,通过这次实践,我对 AI 辅助编程有了更深的理解。
TRAE 做得好的地方:
- 需求理解能力强
我只是用很口语化的方式说明需求,TRAE 就能准确理解我想要什么。比如我说"禁止删除表、删库等高风险操作",它就知道要实现 SQL 安全检查。这种理解能力,比我之前用过的其他 AI 工具都要强。
- 主动规划和任务拆解
TRAE 不是接到需求就开始写代码,而是先规划任务,拆分成多个步骤。这种工作方式其实很接近真实的软件开发流程。有了任务列表,整个开发过程就很清晰,不会遗漏重要环节。
- 代码质量和最佳实践
生成的代码不仅能跑,而且质量很高:
- 类型定义完整
- 错误处理规范
- 代码结构清晰
- 注释详细恰当
- 符合 TypeScript 最佳实践
这说明 TRAE 不只是简单地拼接代码,而是真正理解了编程的规范和原则。
- 问题诊断和修复能力
遇到编译错误或者配置问题,TRAE 能够:
- 快速定位问题原因
- 提供系统性的解决方案
- 考虑修改的副作用
- 保持代码风格一致
这种能力在 AI 助手中比较少见,很多工具遇到错误就卡壳了。
总结与展望
回顾整个项目,从一个想法到一个可用的工具,前后花了大概2个小时。这在以前是不可想象的。如果用传统方式开发,光是搭建项目结构、配置环境就要花不少时间,更别说写代码、调试、测试了。
这个项目的价值:
- 实用价值:真正解决了实际问题,提升了工作效率
- 学习价值:深入理解了 MCP 协议和 AI 协作开发
- 探索价值:验证了 AI + MCP 这种新模式的可行性
关于 AI 辅助开发的思考:
AI 辅助开发不是要取代程序员,而是让程序员从重复性的工作中解放出来,专注于更有创造性的工作。就像这次开发:
- AI 负责写基础代码、处理细节
- 我负责把控方向、做关键决策
- 共同完成了一个高质量的项目
这种协作模式,才是未来的方向。
给想尝试的朋友几点建议:
- 从小项目开始:不要一上来就做大而全的系统,从解决一个具体问题开始
- 明确需求:把需求想清楚,用简单明了的语言表达给 AI
- 保持审慎:AI 生成的代码要自己审查,特别是涉及安全的部分
- 迭代优化:先实现核心功能,然后逐步完善
- 记录过程:把开发过程记录下来,积累经验
最后想说的:
技术在快速发展,AI 工具也在不断进化。但不管工具多么先进,核心还是要看你想用它来做什么,怎么用好它。工具只是工具,真正重要的是你的思考和创造。
AI 可以帮你写代码,但它写不出你的想法。保持好奇心,保持学习,保持创造,这才是作为开发者最重要的品质。
如果这篇文章对你有帮助,不妨动手试试,开发一个属于你自己的 MCP 工具。相信我,这个过程会很有趣,也会很有收获。
感谢
感谢你读到这里,说明你已经成功地忍受了我的文字考验!🎉
希望这篇文章没有让你想砸电脑,也没有让你打瞌睡。
如果有一点点收获,那我就心满意足了。
未来的路还长,愿你
遇见难题不慌张,遇见bug不抓狂,遇见好内容常回访。
记得给自己多一点耐心,多一点幽默感,毕竟生活已经够严肃了。
如果你有想法、吐槽或者想一起讨论的,欢迎留言,咱们一起玩转技术,笑对人生!😄
祝你代码无bug,生活多彩,心情常青!🚀