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

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

综述由AI生成MCP 协议标准化了 AI 应用与外部工具的交互方式。以高德地图天气查询为例,展示了如何使用 Python 和 Java SDK 构建 MCP 客户端。内容涵盖环境配置、依赖安装及核心代码实现,重点解析了如何通过 npx 启动本地服务器并与 MCP 主机进行通信,帮助开发者快速集成第三方工具能力。

leon发布于 2026/3/15更新于 2026/4/263 浏览
Python 实现 MCP 客户端调用高德地图天气查询示例

MCP 简介

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

核心架构

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

环境准备

运行高德 MCP 服务器需要 Node.js 环境。请确保版本在 18.20.4 以上,否则 npx 命令可能无法正常工作。

下载地址:https://nodejs.org/zh-cn/download

Python SDK 实现

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

pip install mcp

接下来编写客户端代码。这里我们演示如何初始化会话并调用天气查询工具。注意环境变量中需要填入你的高德地图 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": "your_api_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 =  session.call_tool(
                , 
                arguments={: }
            )
            (, result)

 __name__ == :
    asyncio.run(run())
await
"maps_weather"
"city"
"福州"
print
"调用结果:"
if
"__main__"

这段代码的核心在于 StdioServerParameters,它告诉客户端如何通过子进程启动 MCP 服务器。实际运行时,你会看到工具列表输出,随后是具体的天气数据。

Java SDK 实现

如果你更习惯使用 Java,也可以参考以下配置。MCP Java SDK 从 0.7 到 0.8 有迁移指南,建议查阅官方文档。

Maven 依赖

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

代码示例

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;

public class JunitTest {
    public void test() {
        ServerParameters params = ServerParameters.builder("npx")
            .args("-y", "@amap/amap-maps-mcp-server")
            .addEnvVar("AMAP_MAPS_API_KEY", "your_api_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 官方文档:https://modelcontextprotocol.io/introduction
  • GitHub 仓库:https://github.com/modelcontextprotocol/servers
  • 高德地图 MCP 文档:https://lbs.amap.com/api/mcp-server/summary
  • Python SDK:https://github.com/modelcontextprotocol/python-sdk
  • Java SDK:https://github.com/modelcontextprotocol/java-sdk

目录

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

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

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

更多推荐文章

查看全部
  • openKylin 通过 SSH+cpolar 实现远程内网穿透
  • Gomoon:一款支持多模型与大模型本地调用的桌面工具
  • 汽车雷达多径环境下的幽灵目标检测技术
  • VSCode AI Copilot 智能补全失效修复指南
  • 基于 Leaflet Trackplayer 实现 WebGIS 高速轨迹可视化
  • Flutter 基于 shelf_web_socket 构建 OpenHarmony WebSocket 服务端实现实时通信
  • VS Code Python 代码格式化插件:Black、autopep8 与 yapf 对比
  • MCP Server 实现 Excel 表格一键生成可视化图表 HTML 报告
  • 面试技巧助力大厂求职
  • 零成本实现 Web 实时推送:轻量级 SSE 方案解析
  • 苍穹外卖前端开发:员工与套餐管理功能实现
  • Python 开发 MongoDB 数据库 MCP Server 实战指南
  • OpenClaw Secure DM Pairing: 为 AI 机器人构建安全私信访问机制
  • CarelessWhisper:将非因果 Whisper 改造为低延迟流式模型
  • Docker 部署 Coze 应用服务指南
  • Telegram 群组管理机器人搭建指南
  • C++17 PMR 内存管理详解:memory_resource 与 polymorphic_allocator
  • 法奥机器人操作与 Lua 脚本基础
  • C++ STL set 系列:底层原理、核心接口与实战场景
  • Qwen3-VL 实战:手绘草图一键生成 HTML 代码

相关免费在线工具

  • 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