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

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

综述由AI生成MCP 协议标准化了应用向大模型提供上下文的方式。通过高德地图 MCP 服务演示如何构建客户端,分别使用 Python 和 Java SDK 调用天气查询工具。核心步骤包括安装依赖、配置环境变量中的 API Key,并通过 stdio 传输层与服务端建立连接。代码示例展示了初始化会话、列出可用工具及调用具体接口的完整流程,适合希望集成外部数据源到 AI 应用的开发者参考。

墨染流年发布于 2026/3/16更新于 2026/6/729 浏览
Python 实现 MCP 客户端调用高德地图天气查询示例

MCP 协议简介与架构

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

核心架构

理解架构有助于我们更好地编写客户端代码:

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

环境准备

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

  1. Node.js 版本:建议 >= 18.20.4。版本过低可能导致 npx 命令执行异常。
  2. 高德地图 API Key:你需要申请 AMAP_MAPS_API_KEY。具体文档可参考 高德地图 MCP 服务文档。

Python 客户端实战

使用 Python SDK 是最直接的集成方式。首先安装依赖:

pip install mcp

下面是一个完整的异步调用示例。这段代码展示了如何启动 npx 进程作为服务端,并通过 stdio 传输层建立会话。

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"}  # 替换为你的实际 Key
)

async def run():
    # 建立 stdio 连接
    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())

关键点说明:

  • 这里使用了 StdioServerParameters 来指定 npx 命令,这是 MCP 官方推荐的运行方式之一。
  • env 字典用于传递敏感信息(如 API Key),避免硬编码在代码中。
  • 整个流程是异步的,利用 asyncio 处理 IO 操作,避免阻塞主线程。

Java 客户端参考

如果你更习惯 Java 生态,也可以参考官方提供的 SDK。以下是基于 Maven 的依赖引入及测试用例示例:

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.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());
    }
}

Java 版本提供了同步客户端 McpSyncClient,对于不需要复杂异步处理的场景更为友好。注意查看官方迁移指南以适配不同版本的 API 变化。

官方资源

  • MCP 官网
  • Python SDK GitHub
  • Java SDK GitHub

目录

  1. MCP 协议简介与架构
  2. 核心架构
  3. 环境准备
  4. Python 客户端实战
  5. 配置服务端参数
  6. Java 客户端参考
  7. 官方资源
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • Bilibili 充电视频下载工具实现(Python 版)
  • Python 与 PyCharm 环境搭建完整指南
  • MySQL 和 Navicat Windows 安装与连接教程
  • Windows 系统安装与配置 Neo4j 图数据库指南
  • GitHub 教育认证通过后如何领取 Copilot Pro
  • LeetCode 四数之和:Python 排序 + 双指针解法
  • video-analyzer:基于 AI 的视频内容分析与摘要工具
  • 2024 年大模型技术演进与行业应用深度解析
  • AI 大模型全解析:定义、架构与发展应用
  • 知网 AIGC 检测原理及降低 AI 疑似度方法
  • 推进AI大模型在金融行业应用的五项建议
  • Windows 本地运行 DeepSeek 模型的三步指南
  • AWVS 漏洞扫描器部署与配置指南
  • 大模型算法工程师核心面试题及参考答案
  • Llama-3.2-3B 本地部署搭建 AI 写作助手
  • 使用AI工具开发OpenBB后端用户认证机制:Trae vs. Qoder vs. Copilot 实战对决
  • Python UV 搭配 Miniconda:下一代包管理体验
  • Docker 容器内 Java 与 Python 代码运行示例
  • 企业大模型集成私有数据构建知识库实战指南
  • 基于 Java 的百度地图路线规划服务开发

相关免费在线工具

  • 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