航班搜索服务器

一个提供航班搜索和机场信息功能的MCP服务器,可与Windsurf/Cascade等MCP兼容客户端集成,通过自然语言查询提供航班数据。

  • by faizulkhan56
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 faizulkhan56/local-mcp-server

使用说明

航班搜索MCP服务器

提供航班搜索和机场信息功能的模型上下文协议(MCP)服务器。该服务器可以与Windsurf/Cascade等MCP兼容客户端集成,通过自然语言查询提供航班数据。

特性

  • 机场信息:使用IATA代码获取机场的详细信息
  • 航班搜索:搜索机场之间的航班
  • 最便宜的路线:查找两个目的地之间最便宜的航班选项
  • 数据资源:访问结构化的机场和航班数据

项目结构

local-mcp-server/
├── server.py              # Main MCP server (FastMCP package)
├── server_mcp.py          # Alternative server (official MCP SDK)
├── data/
│   ├── airports.json      # Airport data
│   └── flights.json       # Flight data
└── .venv/                 # Python virtual environment

设置

1.先决条件

  • Python 3.8或更高版本
  • 虚拟环境(推荐)

2.安装

  1. 克隆或导航到项目目录:

    cd c:\faizul-personal\local-mcp-server
    
  2. 创建并激活虚拟环境:

    python -m venv .venv
    .venv\Scripts\activate  # Windows
    
  3. 安装依赖项:

    pip install fastmcp
    # OR for the official SDK version:
    pip install mcp
    

3.数据配置

服务器从JSON文件中加载数据 data/ 目录:

  • data/airports.json:带有IATA代码的机场信息
  • data/flights.json:有定价的航线

如果这些文件不存在,服务器将使用内置的默认数据。

可用工具

1. airport_info(code: str)

使用IATA代码获取有关机场的信息。

例子:

Input: "DHK"
Output: {
  "name": "BGD DHK",
  "city": "Dhaka", 
  "country": "Bangladesh",
  "iata": "DHK",
  "timezone": "Asia/Dhaka"
}

2. search_flights(origin: str, destination: str)

查找两个机场之间的所有航班。

例子:

Input: origin="DHK", destination="KTM"
Output: [
  {
    "number": "FB101",
    "origin": "DHK",
    "destination": "KTM", 
    "price": 120,
    "currency": "USD"
  }
]

3. cheapest_route(origin: str, destination: str)

找到两个机场之间最便宜的航班。

例子:

Input: origin="DAC", destination="KTM"  
Output: {
  "number": "FB102",
  "origin": "DAC",
  "destination": "KTM",
  "price": 115,
  "currency": "USD"
}

可用资源

  • file://airports:简化的机场数据(仅名称和城市)
  • flight://airports:完整的机场信息
  • flight://routes:所有航班数据

风帆/瀑布配置

MCP客户端配置

要将此服务器与Windsurf一起使用,请将以下配置添加到MCP配置文件中:

地点: C:\Users\[username]\.codeium\windsurf\mcp_config.json

{
  "mcpServers": {
    "flight-server": {
      "command": "C:\\faizul-personal\\local-mcp-server\\.venv\\Scripts\\python.exe",
      "args": ["C:\\faizul-personal\\local-mcp-server\\server.py"]
    }
  }
}

替代配置(官方SDK)

如果您更喜欢使用官方MCP SDK版本(server_mcp.py):

{
  "mcpServers": {
    "flight-server": {
      "command": "C:\\faizul-personal\\local-mcp-server\\.venv\\Scripts\\python.exe",
      "args": ["C:\\faizul-personal\\local-mcp-server\\server_mcp.py"]
    }
  }
}

使用示例

配置Windsurf后,您可以使用自然语言查询:

  • “给我DHK的机场信息”
  • “查找从DHK到KTM的航班”
  • “从DAC到DEL最便宜的路线是什么?”
  • “显示特里布万国际机场的信息”

样品数据

机场

  • DHK:孟加拉国达卡·全球之声
  • 数模转换器孟加拉国达卡Hazrat Shahjalal国际机场
  • KTM尼泊尔加德满都特里布万国际机场
  • 删除:印度德里英迪拉·甘地国际机场
  • 罪:新加坡樟宜机场,新加坡

示例航班

  • FB101:DHK→ KTM(120美元)
  • FB102:DAC→ KTM(115美元)
  • FB201:DAC→ 德尔(90美元)
  • FB202:德尔→ DAC(95美元)
  • FB301:罪→ 德尔(210美元)

发展

独立运行服务器

# Activate virtual environment
.venv\Scripts\activate

# Run the server
python server.py

服务器在STDIO传输上运行,使其与MCP客户端兼容。

添加新数据

  1. 添加机场 向 data/airports.json:

    {
      "CODE": {
        "name": "Airport Name",
        "city": "City Name", 
        "country": "Country",
        "iata": "CODE",
        "timezone": "Timezone"
      }
    }
    
  2. 添加航班 向 data/flights.json:

    {
      "number": "FLIGHT_NUMBER",
      "origin": "ORIGIN_CODE",
      "destination": "DEST_CODE",
      "price": 100,
      "currency": "USD"
    }
    

故障排除

常见问题

  1. 服务器未启动:确保Python路径和虚拟环境在中正确 mcp_config.json
  2. 未返回数据:检查一下 data/ 目录存在并且包含有效的JSON文件
  3. 权限错误:确保虚拟环境和Python可执行文件具有适当的权限

调试

服务器包括错误处理功能,如果JSON文件丢失或损坏,将回退到默认数据。

许可证

该项目用于教育和示范目的。

贡献

您可以使用其他机场、航班或新的MCP工具和资源来扩展服务器。