本文将带你通过 Spring AI 与 MySQL MCP 的结合,实现航班订票信息的智能查询。无需编写复杂 SQL,只需输入自然语言(如“查询上海到北京的最新航班信息”),系统即可自动解析需求、执行查询并返回结果。文章涵盖技术原理、实战代码、安全建议及扩展方向,助你快速落地智能数据交互场景!


一、背景:传统航班查询的痛点
传统航班查询需要用户手动筛选日期、航线、价格等条件,操作繁琐且效率低下。开发人员则需编写大量 SQL 语句和交互逻辑,难以应对需求频繁变更的挑战。
MCP 的价值:

  • 标准化交互:通过 execute_query(执行 SQL)、get_table_info(获取表结构)、list_tables(列出表)等接口,统一处理数据库操作。
  • 自然语言支持:将用户输入转化为 SQL,降低使用门槛,例如输入“最近三天上海飞北京的航班”即可触发查询。

二、技术原理:Spring AI 如何与 MySQL MCP 协同?

  1. 核心架构
  • Spring AI:作为“智能中枢”,解析用户输入并调用 MySQL MCP 执行查询。
  • MySQL MCP:作为“数据桥梁”,接收请求后连接数据库,执行 SQL 并返回结果。
  • MCP 协议:标准化通信格式,确保双方无缝对接。
  1. 交互流程
    用户输入 → Spring AI 解析 → MySQL MCP 执行 SQL → 结果返回 → 用户界面展示
  2. 关键功能
  • 智能查询:支持 execute_query 执行任意 SQL(如 SELECTSHOW)。
  • 表结构探索:通过 get_table_info 查看航班表的字段、类型等信息。
  • 动态列表:list_tables 列出所有数据库表,辅助定位目标数据。

三、实战指南:手把手搭建智能航班查询系统
Step 1:环境准备

  • 安装 Spring Boot(建议 3.2+)和 MySQL。
  • 启动 MySQL MCP Server(参考“某开源仓库”文档,地址需替换为模糊化名称)。
    Step 2:添加 Spring AI 依赖

  org.springframework.ai
  spring-ai-mcp-client-spring-boot-starter
  1.2.0


  mysql
  mysql-connector-java
  8.0.28

Step 3:配置 MySQL MCP 服务器
application.yml 中添加连接信息:

spring:
  ai:
    mcp:
      client:
        stdio:
          servers-configuration: classpath:/mcp-servers-config.json

Step 4:编写核心代码(示例)

  • MySQL MCP 配置文件(mcp-servers-config.json):
{
  "mcpServers": {
    "mysql": {
      "command": "node",
      "args": ["path/to/mysql-mcp-server.js"],
      "env": {
        "MYSQL_HOST": "某数据库地址",
        "MYSQL_USER": "某用户名",
        "MYSQL_PASSWORD": "某密码",
        "MYSQL_DATABASE": "航班数据库"
      }
    }
  }
}
  • Spring AI 调用代码:
import org.springframework.ai.mcp.client.McpSyncClient;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class FlightQueryApp {
  public static void main(String[] args) {
    SpringApplication.run(FlightQueryApp.class, args);
  }
  @Bean
  public ApplicationRunner queryRunner(McpSyncClient mcpClient) {
    return args -> {
      // 1. 连接到 MySQL MCP Server
      mcpClient.connect("mysql");
      // 2. 执行自然语言查询
      String naturalQuery = "查询上海到北京的最新航班信息";
      String sql = mcpClient.translateToSQL(naturalQuery); // 假设封装了翻译逻辑
      List> flights = mcpClient.executeQuery(sql);
      // 3. 输出结果
      flights.forEach(flight -> {
        System.out.println("航班号: " + flight.get("flight_number"));
        System.out.println("起飞时间: " + flight.get("departure_time"));
        System.out.println("价格: " + flight.get("price"));
      });
      // 4. 关闭连接
      mcpClient.disconnect();
    };
  }
}

Tips:

  • 自然语言到 SQL 的转换可通过预定义规则实现(如关键词映射),或调用轻量级模型辅助解析。
  • 实际项目中需添加异常处理、日志记录等模块。

四、实战场景:智能航班查询的落地效果
案例:查询上海到北京的最新航班

  1. 用户输入:“我想知道现在从上海去北京的航班信息。”
  2. 系统解析:自动生成 SQL(如 SELECT flight_number, departure_time, price FROM flights WHERE departure_city='上海' AND arrival_city='北京' AND departure_time > NOW())。
  3. 结果返回:展示航班号、起飞时间、价格等信息,甚至可进一步筛选价格区间或舱位。
    优势对比:
    | 传统方式 | 智能查询 |
    |--------------|--------------|
    | 手动筛选条件 | 输入自然语言 |
    | 需要 SQL 知识 | 无需编码 |
    | 响应慢 | 实时返回结果 |

五、安全与扩展:注意事项与未来方向

  1. 安全实践
  • 数据加密:敏感信息(如航班价格)需加密存储。
  • 权限控制:通过 Spring Security 限制用户查询范围。
  • 日志审计:记录所有查询操作,防止未授权访问。
  1. 扩展方向
  • 多数据源集成:结合其他 MCP 服务(如文件系统、API),实现跨系统数据查询。
  • 智能推荐:根据用户历史查询记录,推荐热门航班或优惠信息。
  • 实时数据流:接入航班动态数据,提供延误预警或改签建议。

六、总结:让技术回归人性化
通过 Spring AI 与 MySQL MCP 的结合,我们实现了从“复杂操作”到“自然对话”的转变。无论是普通用户还是开发人员,都能轻松获取所需数据。未来,随着 AI 技术的深化,智能查询将渗透更多场景,成为效率提升的核心驱动力!
最后:如果你觉得这篇文章对你有帮助,欢迎点赞、关注并留言交流!你的支持是我持续创作的动力!

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐