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

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

MCP 协议标准化了 AI 应用与外部工具的交互方式。以高德地图天气查询为例,演示了如何使用 Python 和 Java SDK 搭建 MCP 客户端。内容包括环境配置、SDK 安装、代码实现及关键注意事项,帮助开发者快速集成第三方服务至 AI 工作流。

星云发布于 2026/3/16更新于 2026/8/2034 浏览
Python 实现 MCP 客户端调用高德地图天气查询

MCP 简介

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

核心架构

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

环境准备

在开始之前,请确保你的开发环境满足以下要求:

  • Node.js 版本需 >= 18.20.4,否则 npx 命令可能无法正常运行。
  • 获取高德地图 API Key(申请地址:高德地图 MCP 服务文档)。

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

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

运行后你会看到类似下图的输出结果,包含了可用的工具列表及具体的天气数据。 运行结果截图

Java 客户端实现

如果你更习惯 Java 开发,也可以参考官方提供的 SDK。

Maven 依赖如下:

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

核心代码逻辑与 Python 类似,主要区别在于同步调用的方式。下面是一个基于 JUnit 的测试示例:

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_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 官方文档
  • Python SDK
  • Java SDK
  • 官方服务示例

目录

  1. MCP 简介
  2. 核心架构
  3. 环境准备
  4. Python 客户端实现
  5. Java 客户端实现
  6. 参考资料
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • GitHub Copilot 辅助 Java 代码重构:上下文感知实操指南
  • Ubuntu 下 llama.cpp 编译与性能调优实战
  • 建筑设计 AI 绘画提示词:从入门到精通的实战指南
  • Coze 平台全解析:100 个落地场景与发布指南
  • Stable Diffusion v1.5 模型介绍及 Python 代码实现
  • Kubernetes与AI推理服务最佳实践
  • OpenClaw 接入飞书配置教程
  • 基于腾讯云 CVM 部署 Clawdbot 并对接 Telegram 机器人
  • Python OCC 三维建模实战:从环境搭建到工业数据交换
  • Rust vs C++:系统编程安全与性能深度对比
  • 卷积神经网络 CNN 深度解析:原理、数学表达、变体架构与工程实践
  • C++ 函数指针与回调函数深度解析
  • 本地部署 AI 增强型 SearXNG 搜索引擎技术文档
  • 使用 Python 爬虫下载网络小说去除广告干扰
  • 字符串算法实战:公共前缀、回文子串与运算
  • Python 环境搭建与 Hello World 入门实战
  • OpenClaw 个人 AI 助手安装部署指南
  • Kubernetes Helm 构建无端口类型 Chart 实践
  • Django REST Framework 企业级 API 架构设计与实战
  • 《Agent Runtime 工程化》第二章 TypeScript / Node Runtime 基础:2.2 async iterator 与流式输出

相关免费在线工具

  • 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