【Agent】MCP协议 | 用高德MCP Server制作旅游攻略

note

  • MCP (Model Context Protocol) 代表了 AI 与外部工具和数据交互的标准建立。MCP 的本质:它是一个统一的协议标准,使 AI 模型能够以一致的方式连接各种数据源和工具,类似于 AI 世界的"USB-C"接口。
    • 它能够在 LLM/AI Agent 与外部资源之间实现无缝、安全且可扩展的数据交换。MCP 采用客户端-服务器架构,其中 MCP 主机(AI 应用)与 MCP 服务器(数据/工具提供方)进行通信。开发者可以使用 MCP 构建可复用、模块化的连接器,并利用针对主流平台的预构建服务器,从而打造一个由社区驱动的生态系统。
  • MCP 的价值:它解决了传统 function call 的平台依赖问题,提供了更统一、开放、安全、灵活的工具调用机制,让用户和开发者都能从中受益。
  • 使用与开发:对于普通用户,MCP 提供了丰富的现成工具,用户可以在不了解任何技术细节的情况下使用;对于开发者,MCP 提供了清晰的架构和 SDK,使工具开发变得相对简单。
  • MCP Server有哪些“服务”?
    • Tools:提供给LLM应用特别是Agent使用的工具。
    • Resoures:提供给LLM应用一些额外的结构化数据。
    • Prompts:提供给LLM应用的一些Prompt模板。比如你的应用是一个Chatbot,可以从MCP Server中取出这些模板,让使用者选择使用。

一、MCP (Model Context Protocol)

MCP (Model Context Protocol,模型上下文协议)定义了应用程序和 AI 模型之间交换上下文信息的方式。这使得开发者能够以一致的方式将各种数据源、工具和功能连接到 AI 模型(一个中间协议层),就像 USB-C 让不同设备能够通过相同的接口连接一样。MCP 的目标是创建一个通用标准,使 AI 应用程序的开发和集成变得更加简单和统一。

在这里插入图片描述

相关MCP资源汇总:https://github.com/punkpeye/awesome-mcp-servers

MCP 有潜力成为一个通用接口,可以将其视为 AI 领域的虚拟/软件版 USB-C。
在这里插入图片描述

它能够在 LLM/AI Agent 与外部资源之间实现无缝、安全且可扩展的数据交换。
MCP 采用客户端-服务器架构,其中 MCP 主机(AI 应用)与 MCP 服务器(数据/工具提供方)进行通信
开发者可以使用 MCP 构建可复用、模块化的连接器,并利用针对主流平台的预构建服务器,从而打造一个由社区驱动的生态系统。

在这里插入图片描述

  • MCP Server有哪些“服务”?
    • Tools:提供给LLM应用特别是Agent使用的工具。
    • Resoures:提供给LLM应用一些额外的结构化数据。
    • Prompts:提供给LLM应用的一些Prompt模板。比如你的应用是一个Chatbot,可以从MCP Server中取出这些模板,让使用者选择使用。

二、高德地图MCP Server

高德地图 MCP Server 是基于 MCP 协议(Model Context Protocol)构建的标准化地图服务能力平台。它整合了高德开放平台的地图服务与智能算法,将其浓缩为简单易用的地图服务接口,为企业及开发者提供全场景的地图服务解决方案。开发者通过简单配置,即可快速集成地理编码、路径规划、地点搜索等核心服务接口,轻松调用高德开放平台的地图服务与算法能力,加速智慧化业务场景的落地。

12大核心功能

高德地图 MCP Server 提供12项核心功能,覆盖多种地图服务场景,满足企业开发的多样化需求:
1、地理编码:将详细的结构化地址转换为经纬度坐标。
在这里插入图片描述
2、逆地理编码:将一个高德经纬度坐标转换为行政区划地址信息。
3、IP 定位:IP 定位根据用户输入的 IP 地址,定位 IP 的所在位置。
4、天气查询:根据城市名称或者标准adcode查询指定城市的天气。
5、骑行路径规划:用于规划骑行通勤方案,规划时会考虑天桥、单行线、封路等情况。最大支持 500km 的骑行路线规划。
6、步行路径规划:可以根据输入起点终点经纬度坐标,规划100km 以内的步行通勤方案,并且返回通勤方案的数据。
7、驾车路径规划:根据用户起终点经纬度坐标规划以小客车、轿车通勤出行的方案,并且返回通勤方案的数据。
8、公交路径规划:根据用户起终点经纬度坐标规划综合各类公共(火车、公交、地铁)交通方式的通勤方案,并且返回通勤方案的数据,跨城场景下必须传起点城市与终点城市。
9、距离测量:测量两个经纬度坐标之间的距离,支持驾车、步行以及球面距离测量。
10、关键词搜索:根据用户传入关键词,搜索出相关的POI地点信息。
11、周边搜索:根据用户传入关键词以及坐标location,搜索出radius半径范围的POI地点信息。
12、详情查询:查询关键词搜或者周边搜获取到的POI ID的详细信息。

三、MCP Server 开发实践

参考文档:https://o90p05z3t4.feishu.cn/wiki/Vldsw7DYdiJHe4kmzcJc0wzTnIc

高德开放平台官网:https://lbs.amap.com/

参考prompt:

# 旅行规划表设计提示词

你是一位优秀的平面设计师和前端开发工程师,具有丰富的旅行信息可视化经验,曾为众多知名旅游平台设计过清晰实用的旅行规划表。现在需要为我创建一个A4纸张大小的旅行规划表,适合打印出来随身携带使用。请使用HTML、CSS和JavaScript代码实现以下要求:

## 基本要求

**尺寸与基础结构**
   - 严格符合A4纸尺寸(210mm×297mm),比例为1:1.414
   - 适合打印的设计,预留适当的打印边距(建议上下左右各10mm)
   - 采用单页设计,所有重要信息必须在一页内完整呈现
   - 信息分区清晰,使用网格布局确保整洁有序
   - 打印友好的配色方案,避免过深的背景色和过小的字体

**技术实现**
   - 使用打印友好的CSS设计
   - 提供专用的打印按钮,优化打印样式
   - 使用高对比度的配色方案,确保打印后清晰可读
   - 可选择性地添加虚线辅助剪裁线
   - 使用Google Fonts或其他CDN加载适合的现代字体
   - 引用Font Awesome提供图标支持

**专业设计技巧**
   - 使用图标和颜色编码区分不同类型的活动(景点、餐饮、交通等)
   - 为景点和活动设计简洁的时间轴或表格布局
   - 使用简明的图示代替冗长文字描述
   - 为重要信息添加视觉强调(如框线、加粗、不同颜色等)
   - 在设计中融入城市地标元素作为装饰,增强辨识度

## 设计风格

- **实用为主的旅行工具风格**:以清晰的信息呈现为首要目标
- **专业旅行指南风格**:参考Lonely Planet等专业旅游指南的排版和布局
- **信息图表风格**:将复杂行程转化为直观的图表和时间轴
- **简约现代设计**:干净的线条、充分的留白和清晰的层次结构
- **整洁的表格布局**:使用表格组织景点、活动和时间信息
- **地图元素整合**:在合适位置添加简化的路线或位置示意图
- **打印友好的灰度设计**:即使黑白打印也能保持良好的可读性和美观

## 内容区块

1. **行程标题区**- 目的地名称(主标题,醒目位置)
   - 旅行日期和总天数
   - 旅行者姓名/团队名称(可选)
   - 天气信息摘要

2. **行程概览区**- 按日期分区的行程简表
   - 每天主要活动/景点的概览
   - 使用图标标识不同类型的活动

3. **详细时间表区**- 以表格或时间轴形式呈现详细行程
   - 包含时间、地点、活动描述
   - 每个景点的停留时间
   - 标注门票价格和必要预订信息

4. **交通信息区**- 主要交通换乘点及方式
   - 地铁/公交线路和站点信息
   - 预计交通时间
   - 使用箭头或连线表示行程路线

5. **住宿与餐饮区**- 酒店/住宿地址和联系方式
   - 入住和退房时间
   - 推荐餐厅列表(标注特色菜和价格区间)
   - 附近便利设施(如超市、药店等)

6. **实用信息区**- 紧急联系电话
   - 重要提示和注意事项
   - 预算摘要
   - 行李清单提醒

## 示例内容(基于上海一日游)

**目的地**:上海一日游
**日期**2025330日(星期日)
**天气**:阴,13°C/7°C,东风1-3**时间表**| 时间 | 活动 | 地点 | 详情 |
|------|------|------|------|
| 09:00-11:00 | 游览豫园 | 福佑路168| 门票:40|
| 11:00-12:30 | 城隍庙午餐 | 城隍庙商圈 | 推荐:南翔小笼包 |
| 13:30-15:00 | 参观东方明珠 | 世纪大道1| 门票:80元起 |
| 15:30-17:30 | 漫步陆家嘴 | 陆家嘴金融区 | 免费活动 |
| 18:30-21:00 | 迪士尼小镇或黄浦江夜游 | 详见备注 | 夜游票:120|

**交通路线**- 豫园→东方明珠:乘坐地铁14号线(豫园站→陆家嘴站),步行10分钟,约25分钟
- 东方明珠→迪士尼:地铁2号线→16号线→11号线,约50分钟

**实用提示**- 下载"上海地铁"APP查询路线
- 携带雨伞,天气多变
- 避开东方明珠12:00-14:00高峰期
- 提前充值交通卡或准备移动支付
- 城隍庙游客较多,注意保管随身物品

**重要电话**- 旅游咨询:021-12301
- 紧急求助:110(警察)/120(急救)

请创建一个既美观又实用的旅行规划表,适合打印在A4纸上随身携带,帮助用户清晰掌握行程安排。

四、高德地图MCP Server 2.0

1、专属地图 Tools:充分理解用户出行场景诉求,制定出行计划,并在高德地图APP生成专属地图,满足用户打车、导航、酒店预订、门票预订、餐厅预订、加油充电等一系列出行服务需求。

2、唤端Tools & 动态地图:开发者可以使用高德MCP,直接在出行计划中载入动态地图,并嵌入与高德地图APP联动按钮,实现一键导航、打车等功能。
在这里插入图片描述

1、安装 Cursor

1.本地下载安装 Cursor 客户端
2.Cursor 下载安装地址 :https://www.cursor.com/cn
3.登陆 Cursor 个人账户建议使用最新版本的 Cursor 客户端。

2、申请高德开放平台 WEB 服务API 用户 key

申请地址 :https://console.amap.com/dev/key/app

3、Cursor 配置AMap MCP SSE 连接方式

{
  "mcpServers": {
    "amap-amap-sse": {
      "url": "https://mcp.amap.com/sse?key=<YOUR_API_KEY>"
    }
  }
}

4、在cursor上进行交互

query=”用高德MCP,做一个广州三日游攻略“
在这里插入图片描述
看中间的called MCP tool过程可知,maps_text_search是一个类似search_for_poi的查点信息的函数:
在这里插入图片描述

其他尝试:寻找约会的中间点、旅游攻略、出游计划嵌入到app中等

Reference

[1] odel Context Protocol(MCP) 编程极速入门,https://github.com/liaokongVFX/MCP-Chinese-Getting-Started-Guide,有实践代码
[2] 地图上的问题都问它!智能出行规划专家Claude + 谷歌地图MCP
[3] 高德地图 MCP Server:12大核心功能助力企业级智能体应用开发
[4] 高德终端技术总结:高可用架构如何练成?
[5] 爆火的MCP(Model Context Protocol)
[6] https://github.com/punkpeye/awesome-mcp-servers
[7] 一个LangChain与MCP结合使用的案例

其他参考资料:
[1] Introducing the Model Context Protocol:https://www.anthropic.com/news/model-context-protocol
[2]For Claude Desktop Users:https://modelcontextprotocol.io/quickstart/user
[3]Awesome MCP Servers:https://github.com/punkpeye/awesome-mcp-servers
[4]MCP Servers Website:https://mcpservers.org/
[5]Official MCP Servers:https://github.com/modelcontextprotocol/servers
[6]解释:https://modelcontextprotocol.io/quickstart/server#what%E2%80%99s-happening-under-the-hood[7]源码:https://github.com/modelcontextprotocol/python-sdk/tree/main/examples/clients/simple-chatbot/mcp_simple_chatbot
[8]client example:https://github.com/modelcontextprotocol/python-sdk/tree/main/examples/clients/simple-chatbot/mcp_simple_chatbot
[9]原始代码:https://github.com/modelcontextprotocol/python-sdk/blob/main/src/mcp/server/fastmcp/tools/base.py#L34-L73
[10]代码:https://github.com/modelcontextprotocol/python-sdk/blob/main/examples/clients/simple-chatbot/mcp_simple_chatbot/main.py#L295-L338
[11]代码:https://github.com/modelcontextprotocol/python-sdk/blob/main/examples/clients/simple-chatbot/mcp_simple_chatbot/main.py#L295-L338[12]最佳开发实践:https://modelcontextprotocol.io/tutorials/building-mcp-with-llms
[13]TypeScript SDK:https://github.com/modelcontextprotocol/typescript-sdk
[14]Python SDK:https://github.com/modelcontextprotocol/python-sdk
[15]官方文档:https://modelcontextprotocol.io/tutorials/building-mcp-with-llms
[16]Quick Start: For Server Developers:https://modelcontextprotocol.io/quickstart/server
[17]README 文件:https://raw.githubusercontent.com/modelcontextprotocol/python-sdk/refs/heads/main/README.md
[18]Official Tutorial: Debugging:https://modelcontextprotocol.io/docs/tools/debugging
[19]Official Tutorial: Inspector:https://modelcontextprotocol.io/docs/tools/inspector
[20]MCP Official Docs:https://modelcontextprotocol.io/
[21]MCP Python SDK:https://github.com/modelcontextprotocol/python-sdk
[22]MCP Available Server:https://github.com/modelcontextprotocol/servers
[23]Blog: 🔗What is Model Context Protocol? (MCP) Architecture Overview:https://medium.com/@tahirbalarabe2/what-is-model-context-protocol-mcp-architecture-overview-c75f20ba4498
[24]Blog: LLM Function-Calling vs. Model Context Protocol (MCP):https://www.gentoro.com/blog/function-calling-vs-model-context-protocol-mcp
高德MCP 2.0 出行领域首发打通大模型与高德地图APP互联
【Cursor】Cursor的基本使用方式

在这里插入图片描述

【资源说明】 1.项目代码功能经验证ok,确保稳定可靠运行。欢迎下载使用!在使用过程中,如有问题或建议,请及时私信沟通。 2.主要针对各个计算机相关专业,包括计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师或企业员工使用。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。 5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈! 本文介绍了基于QEM(Quadric Error Metrics,二次误差度量)的优化网格简化算法的C和C++实现源码及其相关文档。这一算法主要应用于计算机图形学领域,用于优化三维模型的多边形数量,使之在保持原有模型特征的前提下实现简化。简化的目的是为了提高渲染速度,减少计算资源消耗,以及便于网络传输等。 本项目的核心是网格简化算法的实现,而QEM作为该算法的核心,是一种衡量简化误差的数学方法。通过计算每个顶点的二次误差矩阵来评估简化操作的误差,并以此来指导网格简化过程。QEM算法因其高效性和准确性在计算机图形学中广泛应用,尤其在实时渲染和三维打印领域。 项目代码包含C和C++两种语言版本,这意味着它可以在多种开发环境中运行,增加了其适用范围。对于计算机相关专业的学生、教师和行业从业者来说,这个项目提供了丰富的学习和实践机会。无论是作为学习编程的入门材料,还是作为深入研究计算机图形学的项目,该项目都具有实用价值。 此外,项目包含的论文文档为理解网格简化算法提供了理论基础。论文详细介绍了QEM算法的原理、实施步骤以及与其他算法的对比分析。这不仅有助于加深对算法的理解,也为那些希望将算法应用于自己研究领域的人员提供了参考资料。 资源说明文档强调了项目的稳定性和可靠性,并鼓励用户在使用过程中提出问题或建议,以便不断地优化和完善项目。文档还提醒用户注意查看,以获取使用该项目的所有必要信息。 项目的文件名称列表中包含了加水印的论文文档、资源说明文件和实际的项目代码目录,后者位于名为Mesh-Simplification-master的目录下。用户可以将这些资源用于多种教学和研究目的,包括课程设计、毕业设计、项目立项演示等。 这个项目是一个宝贵的资源,它不仅提供了一个成熟的技术实现,而且为进一步的研究和学习提供了坚实的基础。它鼓励用户探索和扩展,以期在计算机图形学领域中取得更深入的研究成果。
### MCP协议简介 Model Context Protocol (MCP) 是一种用于实现大型语言模型(LLM)与外部数据源和工具之间无缝集成的开放协议[^4]。它采用经典的客户端-服务器(CS)架构,其中 **MCP Host** 表示需要通过 MCP 获取数据的应用程序,而 **MCP Server** 则是一个轻量级应用程序,负责暴露某些特定的功能或资源给主机。 #### 关键组件说明 - **MCP Host**: 如 Claude Desktop、IDE 或其他 AI 工具等,这些程序依赖于 MCP 来获取所需的数据或能力[^1]。 - **MCP Client**: 客户端部分通常由 MCP 协议驱动,能够一对一地连接到指定的 MCP Server 上[^3]。 - **MCP Server**: 负责对外提供某种特殊功能的小型化应用,比如访问本地文件系统、调用远程 API 等[^2]。 - **Local Data Resources**: 可供 MCP Server 访问的安全本地资源,例如文件夹、数据库或其他服务。 - **Remote Services**: 支持通过网络接口(API 形式)与其他外部系统建立通信通道。 --- ### 实现首个 MCP Server 的教程 以下是基于现有文档指导来创建并运行一个基础版本 MCP Server 所需的关键步骤: #### 准备工作环境 确保安装有 Python 和 pip 命令行工具,并且具备基本开发技能以便理解后续操作逻辑。如果尚未完成此环节,则先执行如下命令更新软件包管理器: ```bash pip install --upgrade pip setuptools wheel ``` 接着引入必要的库支持以简化编码过程中的复杂度处理问题: ```python import json from http.server import BaseHTTPRequestHandler, HTTPServer ``` 上述代码片段展示了导入 JSON 解析模块以及内置 Web 服务器框架的核心类定义方法。 #### 编写核心业务逻辑 下面给出一段简单的示例脚本作为起点,演示如何响应来自 MCP Host 请求的消息体内容转换成标准格式返回去的过程: ```python class MCPRequestHandler(BaseHTTPRequestHandler): def do_POST(self): content_length = int(self.headers['Content-Length']) post_data = self.rfile.read(content_length) try: request_json = json.loads(post_data.decode('utf-8')) response_payload = { 'status': 'success', 'message': f"Received data: {request_json}" } status_code = 200 except Exception as e: response_payload = {'error': str(e)} status_code = 400 self.send_response(status_code) self.send_header('Content-Type', 'application/json') self.end_headers() self.wfile.write(json.dumps(response_payload).encode('utf-8')) def run(server_class=HTTPServer, handler_class=MCPRequestHandler, port=8080): server_address = ('', port) httpd = server_class(server_address, handler_class) print(f'Starting MCP Server on port {port}...') httpd.serve_forever() if __name__ == "__main__": run() ``` 这段代码实现了最基本的 POST 方法处理器 `do_POST` ,用来接收传入参数并通过异常捕获机制保障稳定性的同时反馈适当的结果状态码信息给调用方知道当前请求成功与否情况怎样。 #### 启动您的 MCP Server 保存以上全部修改后的完整版 python 文件至任意目录下命名为 mcp_server.py 并切换终端位置至此路径处输入以下指令即可启动监听模式等待连接到来: ```bash python mcp_server.py ``` 此时应该能看到类似这样的提示消息表示正常运作当中:"Starting MCP Server on port 8080..." 最后一步就是按照官方指南配置好对应平台上的插件选项指向刚才开启的服务地址便能正式投入使用啦! --- ### 注意事项 实际项目部署过程中可能还会涉及到安全性加固措施诸如身份验证机制设置等方面考量因素;另外考虑到跨域资源共享(CORS)策略限制也可能影响正常使用体验所以必要时候记得调整浏览器端权限设定或者利用反向代理技术绕过障碍达成目标效果哦!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

山顶夕景

小哥哥给我买个零食可好

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

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

打赏作者

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

抵扣说明:

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

余额充值