航班查询服务器

一个基于Amadeus API的实时航班查询服务器,提供航班搜索、机场信息、航空公司数据等功能。

  • by technicalerikchan
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 technicalerikchan/flight-mcp-server

使用说明

飞行MCP服务器

一个使用Amadeus API的实时航班查询模型上下文协议服务器。此项目展示了如何构建一个与外部API集成的MCP服务器,以便直接向Claude Desktop提供航班搜索、机场信息和航空公司数据。

特点/功能

  • 实时航班查询 使用Amadeus API搜索全球航班
  • 机场信息 - 通过IATA代码获取详细的机场数据
  • 航班状态 - 查看实时航班状态和延误情况
  • 航空公司信息 - 获取全面的航空公司详情
  • 智能回退 - 如果API不可用,则自动切换到模拟数据

快速入门

先决条件

安装

git clone https://github.com/technicalerikchan/flight-mcp-server.git
cd flight-mcp-server
pip install -r requirements.txt

配置

  1. 复制环境模板:
cp .env.example .env
  1. 将您的Amadeus API凭据添加到 .env:
AMADEUS_API_KEY=your_actual_api_key_here
AMADEUS_API_SECRET=your_actual_api_secret_here

跑步

python -m flight_mcp_server.server

Claude 桌面集成

配置文件位置

  • macOS(苹果电脑操作系统): ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%/Claude/claude_desktop_config.json

添加服务器配置

{
  "mcpServers": {
    "flight-server": {
      "command": "python",
      "args": ["-m", "flight_mcp_server.server"],
      "cwd": "/path/to/flight-mcp-server"
    }
  }
}

使用示例

重启Claude Desktop后,您可以询问:

  • “搜索明天从LAX到JFK的航班”
  • “查找12月25日从纽约飞往伦敦希思罗机场的商务舱航班”
  • “今天AA123航班的状态如何?”
  • 请告诉我关于旧金山机场的情况

可用工具

搜索航班

在机场之间搜索航班。

参数:

  • origin (必填):出发机场的国际航空运输协会(IATA)代码
  • destination (必填):目的地机场的国际航空运输协会(IATA)代码
  • departure_date (必填):日期,格式为YYYY-MM-DD
  • return_date (可选):往返航班的返回日期
  • adults (可选):乘客人数(1-9,默认:1)
  • travel_class (可选):“经济舱”,“经济特等舱”,“商务舱”,“头等舱”

获取机场信息

通过IATA代码获取详细的机场信息。

参数:

  • airport_code (必填):3个字母的国际航空运输协会(IATA)机场代码

获取航班状态

查看实时航班状态。

参数:

  • flight_number (必填):航班号(例如,“AA123”)
  • date (必填):航班日期,格式为YYYY-MM-DD

获取航空公司信息

获取航空公司信息。

参数:

  • airline_code (必填):2个字母的国际航空运输协会(IATA)航空公司代码

项目结构

flight-mcp-server/
├── flight_mcp_server/
│   ├── __init__.py        # Package initialization
│   ├── server.py          # Main MCP server
│   ├── amadeus_client.py  # Amadeus API integration
│   └── error_handler.py   # Error handling & validation
├── .env.example          # Environment template
├── pyproject.toml        # Project configuration
├── requirements.txt      # Dependencies
└── README.md            # This file

它是如何工作的

  1. MCP协议使用模型上下文协议与Claude桌面进行通信
  2. API集成连接到Amadeus API以获取实时航班数据
  3. 错误处理全面验证与优雅降级
  4. 工具系统将飞行操作作为可调用的工具公开

API集成

这个服务器与Amadeus API集成:

  • 测试环境每秒10次请求,每月2000次(免费)
  • 生产环境付费计划享有更高的上限
  • 覆盖范围来自400多家航空公司的全球飞行数据

错误处理

服务器处理各种场景:

  • 无效的机场代码和日期
  • API认证问题
  • 网络连接问题
  • 当API不可用时自动回退到模拟数据

故障排除

“客户端凭据无效”

  • 验证API凭证 .env 文件
  • 检查凭据值中的多余空格

“未找到航班”

  • 验证机场代码是否为有效的国际航空运输协会(IATA)代码
  • 确保出发日期在将来

连接问题

  • 服务器自动回退到模拟数据
  • 检查与 api.amadeus.com 的网络连接

技术栈

  • Python 3.10+ - 运行时环境
  • MCP SDK(MCP软件开发工具包) - 模型上下文协议实现
  • Amadeus API - 飞行数据提供商
  • Asyncio(异步IO) - 异步编程支持

许可证

MIT 许可证 - 详见 许可证 详情请见文件。


埃里克·陈的科技分享项目