双子座函数调用 + 模型上下文协议(MCP)航班搜索
这个项目展示了如何使用具备函数调用功能的Google Gemini 2.5 Pro与(系统/其他程序)进行交互 mcp-flight-search 通过模型上下文协议(MCP)使用工具。此客户端实现展示了如何:
- 连接到本地MCP服务器进程(
mcp-flight-search) 使用stdio通信 - 使用自然语言提示与Gemini 2.5 Pro一起搜索航班(例如,“查找2025年5月5日从亚特兰大到拉斯维加斯的航班”)
- 让Gemini自动从自然语言输入中确定正确的函数参数
- 使用MCP工具执行航班搜索
- 显示搜索结果的格式化内容
特点/特性
- 使用Gemini 2.5 Pro进行自然语言航班搜索
- 通过函数调用自动提取参数
- 与……的集成
mcp-flight-search通过标准输入输出(stdio)使用的工具 - 航班结果的格式化JSON输出
- 基于环境的API密钥配置
先决条件
在运行此客户端之前,您需要:
- Python 3.7+
- 一个用于Gemini的Google AI Studio API密钥
- 一个SerpAPI密钥(用于航班搜索工具)
- 这个(或“该”)
mcp-flight-search软件包已安装
依赖项
这个项目依赖于几个Python包:
- 谷歌生成式AI谷歌官方Python库,用于访问Gemini 2.5 Pro及其他谷歌AI模型。
- 为Gemini 2.5 Pro提供客户端接口 - 处理函数调用功能 - 管理API认证和请求
- MCP-SDK-Python(注:这里的“MCP”可能代表某个特定的模块、平台或服务的缩写,具体含义需根据上下文确定,但在此直接按原样翻译)Python的模型上下文协议(MCP)软件开发工具包(SDK)。
- 提供 ClientSession 用于管理MCP通信 - 包括 StdioServerParameters 用于配置服务器进程 - 处理工具注册和调用
- MCP航班查询一个基于MCP构建的航班查询服务。
- 使用SerpAPI实现航班搜索功能 - 提供符合MCP标准的航班搜索工具 - 支持stdio和HTTP两种通信模式
- \
asyncio\翻译为中文是“异步I/O(输入/输出)”。它是Python中的一个库,用于编写并发代码,使用协程(coroutines)来实现异步编程。Python内置的用于编写异步代码的库。
- 管理异步操作和协程 - 处理并发I/O操作 - MCP客户端-服务器通信所需
- JSON(JavaScript Object Notation)Python内置的JSON编码器和解码器。
- 解析航班搜索结果 - 输出格式以供显示 - 处理数据的序列化/反序列化
设置
- 克隆仓库:
git clone https://github.com/arjunprabhulal/mcp-gemini-search.git
cd mcp-gemini-search- 安装依赖项:
# Install required Python libraries
pip install -r requirements.txt
# Install the MCP flight search tool
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(可译为“搜索引擎结果页面API”)
建筑学
这个项目整合了多个组件,以实现自然语言航班搜索功能。以下是系统的工作原理:
组件交互
- 用户到客户端
- 用户提供自然语言查询(例如,“查找明天从亚特兰大飞往拉斯维加斯的航班”) - 客户端脚本(client.py) 处理输入
- 客户端到MCP服务器
- 客户端启动MCP服务器进程(mcp-flight-search) - 建立stdio通信通道 - 检索可用工具及其描述
- 客户转向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 翻译为中文是:“arjunprabhulal/机票搜索(MCP)”。不过,这里的“MCP”可能是一个特定项目、系统或应用的缩写,具体含义需要根据上下文来确定。在没有具体上下文的情况下,我们将其直译为“机票搜索(MCP)”,以保留原缩写
- PyPI:(Python Package Index,即Python包索引) MCP航班查询
作者
要了解更多关于人工智能/机器学习和生成式人工智能的文章,请在Medium上关注我: @阿琼·普拉布胡拉尔(注:这是根据英文名字的音译,实际翻译可能因具体人名翻译习惯而异)
许可证
此项目遵循MIT许可证进行授权。
