Python 实现 MCP 客户端调用高德地图天气查询示例
MCP(Model Context Protocol)是一种开放协议,旨在标准化应用程序向大语言模型提供上下文的方式。你可以把它理解为 AI 应用领域的 USB-C 接口——就像 USB-C 统一了设备连接标准一样,MCP 让 AI 模型能够以统一的方式接入各种数据源和工具。
核心架构
在理解具体代码之前,先简单梳理一下 MCP 的组件关系:
- MCP 主机:希望访问数据的程序,比如 Claude Desktop、IDE 或各类 AI 工具。
- MCP 客户端:与服务器保持 1:1 连接的协议客户端。
- MCP 服务器:轻量级程序,通过标准化协议公开特定功能。
- 数据源:包括本地文件、数据库以及远程服务(如 API)。
环境准备
要运行高德地图的 MCP 服务,首先需要确保 Node.js 环境可用。建议使用版本 >= 18.20.4,因为旧版本可能无法稳定执行 npx 命令。
安装依赖后,我们需要获取高德地图的 API Key(申请地址:高德地图 MCP 服务文档)。
可用工具列表
高德 MCP 服务提供了多个工具,例如根据城市名称查询天气 (maps_weather)、查询 POI 详情等。工具定义通常包含输入 Schema 和描述信息。
Python SDK 客户端实现
如果你使用 Python,可以通过 mcp 库快速搭建客户端。以下是完整的异步调用示例:
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": "你的 API_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 = session.list_tools()
(, tools)
result = session.call_tool(
,
arguments={: }
)
(, result)
__name__ == :
asyncio.run(run())


