在日常生活中,12306 是中国铁路售票系统的官方平台。为了提升购票效率、自动化查询余票信息以及获取车站代码等功能,我们希望通过使用智能体编程方式,结合 MCP(Model-as-a-Service)技术实现,能随时随地访问 12306 提供的服务接口,并能够进行智能询问车次车票等信息,提高查询的简便性。
在这个过程中,我使用了阿里巴巴推出的智能编程助手——通义灵码,它帮助我快速构建项目结构、编写代码逻辑,并协助调试前后端交互中的常见问题。
一、项目体验过程
现在我们来体验一下,通过VSCode插件找到并安装最新版本的通义灵码。

安装时需要选择信任发布者并安装(Trust Publisher & Install)。
我们在对话框里面发现可以使用MCP功能,就是点击下面这个MCP工具按钮。

我们知道modelscope社区的MCP广场有很多优质的MCP资源,通过咱们的通义灵码可以直接访问MCP广场上的服务。
这里我们找到12306-mcp这个MCP并部署。如下图所示:

安装完成后在我的服务中可以找到已安装的MCP。
找到我们的12306-mcp。可以看到它提供的功能如下,非常丰富。
我们在通过与通义灵码智能体对话进行体验。
我直接提问智能体,模型用Qwen3。
我问他:请帮我查询一下今天下午17:30之前武汉到广州的火车票。会话回答结果如下:

现在我们发现智能体已经能正常执行MCP,查询到今天下午17:30之前从武汉到广州的火车票信息。在17:30之前有多个车次可供选择。
二、项目深度开发过程
但是,这个刚才这个智能体的对话界面需要打开VSCode才能访问,我还想开发出能通过浏览器直接访问的界面,并且向智能体随时随地提问了解车次信息。
该如何完成呢?
于是,我打算使用通义灵码的智能体开发功能。
本项目作为通义灵码2.5的实践案例,展现了AI辅助开发在复杂业务系统中的革命性突破。通过深度集成12306 MCP服务体系,我们将构建一个融合智能决策、环境感知和自主优化的新一代火车票查询系统。

开发过程如下:
首先需要了解这个12306-mcp的详细功能参数及特性。
(可选择)来到modelscope社区,社区界面找到这个mcp,可以看到它的详细功能介绍。

可以看到它的mcp配置信息以及工具测试集。

这里已经介绍得非常清晰,该如何配置和测试使用。
现在,我们回到VSCode的对话框界面中继续提问,要求智能体为我们编程。
先梳理一下开发目标,本项目的主要目标包括:
- 构建一个基于 Node.js 的本地 HTTP 服务器,用于提供前端页面;
- 创建一个代理服务器以转发请求到 12306-MCP 接口;
- 实现 JavaScript 客户端对 MCP 接口的调用;
- 解决 CORS、端口占用、API 转发失败等常见问题;
- 提供完整的测试流程,确保功能可用性。
刚才我们已经深度了解了MCP,现在可以要求通义灵码使用这个MCP服务。
与通义灵码对话演示如下:

后台我们可以启用Ollama启动一个本地qwen的大模型,也可以用远端模型链接。这里作为演示,我们大模型使用本地的qwen2.5:7b模型。

开发完成后,一步步根据通义灵码2.5的提示完成本地环境的部署:
✅1. 基础服务搭建
-
搭建本地 HTTP 服务器(server.js):
- 监听地址:
http://localhost:3000/ - 提供 HTML 页面和静态资源访问。
- 监听地址:
-
创建代理服务器(proxy-server.js):
- 监听地址:
http://localhost:3001/ - 解决浏览器 CORS 跨域问题;
- 支持转发以下接口请求:
GET /api/current-date→ 获取当前日期POST /api/station-code-of-citys→ 查询城市车站代码POST /api/tickets→ 查询余票信息
- 监听地址:
✅ 2. 前端功能实现
-
JavaScript 客户端(12306-mcp-client.js):
- 封装对 MCP 接口的调用;
- 实现异步获取当前日期;
- 根据城市名获取车站代码;
- 查询指定出发地与目的地之间的余票;
- 错误处理机制(网络异常、接口失败等);
- 控制台日志输出调试信息。
-
前端页面(index.html):
- 展示测试页面;
- 自动加载 JS 客户端脚本;
- 显示基本样式与结果区域。
✅ 3. 开发辅助工具
-
环境检查脚本(check-environment.js):
- 验证 Node.js 是否安装;
- 输出环境信息。
-
启动脚本(start-ticket-assistant.js):
- 并行启动主服务器与代理服务器;
- 输出清晰运行日志。
-
配置文件(config.js):
- 存储服务地址等配置项。
✅ 4. API 请求流程
- 浏览器通过 JS 客户端请求本地代理;
- 代理服务器将请求转发到 12306-MCP;
- 返回数据后展示在控制台或页面中。
可以看到通义帮我们开发好的程序框架。
项目结构说明如下: