使用说明
双子座函数调用 + 模型上下文协议(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通信通道
- 检索可用工具及其描述
- 客户端启动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 翻译为中文是:“arjunprabhulal/机票搜索(MCP)”。不过,这里的“MCP”可能是一个特定项目、系统或应用的缩写,具体含义需要根据上下文来确定。在没有具体上下文的情况下,我们将其直译为“机票搜索(MCP)”,以保留原缩写
- PyPI:(Python Package Index,即Python包索引) MCP航班查询
作者
要了解更多关于人工智能/机器学习和生成式人工智能的文章,请在Medium上关注我: @阿琼·普拉布胡拉尔(注:这是根据英文名字的音译,实际翻译可能因具体人名翻译习惯而异)
许可证
此项目遵循MIT许可证进行授权。
