码农之家

专注优质代码开发,为软件行业发展贡献力量

AI是如何确定应使用的MCP Server的?

最近MCP的概念比较火热,但AI作为client是如何在众多的mcp server中选择符合需求的呢?

前言火灾是威胁城市安全和人民生命财产的重大隐患。随着城市化进程加快,建筑密度不断增加,火灾风险也随之上升。传统的火灾报警系统往往局限于单点报警,缺乏全局视角和智能分析能力,同时也给消防救护人员带来繁重的工作。本文将介绍如何利用高德地图开放平台API,构建一个智能化的火灾报警系统,实现民众的智能报警、火灾位置的快速定位、周边资源分析以及最优救援路径规划等功能。背景近年来,城市建筑密度与人口集中度持续攀升,火灾风险隐患增多。据统计,2024年全国消防救援队伍共接报火灾90.8万起。社会对高效、精准的智能消防系统的需求迫在眉睫。在火灾救援中,“黄金十分钟”至关重要,但传统系统存在以下问题:1. 民众报警信息定位不精确,并自己也无法知道偏差,影响救援效率。2. 民众报警相应时间长,比如难以实时计算最优逃生路径,没法高效实时响应。3. 消防队需要人工值守存在交接盲区,夜间响应延迟,非专业人员可能无法解答消防设备操作问题。4. 消防队从接到报警后需要规划路线,没法接到报警自动规划好路线。基于大模型DeepSeek接入高德地图开放平台MCP服务,依赖它提供了丰富的地理信息服务,包括地图展示、地理编码、路径规划、周边搜索等API,为解决上述问题提供了技术基础。系统目标本系统旨在实现以下目标:1. 智能报警助手:替代人工报警接线员,全天候处理报警,即时智能回复。2. 精准定位:通过高德地图API将文字地址转换为精确坐标,并在地图生成报警位置。3. 资源可视化:在地图上标记火灾位置及周边消防资源(消防站、医院等)。4. 智能分析决策:调动最近的消防站出警和医院响应,自动计算最优救援路径,估算到达时间。系统架构设计


技术选型前端:Vue.js + Element UI(Web端)后端:Spring Boot + MyBatis Plus 地图服务:高德地图JavaScript API、Web服务API、MCP服务大模型服务: DeepSeek 数据库:MySQL 8.0核心功能实现报警智能助手端:Spring Ai实现智能体角色设置prompt的设计

this.chatClient = chatClientBuilder.defaultSystem("""
  你是一个集成在高德地图中的智能火灾报警助手,能够帮助用户快速报告火灾、获取逃生路线并提供火灾应急指导。请遵循以下原则:
     1. 紧急响应:当用户报告火灾时,立即询问关键信息(地点),如果知道火灾地址后 将地址的信息以火灾地点位于:广东省广州市天河区员村松岗园0栋201号,其经纬度坐标为:113.366716,23.118363。的形式告知用户告知,当地消防部门已知道火灾信息,他们正在紧急响应中,然后在咨询关键信息(火势、有无被困人员、报警人、联系电话)。
     2. 分级响应:根据火势大小提供不同级别的应急建议
     请用简洁、明确的语言与用户交互,保持冷静专业的语气。
""")
.defaultTools(tools)
.defaultAdvisors(new PromptChatMemoryAdvisor(chatMemory))
.build();

Spring Ai集成高德地图MCP方案,智能助手可以基于高德地图MCP Server现已覆盖12大核心服务接口的工具来思考回复用户问题。高德地图MCP Server:提供全场景覆盖的地图服务,包括地理编码、逆地理编码、IP定位、天气查询、骑行路径规划、步行路径规划、驾车路径规划、公交路径规划、距离测量、关键词搜索、周边搜索、详情搜索等。

{
 
"mcpServers": {
        
"amap-maps": {
            
"command": "npx.cmd",
            
"args": [
                
"-y",
                
"@amap/amap-maps-mcp-server"
            
],
            
"env": {
               
"AMAP_MAPS_API_KEY": "自己高德地图API_KEY"
            
}
}

消防应急智能后端1. 火灾位置精准定位利用高德地图的地理编码API,将用户输入的文本地址转换为精确的地理坐标。2. 周边资源可视化通过周边搜索API,查找火灾点周围的消防站、医院等关键资源。3. 最优路径规划利用路径规划API,计算从消防站到火灾地点的最优路径。

// AmapService.java
@Service
public class AmapService {
@Value("${amap.key}")
    
private String apiKey;
    
// 地理编码
    
public JSONObject geoCode(String address) {
        
String url = "https://restapi.amap.com/v3/geocode/geo?address=" + 
       
URLEncoder.encode(address) + "&key=" + apiKey;
        
return HttpUtil.get(url);
    
}
    
// 周边搜索(消防站)
    
public JSONObject aroundSearch(double longitude, double latitude) {
        
String url = "https://restapi.amap.com/v3/place/around?key=" + apiKey +
"&location=" + longitude + "," + latitude +
                    
"&keywords=消防站&radius=5000";
        
return HttpUtil.get(url);
    
}
    
// 路径规划
    
public JSONObject pathPlanning(double originLng, double originLat, 
    
double destLng, double destLat) {
        
String url = "https://restapi.amap.com/v3/direction/driving?key=" + apiKey +
"&origin=" + originLng + "," + originLat +
"&destination=" + destLng + "," + destLat +
"&strategy=2"; // 2表示最短距离
        
return HttpUtil.get(url);
    
}
}

系统功能展示
用户火灾报警界面

1. 火警报警:在确认报警成功后,会提示报警位置已报火警,让用户确认报警信息定位精确。

2. 信息咨询:逃生路线、附近的消防站、医院等信息、其他的信息逃生信息。

消防站应急系统页面1. 报警地点精准定位:通过用户报警的地址定位出具体的经纬度;2. 出警的消防站:离火灾地点最近的消防站跟进;3. 救治的医院:离火灾地点最近的就医位置;4. 救援路径规划:从消防站到火灾地点的最优路径规划,从火灾地点到医院的最优路径规划;

高德地图API参考
本文涉及的高德地图开放平台API包括:

1. Web端JavaScript API

2. 地理编码/逆地理编码API

3. 周边搜索API

4. 路径规划API

5. MCP服务

系统演示
https://fanjh.mynatapp.cc/index.html

AI探究员小豆

0 评论数