1、MCP技术概述
1.1 什么是 MCP
MCP (Model Control Protocol) 是一种允许大模型与外部工具交互的协议,高德地图基于此协议提供了地图服务能力,使 AI 大模型能够直接调用高德的 LBS。
1.2 两种接入架构对比
高德地图 MCP 提供了两种不同的接入方式:sse 和 stdio。这两种方式在架构、性能和适用场景上存在明显差异。
2、用 Java SolonMCP 接入试试
2.1 添加依赖
<dependency> <groupId>org.noear</groupId> <artifactId>solon-ai-mcp</artifactId></dependency>
支持与 jFinal, Vert.X, SpirngBoot2, SpringBoot3, Solon 等框架结合使用。
2.2 先构建个客户端
一个项目中可能会有多个 mcp;所以取个 bean 名字为好
@Configurationpublic class AmapMcpConfig { @Bean("amap-mcp") public McpClientProvider mcpClientProvider() { return McpClientProvider.builder() .apiUrl("https://mcp.amap.com/sse?key=YOUR_AMAP_MCP_KEY") //只需要一个 url .build(); }}
2.3 试试:获取周边电影院
@Componentpublic class DemoCom { @Inject("amap-mcp") McpClientProvider clientProvider; public String around_search() { Map<String, Object> args = new HashMap<>(); args.put("keywords","电影院"); args.put("location","116.466485,39.995197"); args.put("radius","2000"); return clientProvider.callToolAsText("maps_around_search", args).getContent(); }}
2.4 试试:获取地区的天气
@Componentpublic class DemoCom { @Inject("amap-mcp") McpClientProvider clientProvider; public String weather(){ Map<String, Object> args = new HashMap<>(); args.put("city","北京"); return clientProvider.callToolAsText("maps_weather", args).getContent(); }}
3、把它绑给 ChatModel(LLM) 使用,比如 DeepSeek-V3
构建 ChatModel,并将 amap-mcp 作为工具提供者绑定:
@Configurationpublic class DeepSeekConfig { @Bean public ChatModel chatModel(@Inject("amap-mcp") McpClientProvider clientProvider) { return ChatModel.of("https://api.deepseek.com/chat/completions") .apiKey("SD_API_KEY") .model("deepseek-chat") .defaultToolsAdd(clientProvider) .build(); }}
基于 DeepSeek 和 Amap MCP 查个天气:
@Componentpublic class DemoCom { @Inject ChatModel chatModel; public void test() throws Exception { ChatResponse resp = chatModel.prompt("杭州今天的天气怎么样?") .call(); System.out.println(resp.getMessage()); }}