Python 实现 MCP 客户端调用:高德地图天气查询
MCP(Model Context Protocol)是一种开放协议,标准化了应用程序向 LLM 提供上下文的方式。你可以把它理解为 AI 应用的 USB-C 端口——就像 USB-C 让设备能连接各种外设一样,MCP 让 AI 模型能统一接入不同的数据源和工具。
核心架构
- MCP 主机:希望访问数据的程序,如 Claude Desktop、IDE 或 AI 工具。
- MCP 客户端:与服务器保持 1:1 连接的协议客户端。
- MCP 服务器:轻量级程序,通过标准协议公开特定功能。
- 本地/远程数据源:服务器可安全访问的文件、数据库或外部 API。
环境准备
在开始之前,请确保你的开发环境满足以下要求:
- Node.js 版本:建议 >= 18.20.4,旧版本可能无法执行
npx命令。 - API Key:需要申请高德地图的
AMAP_MAPS_API_KEY,文档参考 高德地图 MCP 服务。 - 依赖安装:
- Python SDK:
pip install mcp - Java SDK:需引入 Maven 依赖(见下文代码)
- Python SDK:
官方资源链接:
Python 客户端实现
这里我们使用 Python SDK 来连接高德地图的 MCP 服务器。核心思路是通过 npx 启动本地服务器,然后由 Python 客户端发起通信。
代码示例
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"}
)
async def run():
# 建立stdio连接
async 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())




