mcpField
M
MCP Host Project

MCP Host Project

本地服务
github.com/oalles开发工具284 周前更新

关于 MCP Host Project

MCP Host Project 展示如何在 Spring Boot 应用中使用 Spring AI 构建 MCP 服务端和客户端。它组合地理编码与时区服务,并通过控制台让 LLM 根据城市查询坐标和时区。

主要功能

  1. 01展示 MCP 服务端与客户端实现
  2. 02地理编码服务提供坐标
  3. 03时区服务按坐标查询时区
  4. 04控制台与 LLM 交互

适用场景

  1. 01输入城市查询经纬度
  2. 02根据地点坐标获取时区信息

MCP 相关

项目使用 Spring AI 构建 MCP 服务端,并通过 MCP 客户端连接地理编码和时区服务。MCP Host 将这些能力提供给 LLM。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MCP Host 项目

描述

本项目展示了如何在 Spring Boot 应用中集成 Spring AI 对 MCP(Model Context Protocol)的支持,涵盖服务端和客户端实现。

MCP

MCP 是一项标准,可简化 AI 模型中上下文交互的管理,从而实现与外部数据源和工具的一致集成。

Spring AI MCP 扩展了 MCP Java SDK,并为客户端和服务端提供专用的 Spring Boot starter。

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

在本项目中,我们使用 Spring AI 构建 MCP 服务,让大模型能够使用其功能。请注意,必须使用支持 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 Host
  • 描述:通过 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\nEnter city (or type 'exit' to quit): ");
            String city = scanner.nextLine();
            if ("exit".equalsIgnoreCase(city)) {
               break;
            }

            String queryTemplate = """
                    Please use the available tools to find the latitude and longitude for the city `{city}`. Once you have this information, 
                    use the tools to determine and provide all the timezone details for that location in the same language.
                    """;

            String systemTemplate = """
                    You are an AI assistant specialized in providing geographical information. Your task is to use the provided tools to gather and deliver accurate data.
                    """;

            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 Host:

    cd mcp-host
    mvn spring-boot:run
    

用法

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

插入图片

图片

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。