この記事ではMCPに特化して解説します。MCP(Model Context Protocol)全般は MCPサーバーの作り方2026完全ガイド をご覧ください。
概要
Fli(Flight Search MCP Server and Library)は、Google Flightsの航空券検索機能をプログラマティックに利用できるPythonライブラリです。MCP(Model Context Protocol)サーバーとして動作し、Claude等のLLMから航空券検索を実行できます。WebスクレイピングではなくGoogle Flightsを直接操作することで、高速かつ安定した検索体験を実現しています。
MCPエコシステムの広がりとともに、fliのような「特定ドメインの外部サービスをLLMから直接操作する」アプローチは注目を集めています。同様のMCP活用例として xmcp - X APIとClaudeを連携させるMCP実装ツール も参照してください。
主な機能
- 直接API操作: Google Flightsとの直接通信により、HTML解析やブラウザ自動化を排除。スクレイピングに比べて高速かつ信頼性が高い
- MCPサーバー対応: Claude Desktop等のMCPクライアントと直接統合。LLMから自然言語で航空券検索を指示できる
- UI変動への耐性: APIベースのため、Google FlightsのUI更新に左右されない安定性を確保
- モジュラー設計: 拡張性を重視した構成により、カスタマイズや統合が容易
fliのアーキテクチャとデータフロー
最安値を探して」 C->>F: search_dates()
(MCP経由) F->>G: 日程範囲で一括クエリ G-->>F: 検索結果(JSON) F-->>C: 構造化レスポンス C-->>U: 最安値日程・価格を提示 U->>C: 「4月20日の便を詳しく」 C->>F: search_flights()
(詳細フィルタ付き) F->>G: 指定日クエリ G-->>F: 便一覧(JSON) F-->>C: フィルタ済みレスポンス C-->>U: 航空会社・時刻・価格を比較提示
利用可能なツール
MCPサーバーは以下の2つの主要ツールを提供します:
| ツール | 説明 |
|---|---|
search_flights |
指定日の航空券を詳細なフィルタ付きで検索 |
search_dates |
柔軟な日程範囲内で最安値の航空券を発見 |
search_flights パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
origin |
文字列 | 出発空港のIATAコード(例:JFK) |
destination |
文字列 | 到着空港のIATAコード(例:LAX) |
導入方法
pipxでのインストール:
pipx install flights
MCPサーバーの起動:
# STDIO経由で実行
fli-mcp
# HTTP経由で実行(ストリーミング対応)
fli-mcp-http # http://127.0.0.1:8000/mcp/ でサービス提供
Claude Desktopとの連携設定(claude_desktop_config.json):
{
"mcpServers": {
"fli": {
"command": "/Users/<user>/.local/bin/fli-mcp"
}
}
}
<user> は実際のユーザー名に置き換えてください。which fli-mcp コマンドで正確なパスを確認できます。
fli-mcp の実行パスは環境によって異なります。pipx install flights でインストールした場合、バイナリは ~/.local/bin/ 以下に配置されることが多いですが、which fli-mcp で必ず確認してください。また、HTTP経由(fli-mcp-http)を使うとストリーミング対応になり、検索結果をリアルタイムで受け取れます。複数のMCPサーバーを同時に利用する場合、Claude Desktop設定ファイルの mcpServers オブジェクトに各サーバーのエントリを追加するだけで共存できます。
技術的な特徴
- コア言語: Python
- API統合: Google Flights直接操作(リバースエンジニアリングベース)
- プロトコル: MCP(Model Context Protocol)
- アーキテクチャ: WebスクレイピングレスのAPIファースト設計
こんなユースケース向け
- 「来月中に東京発ニューヨーク行きで最安値の日程は?」→
search_dates()で日程範囲を一括スキャン - 「4月20日の便を航空会社別に比較して」→
search_flights()で詳細フィルタ検索 - ClaudeがJSON結果を解釈し、自然言語で価格・時刻・乗り継ぎ情報を整理して提示
エージェント型アプリケーションへの航空券検索機能の組み込みにも適しており、fliをバックエンドとして既存のLLMエージェントに旅行ドメインの能力を追加できます。
MCP連携の応用例をさらに探したい場合は、Colab MCP - Google ColabをMCPサーバー化してAIエージェントから操作する方法も参考になります。
スクレイピング vs 直接API操作の比較
| 項目 | Webスクレイピング | fli(直接API操作) |
|---|---|---|
| 速度 | UI描画待ちで低速 | 高速 |
| 安定性 | UIの変更で壊れやすい | UI変更に影響なし |
| 実装複雑度 | ブラウザ自動化が必要 | Python関数呼び出しのみ |
| MCP統合 | 別途実装が必要 | 標準対応 |