返回市场
弹簧人工智能MCP测试服务器

弹簧人工智能MCP测试服务器

作者:oalles2 星标更新:2025-03-18

项目介绍

MCP 主机项目

描述

该项目展示了如何在 Spring Boot 应用程序中集成 Spring AI 对 MCP(模型上下文协议)的支持,涵盖服务器端和客户端实现。

MCP

MCP 是一个标准,简化了 AI 模型中上下文交互的管理,使与外部数据源和工具的一致集成成为可能。

Spring AI MCP 扩展了 MCP Java SDK,并提供了专门针对客户端和服务器的 Spring Boot 启动器。

MCP 客户端负责与 MCP 服务器的通信和连接管理。

在此项目中,我们利用 Spring AI 构建 MCP 服务器,使其功能可供大语言模型(LLMs)使用。请注意,需要使用支持 TOOLS 的模型;我们通过 Ollama 使用 Llama3.2

模块

该项目由三个主要模块组成:

地理编码服务

  • 端口:8081
  • 描述:提供给定城市的经纬度。
  • 配置
public interface Geocoder {
    GeoCodeResult geocode(String city) throws Exception;
}

public record GeoCodeResult(double latitude, double longitude) {}

时区服务

  • 端口:8082
  • 描述:提供给定经纬度的时区信息。
  • 配置
public interface TimeZoneService {
    Optional<TimeZone> getTimeZoneFromLocation(double latitude, double longitude) throws Exception;
}
public record TimeZone(
        String id,
        String name,
        int rawOffset,
        int dstSavings
) {}

MCP 主机

  • 描述:通过 MCP 客户端使用地理编码和时区服务,并提供控制台界面以与大语言模型进行交互。
  • 配置
@Bean
CommandLineRunner runner(final ChatClient.Builder chatClientBuilder, List<ToolCallback> toolCallbacks) {

   final ChatClient agent = chatClientBuilder.build();

   return args -> {
      try (Scanner scanner = new Scanner(System.in)) {
         while (true) {
            System.out.print("\n\n请输入城市(或输入 'exit' 退出): ");
            String city = scanner.nextLine();
            if ("exit".equalsIgnoreCase(city)) {
               break;
            }

            String queryTemplate = """
                    请使用可用工具查找城市 `{city}` 的经纬度。一旦获得这些信息,请使用工具确定并提供该位置的所有时区详情,且使用相同的语言。
                    """;

            String systemTemplate = """
                    你是一个专长于提供地理信息的人工智能助手。你的任务是使用提供的工具收集并传递准确的数据。
                    """;

            String llmResponse = agent
                    .prompt()
                    .advisors(new SimpleLoggerAdvisor())
                    .system(systemSpec -> systemSpec.text(systemTemplate))
                    .user(userSpec -> userSpec.text(queryTemplate).param("city", city))
                    .tools(toolCallbacks)
                    .call()
                    .content();

            log.info("\n\n{}", llmResponse);
         }
      }
   };
}

运行项目

  1. 启动地理编码服务

    cd geocoder
    mvn spring-boot:run
    
  2. 启动时区服务

    cd timezone
    mvn spring-boot:run
    
  3. 启动 MCP 主机

    cd mcp-host
    mvn spring-boot:run
    

使用方法

  1. 与 MCP 主机交互
    • 运行 MCP 主机应用程序。
    • 在控制台中输入城市名称。
    • 系统将提供输入城市的经纬度和时区信息。

插入图片

image