本项目是一个基于Spring AI构建的MCP(模型上下文协议)服务器。它展示了如何利用Spring AI的ToolCallback API公开工具,从而处理Amarpreet心愿单中的车辆列表,为车辆数据的管理和交互提供了便捷的解决方案。
mvn clean install
java -jar target/carsmcpserver-0.0.1-SNAPSHOT.jar
ToolCallback API将业务逻辑暴露给AI进行交互。该项目可通过Maven进行构建,具体命令如下:
mvn clean install
在CarsmcpserverApplication.java中使用ToolCallback API注册工具:
@Bean
public List amarpreetTools(CarService carService) {
return List.of(ToolCallbacks.from(carService));
}
此代码会注册CarService类中标记为@Tool的所有方法,作为ToolCallback实例。
在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)
));
}
此代码在应用程序启动时初始化车辆列表。
项目组织如下:
src/main/java/com/amarpreet/carsmcpserver/
CarsmcpserverApplication.java:应用程序的主要入口点,初始化应用程序并使用CarService类注册ToolCallback bean。Car.java:表示汽车的简单record类,具有modelName和buildYear两个字段。CarService.java:提供与车辆列表交互的方法的服务类,这些方法通过ToolCallback API公开为工具。src/main/resources/application.properties:包含Spring Boot应用程序的配置属性。src/test/java/com/amarpreet/carsmcpserver/
CarsmcpserverApplicationTests.java:包含一个基本测试,确保应用上下文正确加载。ToolCallback API用于将CarService类中的方法公开为工具,这些工具可以程序化调用或通过AI驱动的接口访问。
CarService类是项目的核心,管理车辆列表并提供以下方法:
getCars()get_carsListgetCar(String name)get_car_by_namename:要搜索的型号名称。Car(未找到时为null)getCarByYear(Integer year)get_car_by_yearsyear:要搜索的年份。Car(未找到时为null)该项目可通过位于src/main/resources中的application.properties文件进行配置,关键属性包括:
| 属性 | 详情 |
|---|---|
spring.application.name |
应用程序的名称 |
spring.main.web-application-type |
设置为none以创建非Web应用程序 |
spring.ai.mcp.server |
MCP服务器的名称 |
spring.ai.mcp.version |
MCP服务器的版本 |