Python 实现 MCP 客户端调用高德地图天气查询
MCP(Model Context Protocol)是一种开放协议,旨在标准化应用程序向大语言模型提供上下文的方式。你可以把它理解为 AI 应用的 USB-C 端口——就像 USB-C 统一了设备连接一样,MCP 让 AI 模型能更便捷地接入各种数据源和工具。
核心架构
在动手之前,先理清几个关键角色:
- MCP 主机:希望访问数据的程序,比如 Claude Desktop、IDE 或 AI 工具。
- MCP 客户端:与服务器保持 1:1 连接的协议客户端。
- MCP 服务器:轻量级程序,通过标准化协议公开特定功能。
- 数据源:包括本地文件、数据库以及通过互联网连接的外部系统。
环境准备
本次示例以高德地图 MCP 服务为例,主要涉及 Node.js 环境和 Python SDK。
前置要求
- Node.js 版本:建议 >= 18.20.4,旧版本可能无法执行
npx命令。 - API Key:需申请
AMAP_MAPS_API_KEY,获取地址参考 高德地图 MCP 文档。
可用工具列表
服务端启动后,会暴露一系列工具,例如查询天气的 maps_weather 接口。
Python 客户端实现
使用官方 Python SDK 是最直接的方式。首先安装依赖:
pip install mcp
接下来编写脚本。这里的关键是配置 StdioServerParameters,指定启动命令和环境变量。注意 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": "xxxxx"} # 替换为你的真实 Key
)
async def run():
async with stdio_client(server_params) as (read, write):
async ClientSession(read, write) session:
session.initialize()
tools = session.list_tools()
(, tools)
result = session.call_tool(
,
arguments={: }
)
(, result)
__name__ == :
asyncio.run(run())




