在旅行规划中,合理安排行程能让我们的旅行体验大幅提升。今天,我将带你使用 MCP(模型上下文协议)来规划一个北京一日游的出行攻略。这不仅包含了从高德地图获取地铁线路和美食信息,还会将这些信息存储到数据库中,并最终生成一个精美的 HTML 前端展示页面。接下来,让我们一步步实现这个功能。
一、MCP 工作原理简介
MCP(模型上下文协议)提供了两种主要的服务模式:
- SSE(Server-Sent Events)服务 :这是一种通过 HTTP 长连接接收服务端推送事件流的方式。例如,我们可以利用高德地图的实时数据流来获取地铁线路信息。通常,它的配置如下:
"amap-amap-sse": {
"url": "https://mcp.amap.com/sse?key=你的高德APIKEY"
}
不过,由于网络原因或链接问题,有时候可能会出现解析失败的情况。如果遇到这个问题,可以先检查网页链接的合法性,确保链接正确无误,并适当重试。
- Stdio(标准输入/输出)服务 :这种方式通过启动本地进程,利用子进程的标准输入(stdin)和输出(stdout)与 MCP 主进程进行交互。典型的应用场景包括本地数据库操作和文件系统操作。例如:
"mysql": {
"command": "npx",
"args": ["-y", "@f4ww4z/mcp-mysql-server"],
"env": {
... }
}
"fs": {
"command": "cmd",
"args": ["/c", "npx", "-y", "@smithery/cli@latest", "run", "@bunasQ/fs"]
}
二、获取地铁线路信息并存储到数据库
首先,我们需要从高德地图的 MCP 服务中获取北京站到天安门、天安门到顾和园、顾和园到南锣鼓巷的地铁线路信息,并将其保存到数据库 mcp 的表 subway_trips 中。
1. 数据库表创建
确保你已经创建了一个名为 mcp 的数据库,并在其中创建了 subway_trips 表。以下是创建表的 SQL 语句:
CREATE DATABASE IF NOT EXISTS mcp;
USE mcp;
CREATE TABLE IF NOT EXISTS subway_trips (
id INT AUTO_INCREMENT PRIMARY KEY,
start_location VARCHAR(255) NOT NULL,
end_location VARCHAR(255) NOT NULL,
subway_line VARCHAR(255),
duration VARCHAR(255),
distance VARCHAR(255)
);
2. 使用 MCP 获取地铁线路信息
由于直接使用高德地图的 MCP 服务需要具体的 API 调用细节和合法性验证,这里我们通过模拟的方式展示如何获取地铁线路信息并存储到数据库。在实际应用中,请参考高德地图的官方文档进行合法的 API 调用。
模拟获取地铁线路信息的 Python 代码示例:
import mysql.connector
# 模拟从高德地图 MCP 服务获取地铁线路信息
def get_subway_info():
subway_routes = [
{
"start": "北京站", "end": "天安门", "line": "地铁 1 号线", "duration": "10 分钟", "distance": "2 公里"},
{
"start": "天安门", "end": "顾和园", "line": "地铁 4 号线", "duration