MCP(Model Context Protocol,模型上下文协议)有两种主要的通信方式,分别是 stdio 模式和 SSE 模式。以下是具体介绍:
-
stdio(标准输入输出):客户端和服务器通过本地进程的标准输入和标准输出直接通信,就像 “面对面对话”。例如本地开发时,代码脚本通过命令行启动,直接与 MCP 服务器交换数据,无需网络连接。这种方式平台兼容性高,因为 stdio 是操作系统底层的功能,几乎所有操作系统和编程语言都支持,且用于进程间通信,通常是脚本和命令行工具的通信方式,易于实现。
-
SSE(服务器推送事件):客户端通过 HTTP 协议连接到远程服务器,服务器可以主动推送数据,类似 “电话热线”。例如 AI 助手通过网页请求调用远程天气 API,服务器持续推送最新的天气信息。SSE 允许服务器通过 HTTP 连接主动向客户端发送更新消息,适合实时推送的应用场景,并且相比 WebSocket,SSE 更轻量级,适合简单的消息推送场景。不过,SSE 是单向通信,只能服务器向客户端发送消息,客户端如果需要发送消息,必须通过标准的 HTTP 请求回服务器。
我们选择的使用SSE(服务器推送事件)
Spring官网提供了很多依赖
1.第一种是只支持stdio类型的MCP Server

2.第二种是支持MVC的SSE和stdio

3.第三种是支持WebFlux的SSE和stdio

我们选择第二种支持MCV的SSE
1.创建一个空的Spring Boot项目(导入依赖)
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-server-webmvc</artifactId>
<version>1.0.0</version>
</dependency>
2.在主目录下创建一个service包,创建WeatherService类
@Service("weatherService")
public class WeatherService {
@Tool(description = "根据城市的名称获取天气")
public String getWeather(String city) {
return "晴天";
}
}
这就是一个最简单的MCP(通过@Tool注解表示这个MCP是干嘛的),这样就创建了一个根据城市名称获取天气的一个MCP服务
3.在启动类当中把这个Bean进行注册
@SpringBootApplication
public class McpTestApplication {
public static void main(String[] args) {
SpringApplication.run(McpTestApplication.class, args);
}
@Bean
public ToolCallbackProvider toolCallbackProvider(WeatherService weatherService){
return MethodToolCallbackProvider.builder().toolObjects(weatherService).build();
}
}
然后启动项目
4.通过Cherry Studio工具(任何一个支持MCP工具的客户端即可)
进行配置大模型

5.然后进行创建MCP服务器

6.配置MCP服务器

7.是否检测出MCP服务

8.通过大模型配置MCP

9.进行调用PCM服务

408

被折叠的 条评论
为什么被折叠?



