最新案例动态,请查阅码上出发:华为云码道 + MCP赋能12306列车查询系统小伙伴们快来进行实操吧!

一、概述

1.1 案例介绍

本案例基于华为云码道(CodeArts)代码智能体,集成12306-MCP,构建12306火车票查询系统,实现余票查询、中转查询、车站查询、经停站查询等功能。

案例技术选型:

  • 华为云码道(CodeArts)代码智能体:一个理解项目需求,懂得编码之道,善用百器的实干派AI研发专家,开启你的编码自动驾驶模式。本案例中作为交互工具,自动生成项目代码。

  • 12306-MCP:是一个基于模型上下文协议(MCP)的12306票务查询服务器。本案例使用12306-MCP提供的API接口,供用户查询12306票务信息。

1.2 适用对象

  • 个人开发者
  • 高校学生
  • 企业开发者

1.3 案例时间

本案例总时长预计60分钟。

1.4 案例流程

说明:

  1. 用户安装华为云码道 CodeArts 代码智能体;
  2. 华为云码道配置12306-MCP;
  3. 华为云码道 CodeArts 代码智能体结合MCP,构建12306列车查询系统;
  4. 使用浏览器体验12306列车查询系统,实现余票查询、中转查询、车站查询、经停站查询等功能。

1.5 资源总览

本案例预计花费0元。

资源名称 规格 单价(元)
华为云码道(CodeArts)代码智能体 通用体验版 免费

二、环境和资源准备

2.1 AI IDE华为云码道安装部署

参考案例《Windows版AI IDE华为云码道(CodeArts)代码智能体安装部署》完成Windows版AI IDE华为云码道(CodeArts)代码智能体安装部署。

2.2 安装Node.js和Python环境

使用快捷键 Ctrl+Shift+`,新建终端,输入以下命令查看Node.js和Python环境是否安装?

python --version
node -v
npm -v

如果没有安装,请参考案例《SKILL快速构建你的Java、Python和Node.js开发环境》一键配置Node.js和Python开发环境。

2.3 安装Vue和Python插件

本案例项目代码前端使用Vue,需要手动安装插件。打开码道AI IDE插件市场,在OPEN VSX页签搜索并安装Vue(Official)插件。

同样,安装Python、Python Debugger、Python Environments插件。

三、华为云码道配置MCP服务

MCP 是由 Anthropic 在 2024年 11 月推出的一个开放标准协议。它的核心目的是解决大语言模型(LLM)与外部数据源、工具和服务之间的连接难题。

12306-MCP是一个基于模型上下文协议(MCP)的12306票务查询服务器。该服务器提供简洁的API接口,供用户查询12306票务信息。

3.1 安装并启动12306-MCP

打开CMD命令行窗口,克隆项目到本地并安装:

git clone https://gitcode.com/gh_mirrors/12/12306-mcp.git
cd 12306-mcp
npm install

启动12306-MCP:

npx -y 12306-mcp

3.2 配置12306-MCP服务

点击右上角MCP图标,点击配置MCP服务器,.codeartsdoer/mcp目录下生成mcp_settings.json文件。

编辑mcp_settings.json文件,将以下内容复制并保存。

{
    "mcpServers": {
        "12306-mcp": {
            "command": "npx",
            "args": [
                "-y",
                "12306-mcp"
            ]
        }
    }
}

12306-MCP工具介绍:

工具名称 功能说明 必要参数
get-current-date 获取当前日期
get-stations-code-in-city 查询某城市所有火车站名称及 station_code city(城市名)
get-station-code-of-citys 查询城市代表站点的 station_code citys(城市名,多城市用 | 分割)
get-station-code-by-names 通过具体车站名查询 station_code stationNames(车站名,多个用 | 分割)
get-station-by-telecode 通过 station_telecode 查询车站详细信息 stationTelecode(3位字母编码)
get-tickets 查询12306余票信息 date, fromStation, toStation
get-interline-tickets 查询12306中转余票信息 date, fromStation, toStation
get-train-route-stations 查询特定车次在指定区间的经停站详细信息 trainCode, departDate

在码道对话框中,输入以下提示词,验证12306-MCP。

调用 12306-mcp 中的 get-stations-code-in-city 工具,查询南京市所有火车站名称及 station_code。

四、12306列车查询系统代码实践

4.1 华为云码道生成代码

使用探索模式,在华为云码道对话框中,输入以下提示词:

结合12306-mcp提供的所有工具,使用python+flask完成一个web应用,实现12306-mcp中所有的功能。使用Node.js写一个MCP桥接HTTP服务,Flask通过HTTP调用桥接服务来间接使用MCP工具。

几分钟后,华为云码道帮助我们生成了完整的代码。

注意:当发生文件变更时,我们点击全部接受。

项目结构如下:

Train12306/
├── bridge/          # Node.js MCP桥接HTTP服务 (端口3001)
│   ├── server.js    # 通过MCP SDK连接12306-mcp,暴露HTTP API
│   └── package.json
├── backend/         # Python Flask后端 (端口5000)
│   ├── app.py       # 8个路由对应8个MCP工具,调用bridge HTTP接口
│   └── requirements.txt
├── frontend/        # Vue.js前端 (端口5173)
│   ├── src/
│   │   ├── App.vue            # 主布局+4个Tab页
│   │   ├── api.js             # API调用封装
│   │   └── components/
│   │       ├── TicketQuery.vue    # 余票查询
│   │       ├── InterlineQuery.vue # 中转查询
│   │       ├── StationLookup.vue  # 车站查询(4种方式)
│   │       └── TrainRoute.vue     # 经停站查询
│   └── vite.config.js   # 代理/api到Flask
├── start.bat / start.sh  # 一键启动脚本
└── README.md

输入提示词:启动应用。码道自动安装依赖并启动应用。

4.2 体验列车查询系统

在浏览器中打开http://localhost:5173,访问12306火车票查询系统。

余票查询:

出发地:南京、到达地:北京、日期:2025/05/14、车次类型:高铁+动车、排序:出发时间,点击余票查询。

中转查询:

出发地:南京、到达地:乌鲁木齐、日期:2025/05/14,点击查询中转票。

车站查询:

查询南京市内所有车站:

经停站查询:

查询Z40车次经停站:

注意:

  • 如果验证后,发现其它问题,可直接把问题发给华为云码道,经过多轮交互,生成最终代码。
  • 由于本应用的开发是Agent自动生成的,每次提问生成的代码及最后的运行结果均存在出入,开发者可根据自己的需求,调教模型生成自己想要的结果。若想体验与案例一样的结果,请下载或克隆源码至本地运行。

本地运行注意事项:

  • 安装并启动MCP桥接服务
cd bridge
npm install
npm start
  • 安装并启动Flask后端
cd backend
pip install -r requirements.txt
python app.py

requirements.txt文件内容如下:

flask==3.1.0
flask-cors==5.0.0
requests==2.32.3
  • 安装并启动Vue前端
cd frontend
npm install
npm run dev

至此,码上出发:华为云码道 + MCP赋能12306列车查询系统的案例已全部完成。

五、反馈改进建议

如您在案例实操过程中遇到问题或有改进建议,可以到论坛帖评论区反馈即可,我们会及时响应处理,谢谢!

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐