README
🚀 MCP 主机项目
本项目展示了如何在Spring Boot应用程序里集成Spring AI对MCP(模型上下文协议)的支持,涵盖了服务器端和客户端的实现,为AI模型上下文交互管理提供了有效的解决方案。
🚀 快速开始
运行项目
-
启动地理编码服务:
cd geocoder mvn spring-boot:run -
启动时区服务:
cd timezone mvn spring-boot:run -
启动MCP 主机:
cd mcp-host mvn spring-boot:run
使用方法
- 与MCP 主机交互:
- 运行MCP 主机应用程序。
- 在控制台中输入城市名称。
- 系统将提供输入城市的纬度、经度和时区信息。
插入图片

✨ 主要特性
MCP 标准
MCP 是一个标准,旨在简化AI模型上下文交互的管理,使其能够与外部数据源和工具保持一致集成。
Spring AI MCP 扩展了MCP Java SDK,并提供了专门针对Spring Boot的客户端和服务器端启动器。
MCP 客户端与服务器
MCP 客户端负责处理与MCP 服务器之间的通信和连接管理。
在此项目中,我们利用Spring AI构建MCP 服务器,并使其功能可供大型语言模型(LLM)使用。需要注意的是,必须使用支持TOOLS 的模型;我们正在使用通过Ollama提供的Llama3.2。
📦 安装指南
本项目的安装主要通过Maven命令完成,具体启动各服务的命令如下:
地理编码服务
cd geocoder
mvn spring-boot:run
时区服务
cd timezone
mvn spring-boot:run
MCP 主机
cd mcp-host
mvn spring-boot:run
💻 使用示例
基础用法
地理编码服务接口
public interface Geocoder {
GeoCodeResult geocode(String city) throws Exception;
}
public record GeoCodeResult(double latitude, double longitude) {}
时区服务接口
public interface TimeZoneService {
Optional<TimeZone> getTimeZoneFromLocation(double latitude, double longitude) throws Exception;
}
public record TimeZone(
String id,
String name,
int rawOffset,
int dstSavings
) {}
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请输入城市名称(或输入'退出'以退出):");
String city = scanner.nextLine();
if ("退出".equalsIgnoreCase(city)) {
break;
}
String queryTemplate = """
请使用可用工具获取给定城市`{city}`的纬度和经度。获得此信息后,请使用工具提供该位置的时区详细信息,并以相同语言返回。
""";
String systemTemplate = """
您是一个专门提供地理信息的AI助手。您的任务是利用提供的工具收集并传达准确数据。
""";
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);
}
}
};
}
📚 详细文档
模块介绍
此项目由三个主要模块组成:
地理编码服务
- 端口:8081
- 描述:根据城市名称提供纬度和经度。
- 配置
时区服务
- 端口:8082
- 描述:根据纬度和经度提供时区信息。
- 配置
MCP 主机
- 描述:通过MCP 客户端使用地理编码和时区服务,并提供一个控制台界面与LLLM交互。
- 配置
MCP 相关说明
MCP 是一个标准,旨在简化AI模型上下文交互的管理,使其能够与外部数据源和工具保持一致集成。
Spring AI MCP 扩展了MCP Java SDK,并提供了专门针对Spring Boot的客户端和服务器端启动器。
MCP 客户端负责处理与MCP 服务器之间的通信和连接管理。
在此项目中,我们利用Spring AI构建MCP 服务器,并使其功能可供大型语言模型(LLM)使用。需要注意的是,必须使用支持TOOLS 的模型;我们正在使用通过Ollama提供的Llama3.2。
Scan to join WeChat group