想象一下这样的场景:用户无需钻研复杂的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服务改造
这里为了演示,先准备好一个图书管理服务,图书实体字段如下:
import jakarta.persistence.*;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.PastOrPresent;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDate;
@Entity
@Table(name = "books")
@Data
@AllArgsConstructor
@NoArgsConstructor
publicclassBook{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotBlank(message = "书名不能为空")
@Column(nullable = false)
private String title;
@NotBlank(message = "分类不能为空")
@Column(nullable = false)
private String category;
@NotBlank(message = "作者不能为空")
@Column(nullable = false)
private String author;
@NotNull(message = "出版日期不能为空")
@PastOrPresent(message = "出版日期不能是未来日期")
@Column(nullable = false)
private LocalDate publicationDate;
@NotBlank(message = "ISBN编码不能为空")
@Column(nullable = false, unique = true)
private String isbn;
}
为这个服务编写了2个测试方法:
import com.example.entity.Book;
import java.util.List;
publicinterfaceBookService{
// 根据作者查询
List<Book> findBooksByAuthor(String author);
// 根据分类查询
List<Book> findBooksByCategory(String category);
}
现在我们要将这个SpringBoot服务改造成MCP服务,需要以下步骤:
1.导入依赖
在pom.xml中引入相关依赖,这里提示一下anthropic的访问需要代理,否则会提示403。
<!-- Spring AI 核心依赖 -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-core</artifactId>
</dependency>
<!-- Anthropic 模型支持 -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-anthropic-spring-boot-starter</artifactId>
</dependency>
<!-- MCP 服务器支持 - WebMVC版本 -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-mcp-server-webmvc-spring-boot-starter</artifactId>
</dependency>
由于目前这些依赖还是预览版本,所以在Maven中央仓库中是找不到的,需要我们额外引入仓库地址。
推荐程序员摸鱼地址:
https://www.yoodb.com/slack-off/home.html
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
&n