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

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

基于 Model Context Protocol (MCP) 协议,本示例演示了如何通过 Python 和 Java 客户端调用高德地图服务查询天气。内容涵盖 MCP 架构中的客户端与服务端交互流程,包括初始化连接、列出可用工具及调用具体接口的完整代码。重点展示了依赖安装、环境变量配置及异步调用逻辑,帮助开发者快速将 LLM 能力扩展至外部数据源。

steve发布于 2026/3/15更新于 2026/10/2482 浏览
Python 调用高德地图 MCP 服务查询天气实战

MCP 简介

MCP(Model Context Protocol)是一种开放协议,它标准化了应用程序向 LLM 提供上下文的方式。可以将 MCP 视为 AI 应用程序的 USB-C 端口:正如 USB-C 提供了连接外围设备的标准方式一样,MCP 让 AI 模型能够以统一接口连接不同的数据源和工具。

核心架构

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

环境准备

在开始之前,请确保已安装 Node.js 且版本不低于 18.20.4,否则 npx 命令可能无法正常工作。同时需要申请高德地图的 AMAP_MAPS_API_KEY,获取地址如下:

高德地图 MCP 服务文档

高德地图 MCP 服务提供的工具列表包含天气查询等功能,例如 maps_weather 支持根据城市名称或 adcode 查询指定城市的天气。

Python SDK 接入

首先安装必要的依赖包:

pip install mcp

接下来编写客户端代码。这里需要注意环境变量中填入你的高德 Key,实际运行时请替换为有效值。代码逻辑分为初始化连接、列出可用工具以及调用具体工具三个步骤。

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": "your_key_here"}
)

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 = await session.call_tool("maps_weather", arguments={"city": "福州"})
            print("调用结果:", result)

if __name__ == "__main__":
    asyncio.run(run())

运行后你会看到服务端暴露的工具列表,随后即可通过 call_tool 方法传入参数获取天气数据。这种异步模式非常适合集成到现有的 AI Agent 流程中。

Java SDK 接入

如果你更习惯使用 Java,也可以参考官方迁移指南进行开发。当前推荐使用 0.8.1 及以上版本。

Maven 依赖

<!-- https://mvnrepository.com/artifact/io.modelcontextprotocol.sdk/mcp -->
<dependency>
    <groupId>io.modelcontextprotocol.sdk</groupId>
    <artifactId>mcp</artifactId>
    <version>0.8.1</version>
</dependency>

代码示例

Java 端同样采用同步客户端构建方式,配置与服务端通信参数后即可调用。

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", "your_key_here")
                .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 SDK GitHub
  • Java SDK GitHub

目录

  1. MCP 简介
  2. 核心架构
  3. 环境准备
  4. Python SDK 接入
  5. Java SDK 接入
  6. Maven 依赖
  7. 代码示例
  8. 参考资料

更多推荐文章

查看全部
  • 基于 Qwen1.5-1.8B-GPTQ-Int4 与 Chainlit 的思维导图自动生成
  • Redis IO 多路复用模型详解
  • ToDesk、顺网云与海马云运行 DeepSeek 大模型性能对比
  • 一周烧光 14 亿 Token!OpenClaw 架构设计的 10 条血泪教训
  • 使用 Higress 将 REST API 转换为 MCP Server
  • 图论基础与遍历算法:BFS 与 DFS
  • MCP 工具速成:npx 与 uvx 全流程安装指南
  • VSCode Copilot 登录失败的常见原因与排查方案
  • VSCode 集成 OpenAI 兼容模型配置指南
  • VSCode Copilot 插件卡顿问题解决方案
  • OpenSpec 助力 AI 编程:基于需求驱动的规范化工作流
  • Oh My Open Code 如何用多模型协作重塑 AI 编程范式
  • 基于管道通信的 Linux 进程池实现详解
  • 动态规划:打家劫舍类问题
  • WebLogic 简介与登录方法指南
  • 动态规划在斐波那契数列中的应用与优化
  • AI 在医疗领域的十大应用场景解析
  • FPGA 读写 DDR4 (一) MIG IP 核控制信号
  • Python 实现十大经典排序算法详解:原理、代码与复杂度分析
  • WebAssembly 逆向分析:反编译 Wasm 二进制并修改游戏数据

相关免费在线工具

  • 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