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

MCP简单入门及简单操作案例(高德地图调用实现酒店查询天气查询等[Lima]示范)

目录

什么是MCP

MCP是怎么工作的?

环境运行安装

MCP+AI实现高德地图酒店查询

获取高德api-key

代码讲解

运行演示


什么是MCP

MCP(Model Context Protocol)可以理解为**大模型与外部世界打交道的“万能转接头”**。它的核心作用是:**让大模型(如Claude、GPT等)能够安全、标准化地调用外部工具和服务**,从而完成更复杂的任务。

MCP是怎么工作的?

它采用**客户端-服务器架构**,分为三个核心角色:

MCP Host:如 Claude Desktop、Cursor、VS Code 等,负责运行大模型;
  
MCP Client:Host 内部的小助手,负责和服务器通信;
  
MCP Server:连接外部服务的“翻译器”,比如地图API、数据库、本地文件系统等。
  

工作流程如下:

1. 用户提问;
  
2. 大模型判断是否需要调用工具;
  
3. MCP Client 把请求发给 MCP Server;
  
4. MCP Server 执行具体操作(如查天气、写文件);
  
5. 结果返回给大模型,生成最终回答。

环境运行安装

需求:Python 3.10+,node.js,npm

安装uv

pip install uv

创建一个空的python项目

初始化项目

Uv init
Uv venv

激活环境

.venv\Scripts\activate

安装mcp支持

uv add "mcp[cli]"

如何查看mcp是否安装完成

直接终端输入下面的指令

mcp

输出

当输出这个时候就证明安装完成了。

MCP+AI实现高德地图酒店查询

获取高德api-key

首先我们要获取到高德地图的api-key。

高德开放平台 | 高德地图API

登录之后点击应用管理

创建新的应用

点击添加key

选web服务

其他默认填写就行了,然后复制生成的api_key就好了

代码讲解

在已经有的项目结构根目录下创建mcp.json文件

如图所示

然后将这串全部复制到你json文件里面替换成你的api-key就行了

{"mcpServers": {"amap-mcp": {"url": "https://mcp.amap.com/sse?key=你的api-key"}}
}

连接mcp

点击个人设置

点击服务连接

打开按钮,等待为绿色连接状态就OK了

如果没有工具显示

选择配置文件添加,将已经编写好的json文件复制进去,保存之后就会有了

光有mcp是能直接获取数据输出的,不过会通过网络走web查询,不经过mcp工具进行输出,所有我们需要创建mcp工具函数。

在main.py创建

import asyncio
import httpx
import os
from mcp.server.fastmcp import FastMCPmcp = FastMCP("gaode-hotel-search")@mcp.tool()
async def search_hotels_nearby(location: str, radius: int = 5000):"""根据经纬度搜索附近酒店"""url = "https://restapi.amap.com/v5/place/around"# 使用环境变量中的API密钥,避免硬编码api_key = os.getenv("AMAP_API_KEY", "你的api-key")params = {"key": api_key,"location": location,"keywords": "酒店","radius": radius,"types": "住宿服务"}# 添加超时设置和错误处理timeout = httpx.Timeout(10.0, connect=5.0)async with httpx.AsyncClient(timeout=timeout) as client:try:res = await client.get(url, params=params)res.raise_for_status()return res.json()except httpx.TimeoutException:return {"error": "请求超时,请检查网络连接"}except httpx.RequestError as e:return {"error": f"请求错误: {str(e)}"}except Exception as e:return {"error": f"未知错误: {str(e)}"}if __name__ == "__main__":mcp.run(transport="stdio")

这串代码具体做了什么。

首先创建mcp实例对话(约等于你创建fastapi的app对象一样)

使用

@mcp.tool()

创建工具使用方法函数的接口对象

这一串是初始化定义传递的数据参数类型和目标网址

"""根据经纬度搜索附近酒店"""url = "https://restapi.amap.com/v5/place/around"# 使用环境变量中的API密钥,避免硬编码api_key = os.getenv("AMAP_API_KEY", "你的api-key")params = {"key": api_key,"location": location,"keywords": "酒店","radius": radius,"types": "住宿服务"}

这一串则是定义了大模型去哪个路由地址去查询你所需要的地址去获取参数,返回的参数转换为json格式让大模型进行转换输出

 async with httpx.AsyncClient(timeout=timeout) as client:try:res = await client.get(url, params=params)res.raise_for_status()return res.json()except httpx.TimeoutException:return {"error": "请求超时,请检查网络连接"}except httpx.RequestError as e:return {"error": f"请求错误: {str(e)}"}except Exception as e:return {"error": f"未知错误: {str(e)}"}

运行演示

记得运行时勾选上工具。

然后运行py文件

输出大概演示

http://www.dtcms.com/a/333460.html

相关文章:

  • 在执行部署脚本后,通过 ls -la 命令查看远程服务器文件时,显示的文件所有者是 games 而不是预期的 root 用户
  • 二、DOCKER常用命令
  • 最长递增子序列-dp问题+二分优化
  • Vue 侦听器(watch 与 watchEffect)全解析1
  • 【161页PPT】智慧方案企业数字化转型概述(课件)(附下载方式)
  • pcl法线估计的踩坑
  • 【GPT入门】第47课 大模型量化中 float32/float16/uint8/int4 的区别解析:从位数到应用场景
  • 《P1194 买礼物》
  • PyTorch的安装-CPU版本或者GPU安装有什么区别吗
  • 口播数字人免费API调用方案
  • Docker的相关知识探究详解
  • 【功能更新】“弹性互联网”正式上线Fusion WAN平台
  • Oracle按照特定列值排序和C#统计特定列值的所有行
  • 数据结构:N叉树 (N-ary Tree)
  • 【部署K8S集群】 1、安装前环境准备配置
  • Deepoc具身智能模型如何重塑康复辅助设备
  • Java中MybatisPlus使用多线程多数据源失效
  • 集成电路学习:什么是Image Segmentation图像分割
  • 功能组和功能组状态的概念关系和区别
  • java16学习笔记-Vector API
  • oracle数据库初始化
  • 共探头部设计|安贝斯携手武汉科创协会x深钣协“湖北行”,链动D+M小镇的华中范式
  • Linux软件编程-进程(2)及线程(1)
  • 快速设计简易嵌入式操作系统(5):贴近实际场景,访问多外设,进一步完善程序
  • WPF 监控CPU、内存性能
  • python math数学运算模块
  • 【AI论文】Story2Board:一种无需训练的富有表现力故事板生成方法
  • Numerical Difference between vLLM logprobs and huggingface logprobs
  • windows下hashcat使用gpu破解execl打开密码
  • 深入Amazon DynamoDB:高效、无缝的数据存储解决方案