高德地图 MCP,可用 Java SolonMCP 接入(支持 java8, java11, java17, java21)

1、MCP技术概述

1.1 什么是 MCP

MCP (Model Control Protocol) 是一种允许大模型与外部工具交互的协议,高德地图基于此协议提供了地图服务能力,使 AI 大模型能够直接调用高德的 LBS。

1.2 两种接入架构对比

高德地图 MCP 提供了两种不同的接入方式:sse 和 stdio。这两种方式在架构、性能和适用场景上存在明显差异。

2、用 Java SolonMCP 接入试试

2.1 添加依赖

xml 复制代码
<dependency>
    <groupId>org.noear</groupId>
    <artifactId>solon-ai-mcp</artifactId>
</dependency>

支持与 jFinal, Vert.X, SpirngBoot2, SpringBoot3, Solon 等框架结合使用。

2.2 先构建个客户端

一个项目中可能会有多个 mcp;所以取个 bean 名字为好

java 复制代码
@Configuration
public 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 试试:获取周边电影院

java 复制代码
@Component
public 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 试试:获取地区的天气

java 复制代码
@Component
public 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 作为工具提供者绑定:

java 复制代码
@Configuration
public 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 查个天气:

java 复制代码
@Component
public class DemoCom {
    @Inject
    ChatModel chatModel;

    public void test() throws Exception {
        ChatResponse resp = chatModel.prompt("杭州今天的天气怎么样?")
                .call();

        System.out.println(resp.getMessage());
    }
}
相关推荐
九皇叔叔30 分钟前
Java循环结构全解析:从基础用法到性能优化
java·开发语言·性能优化
流星52112238 分钟前
GC 如何判断对象该回收?从可达性分析到回收时机的关键逻辑
java·jvm·笔记·学习·算法
csdn_aspnet38 分钟前
Java 圆台体积和表面积计算程序(Program for Volume and Surface area of Frustum of Cone)
java
杯莫停丶44 分钟前
设计模式之:外观模式
java·设计模式·外观模式
乐之者v1 小时前
Mac常用软件
java·1024程序员节
TDengine (老段)1 小时前
TDengine 数据函数 ROUND 用户手册
java·大数据·数据库·物联网·时序数据库·tdengine·1024程序员节
TDengine (老段)1 小时前
TDengine 数学函数 RAND 用户手册
java·大数据·数据库·物联网·时序数据库·tdengine·涛思数据
從南走到北1 小时前
JAVA无人自助共享系统台球室源码自助开台约球交友系统源码小程序
java·微信·微信小程序·小程序·1024程序员节
野犬寒鸦1 小时前
从零起步学习MySQL || 第十章:深入了解B+树及B+树的性能优势(结合底层数据结构与数据库设计深度解析)
java·数据库·后端·mysql·1024程序员节
没有bug.的程序员2 小时前
Spring 常见问题与调试技巧
java·后端·spring·动态代理·1024程序员节