10-SpringBoot+MCP整合AI与服务的桥梁
引言
随着人工智能的飞速发展,大语言模型(LLM)正在革命性地重塑用户与软件的交互范式。
想象一下这样的场景:用户无需钻研复杂的API文档或者在繁琐的表单间来回切换,只需通过自然语言直接与系统对话——“帮我查找所有2023年出版的图书
”、“创建一个新用户叫张三,邮箱是zhangsan@example.com
”。
这种直观、流畅的交互方式不仅能显著降低新用户的学习曲线,更能大幅削减B端系统的培训成本和实施周期,让企业应用变得更为简单和高效。
这正是Model Context Protocol (MCP)
协议在应用层面所带来的价值体现。
认识MCP
我这里不粘贴官方的定义,用大白话给大家解释下:MCP就像是AI世界的"万能适配器"
。想象你有很多不同类型的服务和数据库,每个都有自己独特的”说话方式”。AI需要和这些服务交流时就很麻烦,因为要学习每个服务的”语言”。
MCP解决了这个问题 - 它就像一个统一的翻译官,让AI只需学一种”语言”就能和所有服务交流。这样开发者不用为每个服务单独开发连接方式,AI也能更容易获取它需要的信息。
如果你是一个后端同学,那么应该接触或听说过gRPC。gRPC通过标准化的通信方式可以实现不同语言开发的服务之间进行通信,那么MCP专门为AI模型设计的”翻译官和接口管理器”,让AI能以统一方式与各种应用或数据源交互。
假设开发了一个天气服务,用户想要查询深圳的天气,这里分别以传统API方式和MCP方式进行对比:
对现有SpringBoot服务改造
这里为了演示,先准备好一个图书管理服务,图书实体字段如下:
1 |
|
为这个服务编写了2个测试方法:
1 |
|
现在要将这个SpringBoot服务改造成MCP服务,需要以下步骤:
1.导入依赖
在pom.xml中引入相关依赖,这里提示一下anthropic的访问需要代理,否则会提示403。
1 |
|
由于目前这些依赖还是预览版本,所以在Maven中央仓库中是找不到的,需要额外引入仓库地址。
1 |
|
关于项目中代理的配置可以参考我这段配置:
1 |
|
2.引入配置
的目的是将一个Spring服务改造成MCP服务,所以这里不需要进行客户端的配置,同理,在引入依赖的时候也不用引入客户端的依赖。
1 |
|
3.改造原服务方法
服务的改造有两种思路-分别是工具配置方式和函数Bean方式,这里对两种方式都做下简略说明:
工具配置方式在需要改造的实现类对需要改造的方法加上@Tool
和@ToolParam
注解分别标记方法和参数。
1 |
|
接着将这个实现类注册到MCP服务器配置上即可。
1 |
|
此时在聊天客户端配置引入注册工具即可。
1 |
|
除了上述的方式,还可以单独声明一个类将查询方法作为函数Bean导出。
1 |
|
采用这种方式在定义AI聊天客户端的时候需要显式地声明。
1 |
|
4.接口测试
完成了服务开发后,就可以声明一个控制器对外暴露进行调用。
1 |
|
为了方便测试,开发一个数据初始化器,通过实现CommandLineRunner
接口,它会在的应用程序启动时自动向数据库中加载这些测试数据。
1 |
|
接下来通过请求接口进行如下测试:
可以看到此时返回结果是数据库中的测试数据内容。这里是根据用户输入的问题,大模型会判断开放的工具方法中是否有匹配的,如果有则进行调用并返回。
小结
通过Spring Boot与MCP的整合,轻松实现了传统CRUD系统到智能AI助手的转变。MCP作为AI与服务之间的桥梁,极大简化了集成工作。未来随着MCP生态发展,”对话即服务”将可能成为应用的开发范式,让复杂系统变得更加易用。
代码示例:
