Python 实现 MCP 客户端调用高德地图天气查询
MCP(Model Context Protocol)是一种开放协议,旨在标准化应用程序向大语言模型提供上下文的方式。你可以把它理解为 AI 应用的 USB-C 端口:就像 USB-C 统一了设备连接一样,MCP 让 AI 模型能更便捷地接入各种数据源和工具。
核心架构
在深入代码之前,简单梳理一下涉及的组件:
- MCP 主机:发起请求的程序,比如 IDE、Claude Desktop 或自定义脚本。
- MCP 客户端:负责与服务器建立 1:1 连接的协议端。
- MCP 服务器:轻量级程序,通过标准协议暴露特定功能(如本例中的高德地图服务)。
- 本地/远程数据源:服务器实际调用的文件或 API。
环境准备
运行示例前,请确保满足以下条件:
- Node.js 版本:建议 >= 18.20.4。旧版本可能无法正确执行
npx命令。 - API Key:需要申请高德地图的
AMAP_MAPS_API_KEY。
Python SDK 实战
这是最直接的调用方式。我们使用 mcp 包来构建客户端会话。
安装依赖
pip install mcp
代码实现
下面这段代码展示了如何初始化会话并调用天气查询工具。注意环境变量中填入你的真实 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():
# 建立stdio通信通道
async with stdio_client(server_params) (read, write):
ClientSession(read, write) session:
session.initialize()
tools = session.list_tools()
(, tools)
result = session.call_tool(
,
arguments={: }
)
(, result)
__name__ == :
asyncio.run(run())


