航班搜索API服务

一个使用Naver航班搜索API查询最低价航班信息的Model Context Protocol (MCP)服务器,提供直飞航班最低价搜索、往返航班信息查询等功能。

  • by InSIkHwang
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 InSIkHwang/Naver-Flight-MCP

使用说明

Naver-Flight-MCP(注:此处的“MCP”可能代表某个特定项目、系统或概念,但根据上下文无法确定具体含义,因此直接保留原样。在实际应用中,可能需要根据具体情况对“MCP”进行翻译或解释。)

这是一个使用Naver机票搜索API来查询最低价机票信息的模型上下文协议(MCP)服务器。

✨ 主要功能

  • 搜索直飞机票最低价 (1名成人,经济舱)
  • 查询往返航班信息 (出发/到达时间,所需时间,航班号)
  • 价格从低到高前10名 提供机票信息
  • 实时SSE流处理以完成数据收集
  • 详细的日志追踪搜索过程

🚀 安装与设置

1. 项目克隆及安装

# 프로젝트 클론
git clone https://github.com/your-username/naver-flight-mcp.git
cd naver-flight-mcp

# 의존성 설치
npm install

# TypeScript 빌드
npm run build

2. 配置Cursor MCP

Windows: C:\Users\{사용자명}\.cursor\mcp.json MacOS(苹果操作系统): ~/.cursor/mcp.json

设置文件示例

{
  "mcpServers": {
    "naver-flight": {
      "command": "node",
      "args": ["C:/Users/{사용자명}/naver-flight-mcp/dist/index.js"],
      "env": {}
    }
  }
}

实际路径示例(Windows)

{
  "mcpServers": {
    "naver-flight": {
      "command": "node",
      "args": ["C:/Users/hwang/naver-flight-mcp/dist/index.js"],
      "env": {}
    }
  }
}

3. 重启Cursor

添加MCP设置后,重启Cursor即可使用Naver机票搜索工具。

📖 使用方法

在Cursor中使用

设置MCP后,可以在Cursor中按以下方式使用:

네이버 항공권 검색: 부산(PUS) → 나리타(NRT), 2025-12-15 ~ 2025-12-19

搜索参数

{
  departure: "PUS",           // 출발지 공항 코드
  arrival: "NRT",             // 도착지 공항 코드
  departureDate: "2025-12-15", // 출발일 (YYYY-MM-DD)
  returnDate: "2025-12-19"    // 복귀일 (YYYY-MM-DD)
}

输出示例

항공권 검색 결과 (PUS → NRT):

순위: 1
출발일: 20251215
복귀일: 20251219
가는편: 7C1153
오는편: 7C1154
총요금: 278,700원
가는편 출발: 11:05
가는편 도착: 13:10
소요시간: 125분
오는편 출발: 14:05
오는편 도착: 16:45
소요시간: 160분
---

🧪 测试结果

2025年12月 釜山(PUS) - 成田(NRT) 搜索结果

日期 最低价 航班 状态
2025-12-01 ~ 2025-12-05 304,000韩元 7C1153/7C1154 ✅ 成功
2025年12月8日 ~ 2025年12月12日 277,000韩元 7C1153/7C1154 ✅ 成功
2025-12-15 ~ 2025-12-19 278,700韩元 7C1153/7C1154 ✅ 成功
2025-12-22 ~ 2025-12-26 416,400韩元 7C1153/7C1154 ✅ 成功

仁川(ICN) - 成田(NRT) 搜索结果

日期 最低价 航班 状态
2025-12-15 ~ 2025-12-19 312,600韩元 BX0164/BX0163 ✅ 成功

🔧 技术特点

SSE流处理改进

  • 实时数据收集完全处理Naver API的Server-Sent Events
  • 渐进式数据增长0个 → 16个 → 18个 → 20个 → 76个 → 77个
  • 最终有效数据选择使用包含最多数据的响应
  • 详细日志追踪各阶段数据收集过程

日志示例

SSE 응답 처리 시작...
SSE 데이터 수신: 항공편 0개, 요금 0개
SSE 데이터 수신: 항공편 16개, 요금 32개
유효한 데이터 발견: 항공편 16개, 요금 32개
SSE 데이터 수신: 항공편 20개, 요금 100개
유효한 데이터 발견: 항공편 20개, 요금 100개
최종 데이터: 항공편 20개, 요금 100개
총 7009개의 요금 정보 발견
처리 완료 - 10개의 유효한 항공편

📁 项目结构

naver-flight-mcp/
├── src/
│   ├── tools/
│   │   └── NaverFlightSearch.ts  # 네이버 항공권 검색 도구
│   └── index.ts                   # MCP 서버 진입점
├── dist/                          # 빌드된 파일
├── NAVER_FLIGHT_API_ANALYSIS.md  # API 분석 문서
├── NAVER_FLIGHT_MCP_TEST_RESULTS.md  # 테스트 결과
├── package.json
├── tsconfig.json
└── README.md

🔌 API 信息

  • 终端节点: https://flight-api.naver.com/flight/international/searchFlights
  • 方式REST API(服务器发送事件)
  • 搜索条件1名成人,直飞,经济舱(固定)
  • 响应时间通常需要4-5秒

🛠️ 开发者信息

本地开发

# 개발 서버 실행
npm run dev

# 빌드
npm run build

# 로그 확인
node dist/index.js

依赖性

  • TypeScript类型安全性
  • **node-fetch(在中文中可直接保留原名,或根据上下文意译为“Node.js的Fetch库”等,但通常直接使用原名)**HTTP请求处理
  • **zod(无特定含义的英文单词,根据语境可灵活翻译,此处保留原样)**模式验证
  • **@modelcontextprotocol/sdk(注:这通常是一个软件开发包或SDK的命名,直接翻译为中文可能不直观,但按照字面意思可译为“@模型上下文协议/软件开发工具包”,不过在实际应用中,这样的命名通常保持原样,不进行翻译。)**MCP服务器实现

📄 许可证

麻省理工学院(MIT)