航班搜索服务

一个生产级的MCP服务器,支持从对话中直接搜索和比较多个提供商的航班信息。

  • by ellisp97
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 ellisp97/FlightFinderMCP

使用说明

飞行探测器MCP

生产级MCP服务器,使Claude能够直接从您的对话中搜索和比较多个提供商的航班。

特性

  • 多提供商搜索 -汇总来自Skyscanner、Google Flights和Kiwi.com的结果
  • 智能缓存 -使用可配置的TTL缓存减少API调用
  • 并行查询 -通过重复数据消除同时搜索多个提供商
  • 灵活过滤 -按价格、站点、航空公司、客舱等级筛选
  • 结果分析 -获取最便宜、最快和最划算的航班建议

安装

先决条件

  • Python 3.11+
  • Claude Desktop或任何兼容MCP的客户端
  • 至少一个航班API密钥(Skyscanner、Google Flights或Kiwi)

设置

  1. 克隆存储库:
git clone https://github.com/yourusername/FlightFinderMCP.git
cd FlightFinderMCP
  1. 安装依赖项:
pip install -e .
  1. 配置环境变量:
cp .env.example .env
# Edit .env and add your API key(s)
  1. 添加到Claude桌面配置(claude_desktop_config.json):
{
  "mcpServers": {
    "flight-finder": {
      "command": "flight-finder-mcp",
      "env": {
        "FLIGHT_FINDER_SKYSCANNER_API_KEY": "your_key_here"
      }
    }
  }
}

用法

配置后,您可以让Claude自然搜索航班:

Claude将使用MCP工具:

  • 搜索多个航班提供商
  • 比较价格和航班时间
  • 根据您的喜好进行筛选(直达、客舱等级等)
  • 推荐最佳选项

对话示例

可用工具

服务器公开了三个MCP工具:

  • search_flights -搜索机场之间的航班
  • get_cache_stats -查看缓存性能指标
  • clear_cache -清除缓存的搜索结果

配置

关键环境变量:

变量 描述 默认值
FLIGHT_FINDER_SKYSCANNER_API_KEY Skyscanner API密钥 -
FLIGHT_FINDER_GOOGLE_FLIGHTS_API_KEY 谷歌航班API密钥 -
FLIGHT_FINDER_KIWI_API_KEY Kiwi.com API密钥 -
FLIGHT_FINDER_CACHE_TTL_SECONDS 缓存持续时间 300
FLIGHT_FINDER_MAX_SEARCH_RESULTS 每次搜索的结果限制 50
FLIGHT_FINDER_LOG_LEVEL 日志记录级别 信息

看 .env.example 所有可用选项。

建筑

使用干净的架构原则构建:

  • 域层 -航班实体、搜索条件、值对象
  • 应用层 -搜索、筛选、推荐用例
  • 基础设施层 -API客户端、缓存、速率限制
  • 表示层 -MCP服务器处理程序和模式

使用Result monad模式进行错误处理,使用Pydantic进行验证。

发展

运行测试

# Install dev dependencies
pip install -e ".[dev]"

# Run tests
pytest

# With coverage
pytest --cov=src/flight_finder

代码质量

# Format code
black src tests
isort src tests

# Type checking
mypy src

# Linting
ruff check src tests

许可证

麻省理工学院

贡献

欢迎投稿!请打开问题或PR。