跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
搜索
|注册
博客列表
PythonNode.jsAIjava

Python 调用高德地图 MCP 服务查询天气示例

综述由AI生成MCP 协议为 AI 应用提供了标准化的上下文连接方式。演示了如何使用 Python SDK 对接高德地图 MCP 服务器,通过 Stdio 模式初始化客户端并调用 maps_weather 工具获取指定城市的天气数据。内容涵盖环境准备、依赖安装及核心代码解析,同时附带 Java 客户端实现参考,帮助开发者快速集成外部 API 到 LLM 工作流中。

FlinkHero发布于 2026/3/15更新于 2026/4/304 浏览
Python 调用高德地图 MCP 服务查询天气示例

Python 调用高德地图 MCP 服务查询天气示例

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

MCP 架构简析

在接入高德地图服务之前,先简单过一下核心组件:

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

环境准备

要运行高德地图的 MCP 服务器,我们需要 Node.js 环境。请确保版本不低于 18.20.4,否则 npx 命令可能无法正常工作。

获取高德地图 API Key 是必要步骤,文档地址如下: 高德地图 MCP 服务文档

准备好后,我们可以查看一下高德 MCP 服务提供的工具列表。以天气查询为例,其输入 schema 包含城市名称或 adcode:

{
  "tools": [
    {
      "name": "maps_weather",
      "description": "根据城市名称或者标准 adcode 查询指定城市的天气",
      "inputSchema": {
        "properties": {
          "city": {"type": "string", "description": "城市名称或者 adcode"}
        },
        "required": ["city"],
        "type": "object"
      }
    }
  ]
}

Python 客户端实现

我们使用官方 Python SDK 来构建客户端。首先安装依赖:

pip install mcp

接下来是核心代码。这里采用 StdioServerParameters 启动本地进程作为服务器,并通过 ClientSession 进行交互。注意环境变量中需要填入你的 AMAP_MAPS_API_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": "xxxxx"}  # 替换为你的实际 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 = await session.call_tool(
                "maps_weather", 
                arguments={"city": "福州"}
            )
            print("调用结果:", result)

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

运行这段脚本,你会看到初始化成功后的工具列表,以及针对'福州'返回的天气数据。这种异步结构非常适合集成到现有的 AI Agent 工作流中。

Java 客户端参考

如果你更习惯 Java 生态,官方也提供了对应的 SDK。目前推荐使用 0.8.1 版本。

Maven 依赖

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

Gradle 依赖

implementation("io.modelcontextprotocol.sdk:mcp:0.8.1")

代码示例

Java 端主要使用 McpSyncClient 进行同步调用,逻辑与 Python 类似:

import io.modelcontextprotocol.client.McpClient;
import io.modelcontextprotocol.client.transport.ServerParameters;
import io.modelcontextprotocol.client.transport.StdioClientTransport;
import io.modelcontextprotocol.spec.McpSchema;

public class JunitTest {
    public void test() {
        ServerParameters params = ServerParameters.builder("npx")
            .args("-y", "@amap/amap-maps-mcp-server")
            .addEnvVar("AMAP_MAPS_API_KEY", "xxxxx")
            .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());
    }
}

参考资料

  • Model Context Protocol 官网
  • Python SDK GitHub
  • Java SDK GitHub

目录

  1. Python 调用高德地图 MCP 服务查询天气示例
  2. MCP 架构简析
  3. 环境准备
  4. Python 客户端实现
  5. Java 客户端参考
  6. Maven 依赖
  7. Gradle 依赖
  8. 代码示例
  9. 参考资料
  • 💰 8折买阿里云服务器限时8折了解详情
  • 💰 8折买阿里云服务器限时8折购买
  • 🦞 5分钟部署阿里云小龙虾了解详情
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Midjourney 进阶:色相详解
  • C++ string 类原理与实战
  • GPT-4 & ChatGPT 应用开发实战指南:大模型入门与核心技能解析
  • 大模型微调核心技术:LoRA 原理、实践与常见问题解析
  • 2019 年阿尔茨海默症预测比赛总结与经验复盘
  • 彻底告别 Python 版本混乱:uv 工具让环境管理变得轻松优雅
  • Flutter 三方库 eth_sig_util 的鸿蒙化适配指南
  • ComfyUI-Workflows-ZHO 工作流使用指南
  • 构建基于 Rust 与 GLM-5 的高性能 AI 翻译 CLI 工具
  • AI 绘画模型格式转换实战:CKPT 与 Safetensors 互转指南
  • SQL Server 2019 及 SSMS 安装教程
  • GPT-5-Codex 发布:AI 程序员进入独立工作时代
  • 3DMAX VR 渲染器局部渲染设置
  • 2026 年 3 月全球 AI 前沿动态
  • 基于视觉的增强现实特效技术解析
  • 深入解析 Transformer 内部运作原理:基于 Sakana AI 最新研究
  • AI入门系列:人工智能ABC:AI核心概念速通教程
  • LeetCode 最接近的三数之和
  • AI 大模型开发必备书籍推荐:从入门到实战
  • Redis Hash 类型详解:命令、编码与应用场景

相关免费在线工具

  • 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