项目简介 Azure Maps MCP 服务是一个基于Model Context Protocol (MCP)构建的后端服务,旨在将Azure地图服务的丰富功能(如地点搜索、路线规划、地图渲染、IP地理定位、时区查询和天气预报)以标准化的工具形式,提供给大型语言模型(LLM)客户端。它利用Azure Functions(隔离模式)和Azure Maps .NET SDK及REST API实现,方便LLM应用获取和处理地理空间信息。
主要功能点
- 位置与国家信息: 支持地址/地点正向地理编码、坐标反向地理编码获取地址及行政边界,以及按ISO代码查询/搜索国家信息。
- 路线与导航: 提供路线计算(包括行车方向、距离/时间矩阵、可达范围等)、交通模式选择和高级路线分析(如国际旅行分析)。
- 地点(POI)搜索: 支持按坐标查找附近兴趣点(POI)或按关键词进行模糊搜索,并可查询POI类别树。
- 地图渲染: 能够生成静态地图图片(PNG格式),并支持添加自定义标记和路径覆盖。
- 地理定位(IP): 提供将公共IPv4/IPv6地址解析为国家代码和名称的功能,并支持批量处理和IP地址格式验证。
- 时区查询: 根据地理坐标获取详细的时区信息,包括标准/夏令时偏移、名称、日出日落时间等。
- 天气信息: 提供指定坐标的当前天气状况、按小时/按天的天气预报,以及严重的恶劣天气警报。
- 道路点位吸附: 将GPS点位吸附到道路网络上,并可选地进行插值和包含限速信息。
安装步骤
- 安装必要软件:
- 获取Azure Maps订阅密钥:
- 在Azure门户中,创建或找到一个Azure Maps资源。
- 导航到该资源的“身份验证”部分,获取你的订阅密钥。
- 配置本地设置:
- 在项目 'source/' 目录下创建一个 'local.settings.json' 文件(如果不存在)。
- 将你的Azure Maps订阅密钥配置到该文件中:
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "None", "AzureWebJobsSecretStorageType": "Files", "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated", "AZURE_MAPS_SUBSCRIPTION_KEY": "<你的Azure Maps订阅密钥>" } } - 重要提示: 请勿将真实的密钥提交到版本控制系统。在生产环境中,应使用环境变量或Azure Key Vault进行密钥管理。
- 构建并运行:
- 在项目根目录('azure-maps-mcp/')下打开终端。
- 进入 'source' 目录:'cd source'
- 构建项目:'dotnet build'
- 进入构建输出目录:'cd bin/Debug/net9.0'
- 启动本地Functions宿主:'func host start'
- 服务器将在 'http://localhost:7071' 端口默认监听。
服务器配置(供MCP客户端使用) MCP客户端与此MCP服务器通信时,需要以下JSON格式的配置信息来建立连接:
{ "server_name": "Azure Maps Tool", "command": "func", "args": [ "host", "start", "--port", "7071", "--workingDir", "bin/Debug/net9.0" ], "description": "一个提供Azure地图服务的MCP服务器,支持地理编码、路线规划、天气预报等功能。", "environment": { "AZURE_MAPS_SUBSCRIPTION_KEY": "<你的Azure Maps订阅密钥>" } }
- 'server_name': MCP服务器的显示名称。
- 'command': 启动MCP服务器的可执行命令。
- 'args': 启动命令的参数列表。'--port' 指定服务器监听端口,'--workingDir' 指定启动命令的工作目录。
- 'description': MCP服务器的简要说明。
- 'environment': MCP服务器运行所需的环境变量。其中'AZURE_MAPS_SUBSCRIPTION_KEY'是连接Azure Maps服务的必需密钥,请替换为你的实际密钥。
基本使用方法 MCP服务器启动后,LLM客户端可以通过JSON-RPC协议调用其暴露的工具。以下是一个调用'location_find'工具的示例(LLM客户端发送的请求):
{ "method": "tools/call", "params": { "name": "location_find", "arguments": { "query": "Eiffel Tower Paris", "maxResults": 5, "includeBoundaries": "true" } }, "jsonrpc": "2.0", "id": "1" }
服务器将返回一个包含地点信息的JSON响应,例如:
{ "jsonrpc": "2.0", "result": { "success": true, "meta": { "requestId": "...", "timestamp": "..." }, "data": { "query": "Eiffel Tower Paris", "results": [ { "location": { "address": "Champ de Mars, 5 Av. Anatole France, 75007 Paris, France", "coordinates": { "latitude": 48.8584, "longitude": 2.2945 }, "components": { ... }, "confidence": "High" }, "boundary": { ... } } ], "count": 1, "includedBoundaries": true } }, "id": "1" }
LLM客户端可以根据MCP服务器声明的工具列表和参数定义,灵活调用不同的地理空间功能。
信息
分类
AI与计算