MCP航班预订
一个基于人工智能的航班预订应用程序,演示了模型上下文协议(MCP)。用户通过网络界面与对话式人工智能助手进行交互,以搜索航班和管理预订。该系统将Google Gemini与MCP服务器集成在一起,提供对航班数据和预订操作的自然语言访问。
🏗️ 建筑
┌─────────────────────────────────────────────────────┐
│ Web Frontend (index.html) │
│ - Chat interface & user authentication │
│ - Tool authorization (approve/deny actions) │
└────────────────────┬────────────────────────────────┘
▲
│ HTTP
▼
┌─────────────────────────────────────────────────────┐
│ Backend Server (host.py) - Port 8001 │
│ - Gemini AI + MCP client host │
│ - Conversation & session management │
└────────────────────┬────────────────────────────────┘
▲
│ MCP Protocol (STDIO)
▼
┌───────────┴──────────────┐
▲ ▲
│ │
┌────────▼─────────┐ ┌─────────▼─────────┐
│ flightsearch.py │ │ flightbooking.py │
│ MCP Server │ │ MCP Server │
└────────┬─────────┘ └─────────┬─────────┘
▲ ▲
│ HTTP │ HTTP
└────────────┬─────────────┘
▲
│
▼
┌─────────────────────────────────────────────────────┐
│ Flight API (flight_api.py) - Port 8000 │
│ - SQLite database (100k flights, seat tracking) │
│ - REST endpoints for search & booking │
└─────────────────────────────────────────────────────┘✨ 主要特点
- 自然语言接口:与人工智能聊天以搜索和预订航班
- MCP集成:通过STDIO使用JSON-RPC的两个MCP服务器(搜索和预订)
- 工具授权:用户在执行前批准AI操作
- 座位管理:实时跟踪每架航班100个座位,防止超额预订
- 用户认证:具有持久会话的配置文件管理
- 100000次航班:预先生成具有真实飞行数据的SQLite数据库
- 情境感知:AI理解对话历史和当前日期/时间
📁 项目结构
MCPFlightBooking/
├── src/
│ ├── backend/
│ │ ├── host.py # Main FastAPI app + MCP client host
│ │ ├── config.py # Centralized configuration
│ │ ├── db.py # Database operations
│ │ ├── flight_api.py # FastAPI flight search API
│ │ ├── flight_app.db # SQLite database (100k flights)
│ │ └── .env # API keys (GOOGLE_AI_STUDIO_API_KEY)
│ │
│ ├── frontend/
│ │ └── index.html # Web UI with chat interface
│ │
│ └── MCPservers/
│ ├── flightsearch.py # MCP server for flight search
│ └── flightbooking.py # MCP server for booking management
│
├── start.ps1 # PowerShell startup script
├── start.bat # Batch startup script
└── README.md🛠️ 技术栈
- 后端:Python 3.13、FastAPI、Uvicorn
- AI模型:谷歌双子座(双子座最新flash)
- MCP框架:FastMCP,MCP Python SDK
- 数据库:SQLite
- 前端:普通HTML/CSS/JavaScript
- 运输:用于MCP通信的STDIO(标准输入/输出)
📦 安装
先决条件
- Python 3.13+
- UV包管理器(用于运行MCP服务器)
- Google AI Studio API密钥
设置
- 克隆存储库
git clone https://github.com/IliasAntoniou/MCPFlightBooking.git
cd MCPFlightBooking- 安装依赖项
pip install fastapi uvicorn python-dotenv google-generativeai mcp httpx- 配置环境变量
创建 src/backend/.env:
GOOGLE_AI_STUDIO_API_KEY=your_api_key_here- 初始化数据库 (首次运行时自动)
该系统将在首次启动时自动生成100000个航班。
🚀 运行应用程序
选项1:自动启动(推荐)
Windows PowerShell:
.\start.ps1Windows命令提示符:
start.bat这将:
- 启动航班API服务器(端口8000)
- 启动Gemini+MCP服务器(端口8001)
- 在浏览器中打开web界面
选项2:手动启动
1号航站楼-API航班:
cd src/backend
python -m uvicorn flight_api:app --reload --port 8000终端2-主服务器:
cd src/backend
python -m uvicorn host:app --reload --port 80013号航站楼-打开浏览器:
start src/frontend/index.html💬 用法
- 登录 使用演示凭据:
- 电子邮件: john.doe@example.com - 密码: secret123
- 与AI助手聊天:
- “2025年12月3日从ATH到BCN的搜索航班” - “显示我的预订” - “为John Doe预订FL-012345航班”
- 批准工具调用 当被提示时
- 管理您的个人资料 通过个人资料页面
🔧 MCP工具
航班搜索 (flightsearch.py)
search_flights-按出发地、目的地和日期查找航班getflightbyid-获取特定航班的详细信息- 功能:LRU缓存、输入验证、结构化日志记录
航班预订 (flightbooking.py)
book_flight-创建已确认的预订(检查座位可用性)hold_flight-临时持有到期confirm_held_booking-将保留转换为已确认的预订cancel_booking-删除预订并恢复座位get_booking_details-查看预订信息get_user_bookings-列出所有用户预订- 功能:原子座位更新,防止超售,保持过期跟踪
🔒 运作原理
- 用户通过web界面发送消息
- Gemini AI确定是否需要执行工具
- 用户批准/拒绝工具调用
- MCP服务器执行工具并返回结果
- AI格式化响应并向用户显示
所有工具执行都需要明确的用户安全批准。
📝 备注
这是一个论文项目,展示了模型上下文协议与会话人工智能在航班预订操作中的集成。
