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

文章目录
  • MCP 官网
  • MCP 官方文档中文版
  • 官方 MCP 服务示例
  • Github
  • MCP 市场
  • 简介
  • 架构
  • 高德地图 MCP 客户端示例
    • python-sdk 客户端
    • java-sdk 客户端

MCP 官网

MCP 官方文档中文版

官方 MCP 服务示例

Github

MCP 市场

在这里插入图片描述

简介

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 命令。

{
    "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"
    }
)

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 客户端

<!-- 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 {

    @Test
    public 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());
    }

}

在这里插入图片描述

如何系统学习掌握AI大模型?

AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。

学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。

这里给大家精心整理了一份全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享!

有需要的小伙伴,可以点击下方链接免费领取【保证100%免费

点击领取 《AI大模型&人工智能&入门进阶学习资源包》*

1.学习路线图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果大家想领取完整的学习路线及大模型学习资料包,可以扫下方二维码获取
在这里插入图片描述

👉2.大模型配套视频👈

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,每个章节都是当前板块的精华浓缩。(篇幅有限,仅展示部分)

img

👉3.大模型经典学习电子书👈

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。(篇幅有限,仅展示部分,公众号内领取)

img

👉4.大模型面试题&答案👈

截至目前大模型已经超过200个,在大模型纵横的时代,不仅大模型技术越来越卷,就连大模型相关的岗位和面试也开始越来越卷了。为了让大家更容易上车大模型算法赛道,我总结了大模型常考的面试题。(篇幅有限,仅展示部分,公众号内领取)

img

大模型面试

**因篇幅有限,仅展示部分资料,**有需要的小伙伴,可以点击下方链接免费领取【保证100%免费

点击领取 《AI大模型&人工智能&入门进阶学习资源包》

**或扫描下方二维码领取 **

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员一粟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值