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

Python 使用 MCP 协议调用高德地图天气服务示例

基于 Model Context Protocol (MCP) 协议,本示例演示如何使用 Python 连接高德地图服务器并查询天气。通过配置环境变量获取 API Key,利用 mcp-python-sdk 初始化客户端会话,调用 maps_weather 工具接口。同时提供 Java 端实现参考,涵盖依赖引入及同步客户端调用流程,帮助开发者快速集成外部数据源至 AI 应用。

不羁发布于 2026/2/23更新于 2026/10/2081 浏览
Python 使用 MCP 协议调用高德地图天气服务示例

简介

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

在架构上,MCP 包含主机(如 IDE、AI 工具)、客户端(与服务器保持 1:1 连接)、服务器(轻量级程序,通过协议公开功能)以及本地或远程的数据源。通过这种模式,我们可以轻松地将高德地图等外部服务集成到 AI 工作流中。

环境准备

运行示例前,请确保满足以下基础条件:

  • Node.js 版本:建议 >= 18.20.4,旧版本可能无法执行 npx 命令。
  • API Key:需申请高德地图的 AMAP_MAPS_API_KEY,获取地址参考 高德地图 MCP 服务文档。

Python SDK 实现

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

pip install mcp

核心逻辑在于初始化 StdioServerParameters 并启动会话。这里的关键是配置环境变量传递 API Key,并通过 npx 调用高德提供的 MCP Server。

import asyncio
from mcp import ClientSession, StdioServerParameters
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"}  # 替换为实际 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())

注意代码中的 env 字典,这是传递敏感信息给子进程的标准方式。实际运行时,如果 API Key 无效,call_tool 会返回错误信息,调试时请留意控制台输出。

Java SDK 实现

如果你更习惯 Java 开发,MCP 也提供了对应的 SDK。目前推荐使用 0.8.x 版本,迁移指南可参考 官方文档。

依赖引入

<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.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 官网
  • Python SDK GitHub
  • Java SDK GitHub

目录

  1. 简介
  2. 环境准备
  3. Python SDK 实现
  4. 配置服务器参数
  5. Java SDK 实现
  6. 依赖引入
  7. 代码示例
  8. 参考资料

更多推荐文章

查看全部
  • 自然语言生成 SQL 查询的技术实践
  • JNI 开发:C++ Debug 正常 Release 返回 NaN 的根因分析
  • Testsigma 开源自动化测试平台实战部署指南
  • 银河麒麟 V10 服务器版 Docker 部署 .NET 8 WebAPI 教程
  • Beyond Compare 安装与试用期重置指南
  • 企业 AI Agent 落地难点与 OpenClaw 实践路径分析
  • 基于 Django 构建 RESTful WebAPI 项目实战
  • LLM 大模型基础篇(一):大模型核心概念与原理介绍
  • LangChain 基础架构与核心功能详解
  • OpenClaw 部署及飞书机器人对接指南
  • CppCon 2024 学习:C++ 异常在小型固件中的应用
  • 大模型量化技术原理:FP8
  • llama.cpp 项目 Vulkan 后端编译难题解决:从环境配置到实战修复
  • Java 接入 AI 大模型个人实践:多轮对话与流式输出实现
  • Whisper v0.2 本地语音转文字工具安装与使用指南
  • Meta 新一代开源大语言模型 Llama 3 详解
  • 7 系列 FPGA 数据手册概述
  • Stable Diffusion 3.5 FP8 模型架构解析与优化技巧
  • Midjourney 官网地址及中文支持情况说明
  • C++ 核心基础概念详解

相关免费在线工具

  • 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