在本文中,我们将实现一个Java版的MCP项目,通过这个项目来理解MCP协议。用到的代码会在下文中提供代码仓库地址,大家可以直接下载进行学习。
前言
目前大模型能做的就是你在框框里问他问题,他给你答案。但是现在我们希望在框框里提一些需求,大模型去帮你执行一些操作,比如去查天气预报,去打开你电脑上的浏览器等等这种涉及操作交互的行为。MCP的出现就是为了实现这种操作交互行为。
这就需要用到一个协议:MCP!通过MCP这个接头,我们可以实现让大模型进入软件,操作软件帮助我们干活!
MCP运行原理
在我看来,当前MCP分为三个部分:
- client-客户端:MCP hosts里内置的MCP Client会去和MCP server建立连接。server-服务端-其他厂商提供的服务,比如百度地图的。你也可以自己写一个服务,让大模型调用实现浏览本地文件的serverhost-带客户端的主机(IDE、工具):你和大模型交互的一个界面
MCP的实战案例
这个案例将采用SpringBoot作为技术栈开发两个应用,一个应用负责去三方获取天气预报;一个应用负责将获取的天气预报数据写入到本地桌面txt文档,并打开这个文档。
准备工作
需要用到的一些工具需要提前说一下
VScode
Cline插件
Idea
需要用到的技术栈:
- SpringBoot
上面提到的这个Cline其实是一个和大模型交互的插件界面,可以通过这个插件选择我们喜欢的大模型厂商:
我在Cline选择的大模型厂商是硅基流动的api-key。
MCP-server服务的配置
我们在准备工作中已经做好了clinet的配置,现在需要配置mcp-server。
我们用到的mcp-server有两个,这两个是我们自己写的:
这两个mcp-server都是SpringBoot写的!我们将其导入到idea里,打好jar包,保存好这个打包好的地址,回到我们的cline配置界面进行一个简单配置:
上图左边部分表示我们配置的两个mcp-server已经被cline识别到了,右边表示我们配置的两个应用的本地路径极其命令参数。
MCP实战效果展示
我们在大模型端交互一下:
得到的本地文件:
我们在大模型端输入:
我要将今日上海与北京天气写入到d:/temp/目录下,文件名格式为[日期].txt,最后用系统自带的记事本打开该文件
实际上大模型会很智能的去调用我们本地的两个mcp-server应用。这就是MCP的核心的一个点。这意味着我们可以用java、python、go去写各种不同的mcp-server,再通过大模型来调用!