汽车MCP服务器
这是一个MCP(模型上下文协议)服务器,使用 春季AI该项目展示了Spring AI的使用 ToolCallback API公开用于与汽车列表交互的工具,该列表表示Amarpreet的愿望列表。
演示
项目结构
该项目组织如下:
src/main/java/com/amarpreet/carsmcpserver/
- CarsmcpserverApplication.java:Spring Boot应用程序的主要入口点。它初始化应用程序并注册 ToolCallback 豆子使用 CarService 类。 - Car.java:一个简单的 record 类表示一辆有两个字段的汽车: modelName 和 buildYear. - CarService.java:一个服务类,提供与汽车列表交互的方法。这些方法作为工具使用 ToolCallback API
src/main/resources/application.properties:包含Spring Boot应用程序的配置属性。
src/test/java/com/amarpreet/carsmcpserver/
- CarsmcpserverApplicationTests.java:包含一个基本测试,以确保应用程序上下文正确加载。
工具回调API
这 ToolCallback API用于公开 CarService 类作为工具。这些工具可以通过编程或AI驱动的界面调用。这 CarsmcpserverApplication 类使用 ToolCallbacks.from() 方法。
工具注册
在……里面 CarsmcpserverApplication.java:
@Bean
public List amarpreetTools(CarService carService) {
return List.of(ToolCallbacks.from(carService));
}这将注册所有带注释的方法 @Tool 在 CarService 类as ToolCallback 实例。
汽车服务
这 CarService 类是这个应用程序的核心。它管理一个汽车列表,并提供以下方法:
汽车维修方法
getCars()
- 工具名称:
get_cars - 描述:检索Amarpreet愿望清单中的汽车列表。
- 传回型别:
List
getCar(String name)
- 工具名称:
get_car_by_name - 描述:按车型名称查找汽车。
- 参数:
- name -要搜索的型号名称。
- 传回型别:
Car(或null如果未找到)
getCarByYear(Integer year)
- 工具名称:
get_car_by_years - 描述:按制造年份查找汽车。
- 参数:
- year -要搜索的构建年份。
- 传回型别:
Car(或null如果未找到)
初始化
这 CarService 类在应用程序启动期间使用 @PostConstruct 注释:
public void init() {
log.info("Initializing cars MCP server...");
cars.addAll(List.of(
new Car("BMW Neue Klasse", 2025),
new Car("Ferrari EV", 2025),
new Car("Mercedes AMG 4dr EV", 2025),
new Car("Porsche 718 Boxster", 2025)
));
}如何跑步
使用Maven构建项目:
mvn clean install运行应用程序:
java -jar target/carsmcpserver-0.0.1-SNAPSHOT.jar配置
可以使用配置应用程序 application.properties 文件位于 src/main/resources。关键属性包括:
spring.application.name:应用程序的名称。spring.main.web-application-type:设置为none对于非web应用程序。spring.ai.mcp.server:MCP服务器的名称。spring.ai.mcp.version:MCP服务器的版本。

