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

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

文章目录

MCP 官网

MCP 官方文档中文版

官方 MCP 服务示例

Github

MCP 市场

在这里插入图片描述

https://mcpmarket.cn/

在这里插入图片描述

https://mcp.so/zh

在这里插入图片描述

简介

MCP 是一种开放协议,它标准化了应用程序向 LLM 提供上下文的方式。可以将 MCP 视为 AI 应用程序的 USB-C 端口。正如 USB-C 提供了一种将设备连接到各种外围设备和配件的标准化方式一样,MCP 提供了一种将 AI 模型连接到不同数据源和工具的标准化方式。

架构

  • MCP 主机:希望通过 MCP 访问数据的程序,例如 Claude Desktop、IDE 或 AI 工具
  • MCP 客户端:与服务器保持 1:1 连接的协议客户端
  • MCP 服务器:轻量级程序,每个程序都通过标准化模型上下文协议公开特定功能
  • 本地数据源:MCP 服务器可以安全访问的您的计算机文件、数据库和服务
  • 远程服务:MCP 服务器可通过互联网(例如通过 API)连接到的外部系统

高德地图 MCP 客户端示例

注:Node版本 >= 18.20.4 ,版本太低无法执行 npx 命令。
  • 高德 MCP 服务 tools 列表

高德地图文档(申请 AMAP_MAPS_API_KEY):https://lbs.amap.com/api/mcp-server/summary

在这里插入图片描述
{"tools":[{"description":"根据城市名称或者标准adcode查询指定城市的天气","inputSchema":{"properties":{"city":{"type":"string","description":"城市名称或者adcode"}},"required":["city"],"type":"object"},"name":"maps_weather"},{"description":"查询关键词搜或者周边搜获取到的POI ID的详细信息","inputSchema":{"properties":{"id":{"type":"string","description":"关键词搜或者周边搜获取到的POI ID"}},"required":["id"],"type":"object"},"name":"maps_search_detail"},...]}

python-sdk 客户端

pip install 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":"xxxxx"})asyncdefrun():asyncwith stdio_client(server_params)as(read, write):asyncwith 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())
在这里插入图片描述

java-sdk 客户端

<!-- https://mvnrepository.com/artifact/io.modelcontextprotocol.sdk/mcp --><dependency><groupId>io.modelcontextprotocol.sdk</groupId><artifactId>mcp</artifactId><version>0.8.1</version></dependency>
// https://mvnrepository.com/artifact/io.modelcontextprotocol.sdk/mcp implementation("io.modelcontextprotocol.sdk:mcp:0.8.1") 
importio.modelcontextprotocol.client.McpClient;importio.modelcontextprotocol.client.McpSyncClient;importio.modelcontextprotocol.client.transport.ServerParameters;importio.modelcontextprotocol.client.transport.StdioClientTransport;importio.modelcontextprotocol.spec.McpSchema;importorg.junit.jupiter.api.Test;importjava.util.Map;publicclassJunitTest{@Testpublicvoidtest(){ServerParameters params =ServerParameters.builder("npx").args("-y","@amap/amap-maps-mcp-server").addEnvVar("AMAP_MAPS_API_KEY","xxxxx").build();StdioClientTransport transport =newStdioClientTransport(params);McpSyncClient client =McpClient.sync(transport).build(); client.initialize();McpSchema.ListToolsResult toolsList = client.listTools();System.out.println("工具列表:"+ toolsList);McpSchema.CallToolResult mapsWeather = client.callTool(newMcpSchema.CallToolRequest("maps_weather",Map.of("city","福州")));System.out.println("调用结果:"+ mapsWeather.content());}}
在这里插入图片描述

Read more

Lumerical Python API实战:从数据自动化到光子逆向设计的5个高效技巧

Lumerical Python API实战:从数据自动化到光子逆向设计的5个高效技巧 作为一名长期与电磁场和光波打交道的工程师,我深知仿真工作的痛点:一遍遍重复的手动设置、海量数据的整理、以及为了一个最优结构而进行的无数次参数扫描。直到我开始系统地将Lumerical的Python API融入日常工作流,整个局面才豁然开朗。这篇文章不是API手册的复述,而是我结合多个实际项目,从数据自动化处理到复杂光子器件逆向设计,提炼出的五个核心实战技巧。无论你是希望将繁琐的仿真任务脚本化的光学工程师,还是想将专业仿真工具无缝集成到自动化流程中的Python开发者,这些基于真实“踩坑”经验总结的方法,都能让你事半功倍。 1. 环境搭建与高效会话管理:超越“Hello World” 很多教程会告诉你如何启动一个Lumerical会话,然后运行一个简单的addfdtd命令。但在实际项目中,高效、稳定地管理多个仿真会话,处理可能出现的异常,才是保证自动化流程可靠运行的第一步。 1.1 构建健壮的会话连接与错误处理机制 直接使用lumapi启动会话很简单,但在无人值守的批量计算或服务器任务中,

By Ne0inhk

Qwen3-Embedding-0.6B实战教程:Python调用全流程步骤详解

Qwen3-Embedding-0.6B实战教程:Python调用全流程步骤详解 1. Qwen3-Embedding-0.6B 是什么?为什么值得你关注 如果你正在寻找一个高效、轻量又强大的文本嵌入模型来支持搜索、分类或聚类任务,那么 Qwen3-Embedding-0.6B 值得重点关注。它是通义千问(Qwen)家族最新推出的专用嵌入模型之一,专为生成高质量的文本向量表示而设计。 这个 0.6B 参数版本在性能和效率之间取得了良好平衡,特别适合资源有限但又需要稳定嵌入能力的开发场景。无论是做语义搜索、文档去重、推荐系统还是多语言内容理解,它都能提供可靠的支持。 更重要的是,Qwen3-Embedding 系列继承了 Qwen3 基础模型的强大能力,具备出色的长文本处理、跨语言理解和逻辑推理表现。这意味着即使输入是一段复杂的中英文混合句子,或者是一段技术性较强的代码注释,它也能准确捕捉语义并生成有意义的向量。 2. Qwen3-Embedding 模型系列核心优势 2.1 卓越的多功能性 Qwen3-Embedding 系列在多个权威评测中表现出色。以 MTEB(M

By Ne0inhk

Python 字典为什么查询高效

Python 字典(dict)之所以查询效率非常高(平均时间复杂度为 O(1)),主要归功于其底层实现——哈希表(Hash Table)。 1. 核心:哈希表(Hash Table) 字典本质上是一个哈希表。哈希表是一种通过键(key) 直接映射到值(value) 存储位置的数据结构。 工作流程: * 哈希函数(Hash Function): * 当你向字典中插入一个键值对(如 d['name'] = 'Alice')时,Python 会先对键 'name' 调用其 __hash__() 方法,得到一个整数,称为哈希值(hash value) * 这个哈希值是确定性的:同一个键,

By Ne0inhk

Python 爬虫项目:爬取天气网站,获取全国城市七日天气预报

前言 在 Python 爬虫的实战应用体系中,结构化气象数据爬取是极具实用性的经典入门案例,天气预报类网站的页面结构标准化程度高、数据维度清晰、反爬机制友好,是巩固「网页解析 + 结构化数据提取 + 多城市适配」爬虫能力的最佳场景。天气数据的爬取区别于文本、图片类爬取,核心在于对多维度结构化数据的精准提取与格式化整理,本次实战项目基于 Python 主流的requests+BeautifulSoup4技术栈,实现全国任意城市的七日天气预报精准爬取,涵盖城市气温、天气状况、风向风力、空气质量等核心气象数据,全程实现「请求构造→多城市 URL 拼接→结构化数据解析→格式化存储」的完整闭环。本次项目的代码具备极强的通用性与复用性,仅需修改城市名称即可适配全国所有城市的天气爬取,既是爬虫技术的实战落地,也是日常获取气象数据的实用工具,零基础也能轻松掌握并灵活复用。 摘要 本文核心价值:零基础实现全国任意城市的七日天气预报爬取,精准提取每日最高温 / 最低温、天气状况、风向风力、空气质量指数等核心气象数据,将爬取结果格式化保存至本地文件,代码无框架依赖、可直接运行,支持多城市批量爬取,

By Ne0inhk