当前位置: 首页 > news >正文

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

文章目录

  • MCP 官网
  • Github
  • MCP 仓库
  • 简介
  • 架构
  • 高德地图 MCP 客户端示例
    • python-sdk 客户端
    • java-sdk 客户端

MCP 官网

  • https://modelcontextprotocol.io/introduction

Github

  • python-sdk:https://github.com/modelcontextprotocol/python-sdk
  • java-sdk:https://github.com/modelcontextprotocol/java-sdk
  • typescript-sdk:https://github.com/modelcontextprotocol/typescript-sdk

MCP 仓库

  • https://mcp.so/zh
    在这里插入图片描述

  • https://supermachine.ai/public-mcp-servers
    在这里插入图片描述

简介

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 下载:https://nodejs.org/zh-cn/download

注: Node版本 >= 18.20.4 ,版本太低无法执行 npx 命令。

  • 高德地图文档(申请 AMAP_MAPS_API_KEY):https://lbs.amap.com/api/mcp-server/summary
    在这里插入图片描述
  • 高德 MCP 服务 tools 列表
{"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_clientserver_params = StdioServerParameters(command="npx",args=["-y", "@amap/amap-maps-mcp-server"],env={"AMAP_MAPS_API_KEY": "xxxxx"}
)async def run():async with stdio_client(server_params) as (read, write):async with 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 客户端

  • 0.7版本迁移0.8版指南:https://github.com/modelcontextprotocol/java-sdk/blob/main/migration-0.8.0.md
<!-- 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")
import io.modelcontextprotocol.client.McpClient;
import io.modelcontextprotocol.client.McpSyncClient;
import io.modelcontextprotocol.client.transport.ServerParameters;
import io.modelcontextprotocol.client.transport.StdioClientTransport;
import io.modelcontextprotocol.spec.McpSchema;
import org.junit.jupiter.api.Test;import java.util.Map;public class JunitTest {@Testpublic void test() {ServerParameters params = ServerParameters.builder("npx").args("-y", "@amap/amap-maps-mcp-server").addEnvVar("AMAP_MAPS_API_KEY", "xxxxx").build();StdioClientTransport transport = new StdioClientTransport(params);McpSyncClient client = McpClient.sync(transport).build();client.initialize();McpSchema.ListToolsResult toolsList = client.listTools();System.out.println("工具列表:" + toolsList);McpSchema.CallToolResult mapsWeather = client.callTool(new McpSchema.CallToolRequest("maps_weather", Map.of("city", "福州")));System.out.println("调用结果:" + mapsWeather.content());}}

在这里插入图片描述


http://www.mrgr.cn/news/96890.html

相关文章:

  • Laravel 中使用 JWT 作用户登录,身份认证
  • 【硬件视界9】网络硬件入门:从网卡到路由器
  • IO 端口与 IO 内存
  • Description of STM32F1xx HAL drivers用户手册
  • Mysql的安装
  • ControlNet-Tile详解
  • 3D意识(3D Awareness)浅析
  • Scala相关知识学习总结3
  • Java8 到 Java21 系列之 Lambda 表达式:函数式编程的开端(Java 8)
  • 【Linux】内核驱动学习笔记(二)
  • L2-001 紧急救援
  • Java基础 4.2
  • 大智慧前端面试题及参考答案
  • Shiro学习(三):shiro整合springboot
  • 【微知】ARM CPU是如何获取某个进程的页表的?(通过TTBR寄存器,MMU进行处理)
  • C++封装、继承、多态(虚函数)
  • 表面法线估计(Surface Normal Estimation)
  • 【JavaSE】String 类
  • AI:机器学习模型-线性回归
  • 《数字图像处理》教材寻找合作者