关于 Gemini Function Calling + Model Context Protocol(MCP) Flight Search
该项目演示如何让 Gemini 2.5 Pro 通过函数调用,将自然语言航班查询转换为 mcp-flight-search 工具的调用。它面向希望把 Gemini 与 MCP 结合使用的 Python 开发者,使用 stdio 连接本地 MCP 服务。
主要功能
- 01自然语言航班搜索
- 02通过函数调用自动提取参数
- 03基于 stdio 连接 mcp-flight-search
- 04格式化输出搜索结果
- 05通过环境变量配置 API 密钥
适用场景
- 01用自然语言查询两地之间的航班
- 02学习 Gemini 函数调用与 MCP 客户端的集成方式
MCP 相关
该项目是一个 MCP 客户端示例,启动本地 mcp-flight-search 进程,获取其工具列表并通过 stdio 调用这些工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Gemini 函数调用 + 模型上下文协议(MCP)航班搜索


本项目演示如何使用具备函数调用功能的 Google Gemini 2.5 Pro,通过模型上下文协议(MCP)与 mcp-flight-search 工具交互。此客户端实现展示了如何:
- 通过 stdio 通信连接到本地 MCP 服务进程(
mcp-flight-search) - 使用 Gemini 2.5 Pro 的自然语言提示词搜索航班(例如,“查找 2025-05-05 从亚特兰大飞往拉斯维加斯的航班”)
- 让 Gemini 根据自然语言输入自动确定正确的函数参数
- 使用 MCP 工具执行航班搜索
- 显示格式化的搜索结果
功能
- 使用 Gemini 2.5 Pro 以自然语言搜索航班
- 通过函数调用自动提取参数
- 通过 stdio 与
mcp-flight-search工具集成 - 以格式化的 JSON 输出航班结果
- 基于环境变量配置 API 密钥
先决条件
运行此客户端之前,需要准备:
- Python 3.7+
- 用于 Gemini 的 Google AI Studio API 密钥
- SerpAPI 密钥(航班搜索工具使用)
- 已安装
mcp-flight-search包
依赖项
本项目依赖多个 Python 包:
-
google-generativeai:Google 官方 Python 库,用于访问 Gemini 2.5 Pro 及其他 Google AI 模型。
- 提供 Gemini 2.5 Pro 的客户端接口
- 支持函数调用功能
- 管理 API 身份验证和请求
-
mcp-sdk-python:适用于 Python 的模型上下文协议(MCP)SDK。
- 提供用于管理 MCP 通信的
ClientSession - 包含用于配置服务进程的
StdioServerParameters - 处理工具注册和调用
- 提供用于管理 MCP 通信的
-
mcp-flight-search:使用 MCP 构建的航班搜索服务。
- 使用 SerpAPI 实现航班搜索功能
- 提供符合 MCP 规范的航班搜索工具
- 支持 stdio 和 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 密钥:
- 从 Google AI Studio 获取 Gemini API 密钥
- 从 SerpApi 获取 SerpAPI 密钥
架构
本项目集成了多个组件,以支持通过自然语言搜索航班。系统的工作方式如下:
组件交互
-
用户到客户端
- 用户提供自然语言查询(例如:“查找明天从亚特兰大飞往拉斯维加斯的航班”)
- 客户端脚本(
client.py)处理输入
-
客户端到 MCP 服务
- 客户端启动 MCP 服务进程(
mcp-flight-search) - 建立 stdio 通信通道
- 获取可用工具及其描述
- 客户端启动 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 服务
- 使用 stdio 通信
- 遵循 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 许可证。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。