跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonNode.jsAIjava

Python 调用高德地图 MCP 服务查询天气实战

基于 Model Context Protocol 协议,演示了如何通过 Python 和 Java SDK 对接高德地图 MCP 服务。内容涵盖环境搭建、API Key 配置及工具调用核心逻辑,帮助开发者快速实现本地模型与外部地理信息服务的标准化集成,解决上下文数据接入难题。

花里胡哨发布于 2026/3/16更新于 2026/10/17111 浏览
Python 调用高德地图 MCP 服务查询天气实战

Python 实现 MCP 客户端调用:高德地图天气查询示例

简介

MCP(Model Context Protocol)是一种开放协议,旨在标准化应用程序向大语言模型提供上下文的方式。你可以把它理解为 AI 应用的 USB-C 端口——就像 USB-C 统一了设备连接一样,MCP 让 AI 模型能更规范地接入数据源和工具。

在架构上,主要包括以下几个角色:

  • MCP 主机:希望访问数据的程序,如 Claude Desktop、IDE 或 AI 工具。
  • MCP 客户端:与服务器保持 1:1 连接的协议客户端。
  • MCP 服务器:轻量级程序,通过标准化协议公开特定功能。
  • 数据源:包括本地文件、数据库以及远程 API 服务。

环境准备

要运行高德地图的 MCP 服务,首先需要确保 Node.js 环境满足要求。建议版本不低于 18.20.4,否则可能无法执行 npx 命令。

此外,你需要申请高德地图的 AMAP_MAPS_API_KEY。获取地址参考高德官方文档,具体步骤略过,直接关注代码中的环境变量配置即可。

Python SDK 客户端实现

这是最直接的调用方式。首先安装基础依赖:

pip install mcp

接下来是核心代码。这里我们使用 StdioServerParameters 来启动 npx 进程,并注入 API Key。注意观察 env 参数,这是传递敏感信息的关键位置。

import asyncio
from mcp import ClientSession, StdioServerParameters, types
from mcp.client.stdio import stdio_client

server_params = StdioServerParameters(
    command="npx",
    args=["-y", "@amap/amap-maps-mcp-server"],
    env={"AMAP_MAPS_API_KEY": "你的 API_KEY_在这里"}
)

async def run():
    async with stdio_client(server_params) as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()
            tools = await session.list_tools()
            print("工具列表:", tools)
            
            
            result =  session.call_tool(
                , 
                arguments={: }
            )
            (, result)

 __name__ == :
    asyncio.run(run())
# 调用天气查询工具
await
"maps_weather"
"city"
"福州"
print
"调用结果:"
if
"__main__"

实际运行时,如果网络不通或 Key 无效,会抛出异常。调试时建议先打印 tools 列表确认服务已就绪。

Java SDK 客户端实现

如果你习惯使用 Java,也可以利用官方提供的 SDK。目前推荐迁移至 0.8 版本,兼容性更好。

Maven 依赖

在 pom.xml 中添加以下依赖:

<dependency>
    <groupId>io.modelcontextprotocol.sdk</groupId>
    <artifactId>mcp</artifactId>
    <version>0.8.1</version>
</dependency>

代码示例

Java 端同样需要构建 ServerParameters 并初始化同步客户端。逻辑与 Python 类似,只是语法差异较大。

import io.modelcontextprotocol.client.McpClient;
import io.modelcontextprotocol.client.McpSyncClient;
import io.modelcontextprotocol.client.transport.ServerParameters;
import io.modelcontextprotocol.client.transport.StdioClientTransport;
import io.modelcontextprotocol.spec.McpSchema;
import org.junit.jupiter.api.Test;
import java.util.Map;

public class JunitTest {
    @Test
    public void test() {
        ServerParameters params = ServerParameters.builder("npx")
            .args("-y", "@amap/amap-maps-mcp-server")
            .addEnvVar("AMAP_MAPS_API_KEY", "你的 API_KEY_在这里")
            .build();
            
        StdioClientTransport transport = new StdioClientTransport(params);
        McpSyncClient client = McpClient.sync(transport).build();
        
        client.initialize();
        McpSchema.ListToolsResult toolsList = client.listTools();
        System.out.println("工具列表:" + toolsList);
        
        McpSchema.CallToolResult mapsWeather = client.callTool(
            new McpSchema.CallToolRequest("maps_weather", Map.of("city", "福州"))
        );
        System.out.println("调用结果:" + mapsWeather.content());
    }
}

总结

通过上述示例,我们可以快速搭建起本地应用与高德地图服务的 MCP 连接。无论是 Python 还是 Java,核心流程都是:初始化传输层 -> 建立会话 -> 列出工具 -> 调用工具。这种方式极大地降低了集成外部 API 的复杂度,让 AI 应用能更灵活地获取实时数据。

目录

  1. Python 实现 MCP 客户端调用:高德地图天气查询示例
  2. 简介
  3. 环境准备
  4. Python SDK 客户端实现
  5. Java SDK 客户端实现
  6. Maven 依赖
  7. 代码示例
  8. 总结

更多推荐文章

查看全部
  • WhisperLiveKit 实时语音识别:安装、配置与生产部署
  • GitHub 爆火的“蒸馏 Skill”:用聊天记录复刻数字分身,是赛博永生还是隐私风险?
  • B-树原理及 Java 模拟实现详解
  • Flutter 三方库 anthropic_sdk_dart 鸿蒙适配与 Claude 集成指南
  • 基于Flink CDC的Neo4j实时图数据库同步实战
  • ABB 机器人虚拟示教器基础操作与编程指南
  • Faster-Whisper 本地实时语音识别部署实战
  • 机器学习:聚类分析算法详解
  • Java 项目 CI/CD 实战:Jenkins 与 GitLab CI 选型与优化
  • LLaMA2 模型架构深度解析
  • Flutter for OpenHarmony 项目 Lint 静态检查配置实战
  • Next AI Draw.io 开源项目部署与使用指南:一句话生成流程图
  • IoT 无人机安全测试实战:信息收集与服务探测
  • 机器人工具坐标系精准标定:资深工程师的高效实战流程
  • MES 系统功能架构与常用功能设计
  • Flume 架构深度解析:构建高可用大数据采集系统
  • Flume架构深度解析:构建高可用大数据采集系统
  • Midjourney AI 图像生成器使用教程详解
  • 机器学习:特征缩放与标准化
  • Open Duck Mini v2 开源机器人构建与配置指南

相关免费在线工具

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online