Gemini Function Calling + Model Context Protocol(MCP) Flight Search について
Gemini 2.5 Pro の関数呼び出しを用いて、自然言語による航班検索を mcp-flight-search ツールの呼び出しに変換するデモプロジェクトです。Gemini と MCP を組み合わせたい Python 開発者を想定しており、stdio でローカルの MCP サーバーに接続します。
主な機能
- 01自然言語による航班検索
- 02関数呼び出しによるパラメーターの自動抽出
- 03stdio による mcp-flight-search への接続
- 04検索結果の整形された JSON 出力
- 05環境変数による API キーの設定
活用シーン
- 01自然言語による都市間のフライト検索
- 02Gemini の関数呼び出しと MCP クライアントの連携方法の学習
MCP 対応
ローカルの mcp-flight-search プロセスを起動し、そのツール一覧を取得して stdio 経由でツールを呼び出す MCP クライアントの例です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Gemini Function Calling + Model Context Protocol(MCP) Flight Search


このプロジェクトでは、Google の Gemini 2.5 Pro の関数呼び出し機能を使用し、Model Context Protocol(MCP)経由で mcp-flight-search ツールと連携する方法を紹介します。このクライアント実装では、次の方法を説明します。
- 標準入出力通信を使用して、ローカルの MCP サーバープロセス(
mcp-flight-search)に接続します - Gemini 2.5 Pro に自然言語のプロンプトを入力して、フライトを検索します(例:「2025-05-05 にアトランタからラスベガスへのフライトを探してください」)
- 自然言語の入力から、Gemini に正しい関数パラメーターを自動的に判断させます
- MCP ツールを使用してフライトを検索します
- 検索結果を整形して表示します
特長
- Gemini 2.5 Pro を使用した自然言語でのフライト検索
- 関数呼び出しによるパラメーターの自動抽出
- 標準入出力経由での
mcp-flight-searchツールとの連携 - フライト検索結果を整形した JSON 出力
- API キーを環境変数で設定
前提条件
このクライアントを実行するには、次のものが必要です。
- Python 3.7+
- Gemini 用の Google AI Studio API キー
- SerpAPI キー(フライト検索ツールで使用)
- インストール済みの
mcp-flight-searchパッケージ
依存関係
このプロジェクトはいくつかの Python パッケージに依存しています。
-
google-generativeai:Gemini 2.5 Pro やその他の Google AI モデルにアクセスするための、Google 公式の Python ライブラリです。
- Gemini 2.5 Pro のクライアントインターフェースを提供します
- 関数呼び出し機能を処理します
- API 認証とリクエストを管理します
-
mcp-sdk-python:Python 用の Model Context Protocol(MCP)SDK です。
- MCP 通信を管理する
ClientSessionを提供します - サーバープロセスを設定する
StdioServerParametersが含まれています - ツールの登録と呼び出しを処理します
- MCP 通信を管理する
-
mcp-flight-search:MCP で構築されたフライト検索サービスです。
- SerpAPI を使用したフライト検索機能を実装しています
- MCP に準拠したフライト検索ツールを提供します
- 標準入出力モードと HTTP 通信モードの両方に対応しています
-
asyncio:非同期コードを記述するための Python 標準ライブラリです。
- 非同期操作とコルーチンを管理します
- 並行する I/O 操作を処理します
- MCP クライアントとサーバーの通信に必要です
-
json:Python 標準の JSON エンコーダーおよびデコーダーです。
- フライト検索結果を解析します
- 表示用に出力を整形します
- データのシリアライズとデシリアライズを処理します
セットアップ
-
リポジトリをクローンします:
git clone https://github.com/arjunprabhulal/mcp-gemini-search.git cd mcp-gemini-search -
依存関係をインストールします:
# 必要な Python ライブラリをインストール pip install -r requirements.txt # MCP フライト検索ツールをインストール pip install mcp-flight-search -
環境変数を設定します:
export GEMINI_API_KEY="YOUR_GEMINI_API_KEY" export SERP_API_KEY="YOUR_SERPAPI_API_KEY"プレースホルダーの値を実際の API キーに置き換えてください。
- Gemini API キーは Google AI Studio から取得します
- SerpAPI キーは SerpApi から取得します
アーキテクチャ
このプロジェクトは複数のコンポーネントを連携させ、自然言語によるフライト検索を実現します。システムの仕組みは次のとおりです。
コンポーネント間のやり取り
-
ユーザーからクライアント
- ユーザーが自然言語のクエリを入力します(例:「明日、アトランタ発ラスベガス行きのフライトを探してください」)
- クライアントスクリプト(
client.py)が入力を処理します
-
クライアントから MCP サーバー
- クライアントが MCP サーバープロセス(
mcp-flight-search)を起動します - 標準入出力による通信チャネルを確立します
- 利用可能なツールとその説明を取得します
- クライアントが MCP サーバープロセス(
-
クライアントから Gemini 2.5 Pro
- ユーザーのクエリを送信します
- 関数呼び出し用のツールの説明を提供します
- 抽出したパラメーターを含む、構造化された関数呼び出しを受け取ります
-
クライアントから MCP ツール
- Gemini から関数呼び出しのパラメーターを受け取ります
- 適切な MCP ツールをパラメーターとともに呼び出します
- レスポンスを処理します
-
MCP サーバーから SerpAPI
- MCP サーバーが SerpAPI にリクエストを送信します
- Google Flights のデータを照会します
- フライト情報を処理して整形します
データフロー
-
入力処理
User Query → Natural Language Text → Gemini 2.5 Pro → Structured Parameters -
フライト検索
Parameters → MCP Tool → SerpAPI → Flight Data → JSON Response -
結果の処理
JSON Response → Parse → Format → Display to User
通信プロトコル
-
クライアント ↔ MCP サーバー
- 標準入出力による通信を使用します
- ツールの登録と呼び出しには MCP プロトコルに従います
- 非同期処理を扱います
-
MCP サーバー ↔ SerpAPI
- HTTPS リクエスト
- JSON データの交換
- API キー認証
-
クライアント ↔ Gemini 2.5 Pro
- HTTPS リクエスト
- 関数呼び出しプロトコル
- API キー認証
エラー処理
この統合では、複数のレベルでエラーを処理します。
- 入力の検証
- API 通信エラー
- ツールの実行失敗
- レスポンスの解析エラー
- データの整形に関する問題
使用方法
クライアントを実行します。
python client.py
スクリプトは次の処理を行います。
- MCP フライト検索サーバープロセスを起動します
- フライト検索クエリを 2.5 Pro に送信します
- Gemini の関数呼び出しを使用して検索パラメーターを抽出します
- MCP ツールを介して検索を実行します
- 整形された結果を表示します
関連プロジェクト
このクライアントは mcp-flight-search ツールを使用します。ツールは次の場所で入手できます。
- GitHub: arjunprabhulal/mcp-flight-search
- PyPI: mcp-flight-search
作成者
AI/ML と生成 AI に関する記事をさらに読むには、Medium でフォローしてください:@arjun-prabhulal
ライセンス
このプロジェクトは MIT License の下でライセンスされています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。