汽车模型协议服务器

一个基于Spring AI的MCP服务器,用于管理汽车模型列表并提供工具交互功能。

  • by amarpreetbhatia
  • Java
  • 本地部署
  • 更新于
在 GitHub 查看 amarpreetbhatia/carsmcpserver

使用说明

汽车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<ToolCallback> amarpreetTools(CarService carService) {
    return List.of(ToolCallbacks.from(carService));
}

这将注册所有带注释的方法 @Tool 在 CarService 类as ToolCallback 实例。

汽车服务

这 CarService 类是这个应用程序的核心。它管理一个汽车列表,并提供以下方法:

汽车维修方法

getCars()

  • 工具名称: get_cars
  • 描述:检索Amarpreet愿望清单中的汽车列表。
  • 传回型别: List<Car>

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服务器的版本。