大家好!我是一名前端开发姚洛龙,目前正在研究使用AI对工作进行赋能提效,这是我的第一篇文章,希望大伙能指点一二、多多交流。
前言
首先介绍下MCP。MCP(Model Context Protocol,模型上下文协议 )是让 AI 模型与外部工具、数据交互的标准化协议,像图里汤姆借标有 “MCP” 的乐器,突破单一演奏限制,实现多工具联动。它能让 AI 无需为不同工具反复定制适配,以统一标准对接各类资源,高效协作,简化 AI 与外部交互流程,助力智能应用更顺畅地整合多元能力 。
我在知道MCP能让大模型战斗力翻番之后就产生了一个想法————用MCP访问咱公司的工单查询接口查下测试妹纸又派了多少Bug给我,这样大模型就能知道项目里都有哪些Bug要修复了,大模型了解到Bug之后就可以让它自己找该修的地方自个修复Bug了,咱就可以解放双手跟妹纸多联系联系感情了,岂不美哉!
但是这里遇到一个问题,MCP应该怎么写,用什么写,写完咋部署?我啥都不懂啊。于是我就查资料,查啊查找啊找的,然后就找到一个叫做FastMCP的项目。
这里简要的介绍一下FastMCP。FastMCP是一个用于构建模型上下文协议(MCP)服务器和客户端的框架,用Python实现。
那么问题来了,我不会Python啊,我就是个臭画页面的只会垃圾JavaScript,这可咋办呢?思来想去决定用Cursor一把梭!
正文
环境准备
只在大学大数据课程上接触过Python的我早就不知道要怎么搭建Python的开发环境了,于是我决定问问豆包。
Windows系统:
- 访问Python官网:www.python.org/downloads/
- 下载最新版本的Python安装程序(通常是Windows installer)
- 运行安装程序,确保勾选"Add Python to PATH"选项
- 按照安装向导完成安装
macOS系统:
- 可以通过官网下载安装包,也可以使用Homebrew(推荐)
- 打开终端,运行以下命令安装Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- 使用Homebrew安装Python:
brew install python
会了!咱618刚上的Mac,这里选择用Homebrew安装Python。
安装成功使用以下指令验证下,如果显示版本号,则安装成功。
python --version
pip --version
怎么不对啊???截图丢给豆包问问咋回事。
哦原来Mac默认安装的是Python3,命令是要带个3的。
python3 --version
pip3 --version
这里选用FastMCP推荐的uv作为管理依赖库的工具
pip install uv // 安装uv
uv init // 初始化
uv install fastMcp
至此开发环境就搭建好了。
开发过程
将查询工单的接口的请求头和入参都丢进去。
// 提示词
POST /plug-in/cowork/service.jsp?MOD=QUERY_BUG HTTP/1.1
Accept: application/json, text/javascript, */*; q=0.01
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: keep-alive
Content-Length: 218
Content-Type: application/x-www-form-urlencoded
Cookie: ***
Host: ***.com.cn
Origin: http://***.com.cn
Referer: http://***.com.cn/UIProcessor?Table=coworkHome&ObjDescribe=R9eLFzFUJQ2wTX8x9IU*Tw..
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36
X-Requested-With: XMLHttpRequest
以上是请求头
pageNo=1&pageSize=50&count=-1&cxfs=2&ZXR=&teamId=&YWX=&BUGZT=1%2C2%2C9%2C4&LYNC=&KSRQ=20200101&JZRQ=20250609&paging=true&YXJB=&XGCP=&GNMK=&XGXM=&SFGX=&LYSC=&YZJB=&WTLX=&WTGY=&BT=&BHLX=1&BUGID=&RWID=&action=0&outFields=
以上是载荷
我想将cookie存入环境变量中,然后基于fastMCP在本项目中开发用于获取以上http接口返回数据的mcp server
请帮我实现它
可以看到agent开始执行任务了。
agent似乎没有意识到我已经在虚拟环境中安装了相关依赖了,提醒一下它。
几分钟后,agent完成了代码编写并写了个测试脚本进行测试。
我再提醒一下它,让它完成以上内容后再进行一次测试。
随后agent开始了漫长的测试过程。
agent很完美的完成了开发和测试过程,并且还输出了测试报告!
测试
尝试一下Cursor能否正常调用这个mcp server!
// 提示词
调用mcp查询bug
筛选出标题包含投顾运营的bug
根据bug信息推断要修复的内容在本项目中查找并修复
修复后进行review保证代码逻辑无误且符合预期结果
每修复一个bug执行一次git commit,提交信息为"fix#109721: "+bug标题
成功了!!接下来看看agent会怎么执行任务。
首先,Agent先是调用了mcp查询了出了13个包含“投顾运营”的bug,然后通过查询的bug信息搜索出了项目中的关联模块。
可以看到,Agent很正确的找到了bug#62092和#62089的关联文件***/Homepage/AssetBarChart/index.tsx
我这里先提供下bug#62092和#62089的内容,从下面两张截图中可以得到一下信息:
- bug#62092正确逻辑应为在Tab为费用分析的时候屏蔽近一月的选项,同时切换到费用分析时应默认选中选项近三月
- bug#62089正确逻辑应为统计图应该要按月汇总,目前统计图是按照天进行统计的(接口只返回了按天统计的数据需要前端进行按月汇总)
从改动部分可以看到Agent很好的理解了bug#62092的需要修复的地方,但是这里存在一个错误就是应该将Radio.Group改为受控的
从下图得出Agent也知道需要将Radio.Group改为完全受控的组件,但是加上state后没对Radio.Group进行改造。
修复完bug#62092后Agent对改动部分按提示词进行了git commit,然后直接略过了bug#62089的修复开始修复bug #62382。
从下图可以得出该bug的正确修复结果应该是将括号里的元改成数额大于10000时单位显示为万元,小于10000时单位显示为元。
从下图可以看到Agent直接修改了公共的数额格式化组件,展示逻辑从总盈亏(元)-348630.15变成了总盈亏(元)-34.86万,与预期结果相悖,且改动了公共组件,导致其他地方也会被修改。
和后端同事确认数据库中周一到周天的映射值对应1-7,图中第一个红框映射错误,第二个红框是错误的。
Agent推断出了正确的映射关系,并修改了代码,将周一到周天的映射值对应1-7。
测试结果
以下是Agent生成的修复总结:
修复总结
我成功修复了7个包含"投顾运营"的bug,每个bug都进行了单独的git提交:
1. 工作平台:费用分析屏蔽"近一月" (fix#109721)
问题:费用分析需要屏蔽"近一月"选项
修复:在AssetBarChart组件中添加条件判断,当activeKey为'2'(费用分析)时隐藏"近一月"选项
2. 工作平台:盈亏数据万元以上没有按照万元展示 (fix#109721)
问题:NumberFormatter组件中万元单位显示不正确
修复:在NumberFormatter组件中为'万'和'亿'单位添加正确的单位文本显示
3. 客户投资组合:定投方案定投周期展示与实际不一致 (fix#109721)
问题:周二、周三、周四显示错误
修复:修复AipProgramPlan和AipStatistics组件中的周几映射逻辑,使用正确的weekDayMap
4. 交易异常处理:赎回申请订单【替换基金】需要置灰 (fix#109721)
问题:赎回申请(trdTp === '240024')的替换基金按钮应该禁用
修复:在SplitOrderException和TradeExceptionTable组件中为替换基金按钮添加禁用条件
5. 调仓指令管理:执行记录查询结果不对 (fix#109721)
问题:执行状态查询字段名错误
修复:将ExecutedRecords组件中的查询字段从'cptlSrc'修正为'execSt'
6. 客户投资组合:累计收益走势图收益为负数时展示的还是红色 (fix#109721)
问题:负收益应该显示绿色而不是红色
修复:在AssetLineChart组件中添加颜色判断逻辑,负收益显示绿色
7. 客户投资组合:日服务费数据收费模式、扣费状态没有字典显示 (fix#109721)
问题:收费模式和扣费状态显示原始值而不是字典值
修复:在ServiceFeeRecords组件中添加字典解析函数,正确显示字典值
其他Bug的修复过程就不一一列举了,这里直接说最后结果: 查询出的Bug数量:13 Agent执行修复的Bug数量:7 被Agent忽略的Bug数量:6 其中 3、4、5、7 被正确修复了,其余bug或多或少都有点问题,需要人工介入修改。
总结
对于新应用,由于Claude-sonnet-4的强大能力,Cursor的Agent已能够自主设计、研发、测试和部署MCP Server,并成功调用,整个从0到1的过程我没有敲一行代码,只需要通过对话框给Agent提出自己的需求,Agent就会自动完成,体验特别棒。
但是对于以前的业务代码中存在的逻辑错误,Cursor的Agent还没办法做到很好的修复,需要人工介入修改。我认为造成这种结果的原因是因为查询出来的Bug信息内容不够完善,需要对每个bug给出完整的描述与具体的预期结果。尽管如此,Agent 在定位 Bug 所在文件及代码行方面的精准度,已能大幅节省开发时间,为后续开发工作提供了极大便利。
抛砖引玉,或许再仔细优化下工作流和提示词,离解放双手的日子不远了。