mcpField
G
Gemini Function Calling + Model Context Protocol(MCP) Flight Search

Gemini Function Calling + Model Context Protocol(MCP) Flight Search

本地服务
github.comAI 与智能体5611 周前更新

关于 Gemini Function Calling + Model Context Protocol(MCP) Flight Search

该项目演示如何让 Gemini 2.5 Pro 通过函数调用,将自然语言航班查询转换为 mcp-flight-search 工具的调用。它面向希望把 Gemini 与 MCP 结合使用的 Python 开发者,使用 stdio 连接本地 MCP 服务。

主要功能

  1. 01自然语言航班搜索
  2. 02通过函数调用自动提取参数
  3. 03基于 stdio 连接 mcp-flight-search
  4. 04格式化输出搜索结果
  5. 05通过环境变量配置 API 密钥

适用场景

  1. 01用自然语言查询两地之间的航班
  2. 02学习 Gemini 函数调用与 MCP 客户端的集成方式

MCP 相关

该项目是一个 MCP 客户端示例,启动本地 mcp-flight-search 进程,获取其工具列表并通过 stdio 调用这些工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Gemini 函数调用 + 模型上下文协议(MCP)航班搜索

示例输出

架构

本项目演示如何使用具备函数调用功能的 Google Gemini 2.5 Pro,通过模型上下文协议(MCP)与 mcp-flight-search 工具交互。此客户端实现展示了如何:

  1. 通过 stdio 通信连接到本地 MCP 服务进程(mcp-flight-search)
  2. 使用 Gemini 2.5 Pro 的自然语言提示词搜索航班(例如,“查找 2025-05-05 从亚特兰大飞往拉斯维加斯的航班”)
  3. 让 Gemini 根据自然语言输入自动确定正确的函数参数
  4. 使用 MCP 工具执行航班搜索
  5. 显示格式化的搜索结果

功能

  • 使用 Gemini 2.5 Pro 以自然语言搜索航班
  • 通过函数调用自动提取参数
  • 通过 stdio 与 mcp-flight-search 工具集成
  • 以格式化的 JSON 输出航班结果
  • 基于环境变量配置 API 密钥

先决条件

运行此客户端之前,需要准备:

  1. Python 3.7+
  2. 用于 Gemini 的 Google AI Studio API 密钥
  3. SerpAPI 密钥(航班搜索工具使用)
  4. 已安装 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-flight-search:使用 MCP 构建的航班搜索服务。

    • 使用 SerpAPI 实现航班搜索功能
    • 提供符合 MCP 规范的航班搜索工具
    • 支持 stdio 和 HTTP 两种通信模式
  • asyncio:Python 内置的异步代码编写库。

    • 管理异步操作和协程
    • 处理并发 I/O 操作
    • MCP 客户端与服务端通信所必需
  • json:Python 内置的 JSON 编码器和解码器。

    • 解析航班搜索结果
    • 格式化输出以供显示
    • 处理数据序列化和反序列化

设置

  1. 克隆仓库:

    git clone https://github.com/arjunprabhulal/mcp-gemini-search.git
    cd mcp-gemini-search
    
  2. 安装依赖项:

    # 安装所需的 Python 库
    pip install -r requirements.txt
    # 安装 MCP 航班搜索工具
    pip install mcp-flight-search
    
  3. 设置环境变量:

    export GEMINI_API_KEY="YOUR_GEMINI_API_KEY"
    export SERP_API_KEY="YOUR_SERPAPI_API_KEY"
    

    将占位值替换为实际的 API 密钥:

架构

本项目集成了多个组件,以支持通过自然语言搜索航班。系统的工作方式如下:

组件交互
  1. 用户到客户端

    • 用户提供自然语言查询(例如:“查找明天从亚特兰大飞往拉斯维加斯的航班”)
    • 客户端脚本(client.py)处理输入
  2. 客户端到 MCP 服务

    • 客户端启动 MCP 服务进程(mcp-flight-search)
    • 建立 stdio 通信通道
    • 获取可用工具及其描述
  3. 客户端到 Gemini 2.5 Pro

    • 发送用户的查询
    • 提供工具描述以供函数调用
    • 接收包含提取参数的结构化函数调用
  4. 客户端到 MCP 工具

    • 获取 Gemini 提供的函数调用参数
    • 使用这些参数调用相应的 MCP 工具
    • 处理响应
  5. MCP 服务到 SerpAPI

    • MCP 服务向 SerpAPI 发送请求
    • 查询 Google Flights 数据
    • 处理并整理航班信息
数据流
  1. 输入处理

    User Query → Natural Language Text → Gemini 2.5 Pro → Structured Parameters
    
  2. 航班搜索

    Parameters → MCP Tool → SerpAPI → Flight Data → JSON Response
    
  3. 结果处理

    JSON Response → Parse → Format → Display to User
    
通信协议
  1. 客户端 ↔ MCP 服务

    • 使用 stdio 通信
    • 遵循 MCP 协议进行工具注册和调用
    • 处理异步操作
  2. MCP 服务 ↔ SerpAPI

    • HTTPS 请求
    • JSON 数据交换
    • API 密钥身份验证
  3. 客户端 ↔ Gemini 2.5 Pro

    • HTTPS 请求
    • 函数调用协议
    • API 密钥身份验证
错误处理

该集成在多个层面包含错误处理:

  • 输入验证
  • API 通信错误
  • 工具执行失败
  • 响应解析问题
  • 数据格式问题

用法

运行客户端:

python client.py

该脚本将:

  1. 启动 MCP 航班搜索服务进程
  2. 将你的航班搜索查询发送给 2.5 Pro
  3. 使用 Gemini 的函数调用提取搜索参数
  4. 通过 MCP 工具执行搜索
  5. 显示格式化后的结果

相关项目

此客户端使用 mcp-flight-search 工具,该工具可在以下位置获取:

作者

如需阅读更多关于 AI/ML 和生成式 AI 的文章,请在 Medium 上关注我:@arjun-prabhulal

许可证

本项目采用 MIT 许可证。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。