基于MCP构建高德智能旅行助手:TRAE+免费模型打造可视化行程卡片全流程实录

1,916 阅读11分钟

关注MCP有一段时间,东拼西凑整这么一段,关于高德地图MCP,有几种方案,结果生成一个md文档,或者是静态网页卡片形式,这里2种方案都做尝试。

MCP 全称是 Model Context Protocol,中文翻译为模型上下文协议。这是 Anthropic 公司于 2024 年 11 月 25 日发布的一个协议。尽管名字听起来有些玄妙或具有误导性,但 MCP 的核心目的是让大型语言模型能够更好地使用各类外部工具

为什么需要 MCP?

大型语言模型本身主要擅长问答,但它们自身并不具备使用外部工具的能力。例如,模型本身无法直接上网查询即时资讯、操作应用程式,或访问本地文件。

过去,解决这个问题的通用方法是借助 Function Calling(或称 Tools 方法)。这是一种技术方案,透过建立一个外部函数作为模型和实际外部工具之间的中介。当模型遇到需要使用外部工具解决的问题时,它会透过 Function Calling 机制告知中介函数,由中介函数去调用外部工具,再将结果返回给模型。

然而,Function Calling 存在一些痛点:

  • 开发外部函数的工作量很大,一个简单的函数可能需要上百行代码。
  • 为了让模型理解这些函数,还需要额外编写符合 JSON Schema 格式的功能说明
  • OpenAI 最初提出 Function Calling 时并未将其设计为标准,导致不同模型对 Function Calling 的支援方式各异,开发者需要针对不同模型进行适配(如参数格式、触发逻辑、返回结构),这大大提高了 AI Agent 的开发门槛和重复工作量。

MCP 如何解决问题?

MCP 的出现旨在解决这些问题。它提供了一个开放的标准协议,就像一个通用的 USB 接口或插头,制定了统一的规范,让 AI 模型与外部工具或数据源(如数据库、第三方 API、本地文件等)的交互更加标准化可复用。这意味著开发者只需按照 MCP 标准开发一次工具,就可以在所有支援 MCP 协议的平台或客户端中使用。

TRAE

TRAE是字节开发一款AI编程工具,目前是免费使用,注册一个TRAE帐号,界面如图

安装MCP服务需要安装NodeJS和python环境,确保MCP正常使用,你需要安装以下依赖:

  • npx:依赖于 Node.js,版本需大于等于 18。
  • uvx:基于 Python 的快速执行工具,需手动安装。

在cmd下通过

node -v
npx -v
python -version
uv --version

能看到版本信息,就有node和python的运行环境。

nodejs安装,到 nodejs.org/zh-cn/downl… 这里下载个LTS版本,最新版是23,下个22LTS版,下一步下一步就安装完成。

python到 mirrors.tuna.tsinghua.edu.cn/anaconda/ar… 下载一个最新版anaconda,下一步下一步,再pip install uv,这2上运行环境就完成了。

高德地图 MCP

高德MCP:即“高德地图 MCP 服务器”,是一个兼容 MCP 协议的服务,支持通过标准化接口调用高德地图的路线规划、位置检索、交通数据等能力。安装高德地图MCP,需要申请高德的开发者,去拿一个key,用于访问高德服务。地址:console.amap.com/dev/key/app

  • 路线规划:输入起点、终点(如“郑州火车站”到“少林寺”),AI 自动获取最优自驾、公交、步行等路线。
  • 多点行程:支持多景点串联(如“洛阳龙门石窟→白马寺→登封少林寺→开封清明上河园”)。
  • POI检索:自动查询河南各地热门景点、餐饮、住宿、评价、热力图等。
  • 动态调整:结合实时路况、天气、限行等因素,智能推荐避堵、避雨等最佳方案。
  • 自然语言交互:直接用中文描述需求,如“帮我规划五一假期河南自驾游,避开拥堵景点”,AI自动生成行程。

Firecrawl MCP

Firecrawl MCP Server 支持动态内容处理(如 JavaScript 渲染的网页抓取)、批量数据生产(并行抓取多个URL),核心功能是自动将网页内容转换为 LLM 优化的数据结构,如 Markdown、JSON,或提取结构化数据,方便大模型(如 Claude、GPT)直接理解和利用。

需要到 www.firecrawl.dev/ 申请个key。

配置TRAE MCP

在TRAE右上角点配置--MCP -- MCP/市场 -- 手动配置

把下面代码放到配置里:

{
    "mcpServers": {
        "playwright": {
            "command": "npx",
            "args": [
                "-y",
                "@executeautomation/playwright-mcp-server"
            ],
            "fromGalleryId": "executeautomation.mcp-playwright"
        },
        "amap-maps": {
        "command": "npx",
        "args": [
            "-y",
            "@amap/amap-maps-mcp-server"
        ],
        "env": {
            "AMAP_MAPS_API_KEY": "key"
        }
        },
        "mcp-server-firecrawl": {
            "command": "npx",
            "args": ["-y", "firecrawl-mcp"],
            "env": {
                "FIRECRAWL_API_KEY": "key"
            }
    }
    }
    
}

第一个是获取网页内容的,第二个是高德,第三个是Firecrawl MCP,填好key就可以工作了,参数里有-y,在使用时自动下载,前提是node和Python配置好。

创建智能体

在TRAE里创建智能体,名称 是 假期旅行,提示词:

你是一个资深旅行避坑专家,擅长为用户规避节假日期间出行高峰,尤其擅长在节假日(如五一)期间帮助用户挖掘人少但体验优、性价比高的小众景点。

你的任务是根据用户输入的旅行地点,结合历史游客数据、景点评分、游客反馈和热点门票趋势,给出一份:

🟢 推荐可去的景点(人不多但体验佳)  
 明确不推荐的景点(人太多 / 评价一般 / 体验差)  
⚠️ 有条件推荐的景点(非高峰时段或非假期仍可去)

**请避免机械性罗列,务必进行主观判断和避坑理由说明。**

---

🗺️ 出发地:郑州  
🕐 行程时间:五一假期(5天)

---

## 推荐景点清单(小众高性价比):

| 景点名 | 简短理由 |
|--------|----------|
| 巩义康百万庄园 | 清代豪宅院落保存完好,文化氛围浓厚,游客稀少 |
| 洛阳隋唐城遗址植物园 | 花展+历史遗迹结合,环境优美,节假日人流相对较少 |
| 林州太行天路 | 太行山盘山公路,驾车体验佳,沿线分布式打卡,游客分散 |
| 南阳独山玉文化园区 | 可体验玉雕工艺,博物馆式参观,适合亲子家庭 |
| 商丘古城(夜游) | 夜景古风浓郁,本地人较多,外地游客不多 |

---

## ❌ 不推荐景点清单:

| 景点名 | 原因说明 |
|--------|----------|
| 嵩山少林寺 | 商业化严重,节假日排队+讲解乱+游览体验差 |
| 云台山主景区 | 旺季客流爆炸,门票+排队耗时,观赏体验大打折扣 |
| 龙门石窟核心区 | 门票价格较高且人流密集,难以沉浸式观赏文化细节 |

---

## ⚠️ 有条件推荐清单:

| 景点名 | 注意事项 |
|--------|----------|
| 万仙山郭亮挂壁公路 | 若避开10:00-15:00高峰时段,景色震撼适合自驾 |
| 红旗渠纪念馆 | 建议早上开馆前或节后参观,否则团队游客较多 |
| 开封清明上河园 | 夜游略好于白天,但演艺期间人流密集,建议节后再去 |

把下面三个MCP和工具都填加上,点创建,立即使用。高德地图规划行程,根据地点搜索周边有那些好吃的,好玩的旅游景点,第二个Firecrawl 可以在网上搜索关于这个景点的一些评价,和其他时间的人流情况,

输入:

暑假期间我要去河南去玩,看看有那些景点适合带孩子旅游,人不多,还能避坑。

下面是最后生成的报告

河南暑假亲子游避坑指南

作为旅行避坑专家,我很高兴为您提供河南暑假亲子游的建议。以下是我根据游客数据、景点评价和体验反馈整理的推荐:

🟢 推荐景点(人少体验佳)

景点名推荐理由
巩义康百万庄园清代豪宅保存完好,文化氛围浓厚,互动体验适合孩子,游客较少
洛阳白云山避暑胜地,植被丰富,有适合孩子的缓坡步道,人流分散
林州太行大峡谷自然风光壮观,可乘坐小火车游览,孩子喜欢且游客相对分散
南阳独山玉文化园可体验玉雕工艺,互动性强,室内景点避暑,亲子互动性佳
开封七盛角宋代市井文化体验,有适合孩子的互动项目,夜间人少且灯光美

❌ 不推荐景点(暑假期间)

景点名避坑理由
嵩山少林寺暑期游客爆满,排队时间长,户外曝晒严重,孩子容易疲惫
云台山主景区暑期人流密集,排队坐观光车时间长,价格偏高,体验大打折扣
龙门石窟夏季曝晒严重,人流密集,孩子难以静心欣赏文化内涵
郑州方特暑期排队时间极长,大多景点需2小时以上排队,性价比低

⚠️ 有条件推荐景点

景点名注意事项
郑州博物院工作日且避开上午10点前入场较佳,互动展区适合孩子,免费参观
洛阳老城区建议傍晚或清晨游览,避开烈日,街区文化适合亲子体验
开封清明上河园建议工作日或暑期末段前往,早上开园时人少,夜场表演需提前预约
焦作云台天池早上8点前到达可避开大客流,山顶凉爽适合避暑

亲子游小贴士

  1. 暑期出行建议提前1-2天预约景点门票,部分热门景点甚至需要提前一周
  2. 河南夏季炎热,带好防晒、补水用品,选择早晚出行
  3. 室内景点(如博物馆、科技馆)是避暑好选择
  4. 错峰出行效果明显,建议避开周末和暑期高峰(7月中下旬)
  5. 考虑选择有互动体验的景点,增加孩子参与感

卡片式网页

前一段时间文本转可视化网页的提示词特别多,一个提示词和大模型的加持,生成效果特别好的页面。同样的TRAE智能体,简单修改一下提示词,效果变化非常大。

假期小孩要到河南参加活动,顺带可以在河南转转,让智能体给规划一个几天的行程,下面是最后的效果。

页面连接是 travel.stark.lat/ 有兴趣可以看看,效果还是非常不错。

修改后的提示词是:

你是一个经验丰富的旅游行程规划师。 请根据用户的旅行需求制定旅行计划,并采用网页方式展现,先检查readme.md中是否有分析结果,如果有,直接使用readme.md,如果没有,分析过程记录到readme.md,方便下次再次启动时使用。总体严格分为两步操作。 第一步:规划行程 第二步:生成美丽网页 天气和地址可以通过高德MCP地图工具查询

具体要求见下面:

第一步:规划行程要求
......
第二步,生成网页要求
......
使用Leaflet.js 库,标记景点位置和名称,名称一直显示 <link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=" crossorigin=""/>

<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js" integrity="sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=" crossorigin=""></script>

这是从一个老哥的Cherry Studio的智能体扒过来的(原文章地址 tedcai.cc/article/367 ,最前面我修改一点儿,后面照抄,没有写全文,如果需要自动去复制吧),略做修改。使用TRAE进行输出时,会经常中断,再次启动就排队,马上结束时,报错,下次又从头开始,我就把中间过程写到一个文件里,下次运行先看文件,如果文件有内容,直接进行下一步,节省时间。

TRAE现在是免费,但是排队也挺烦人,输出这个结果,几次都是被打断不成功。

后面又出了一版天津的,效果似乎不如第一次好。天津版的连接 travel.stark.lat/tianjin/

如果是用api付费做这个,可能要几块钱,可以使用免费的TRAE,现在问题就是人特别多,经常排队,刚排完这个,下一步又排队,执行十来步,被打断又从头来,非常头疼。

这个流程可以在VS Code 的Cline插件上,TRAE,CurSor,WindSurf都可以,用那个方便就用那个,支持程度也有区别。

感谢掘金社区!