arjunprabhulal/mcp-gemini-search
요약
이 프로젝트는 Model Context Protocol (MCP)을 활용하여 Google의 Gemini 2.5 Pro 모델이 자연어 사용자 쿼리로부터 항공편 검색에 필요한 매개변수를 자동으로 추출하고, 이를 로컬 MCP 서버 도구(`mcp-flight-search`)를 통해 실행하는 방법을 보여줍니다. 클라이언트는 stdio 통신 채널을 구축하여 사용자의 요청을 Gemini에게 전달하고, Gemini가 반환한 구조화된 함수 호출 결과를 받아 실제 검색 도구를 구동합니다. 이 과정을 통해 자연어 입력이 복잡한 외부 API 호출(SerpAPI를 통한 항공편 검색)로 매끄럽게 연결됩니다.
핵심 포인트
- Gemini 2.5 Pro의 함수 호출 기능을 활용하여 자연어 쿼리에서 구조화된 매개변수를 추출합니다.
- Model Context Protocol (MCP)을 사용하여 로컬 서버 프로세스(`mcp-flight-search`)와 통신하는 방법을 구현했습니다.
- stdio 통신 채널을 통해 클라이언트가 MCP 도구 서버에 연결하고 상호작용합니다.
- 전체 워크플로우는 사용자 쿼리 → Gemini 파라미터 추출 → MCP 도구 호출 → 외부 API(SerpAPI) 검색 결과 포맷팅 순서로 진행됩니다.
이 프로젝트는 Model Context Protocol (MCP)을 통해 mcp-flight-search 도구와 상호작용하기 위해 함수 호출 (function calling) 기능이 있는 Google의 Gemini 2.5 Pro를 사용하는 방법을 보여줍니다. 이 클라이언트 구현은 다음과 같은 방법을 보여줍니다:
-
stdio 통신을 사용하여 로컬 MCP 서버 프로세스 (
mcp-flight-search)에 연결 -
Gemini 2.5 Pro와 함께 자연어 프롬프트를 사용하여 항공편 검색 (예: "2025-05-05에 애틀랜타에서 라스베이거스로 가는 항공편을 찾아줘")
-
Gemini가 자연어 입력으로부터 올바른 함수 매개변수 (function parameters)를 자동으로 결정하도록 허용
-
MCP 도구를 사용하여 항공편 검색 실행
-
검색된 결과를 포맷팅된 형태로 표시
-
Gemini 2.5 Pro를 사용한 자연어 항공편 검색
-
함수 호출 (function calling)을 통한 자동 매개변수 추출
-
stdio를 통한
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를 위한 클라이언트 인터페이스 제공
- 함수 호출 (function calling) 기능 처리
- API 인증 및 요청 관리
-
mcp-sdk-python: Python용 Model Context Protocol (MCP) SDK.
- MCP 통신 관리를 위한
ClientSession제공 - 서버 프로세스 구성을 위한
StdioServerParameters포함 - 도구 등록 및 호출 처리
- MCP 통신 관리를 위한
-
mcp-flight-search: MCP로 구축된 항공편 검색 서비스.
- SerpAPI를 사용하여 항공편 검색 기능 구현
- 항공편 검색을 위한 MCP 준수 도구 제공
- stdio 및 HTTP 통신 모드 모두 처리
asyncio: 비동기 코드를 작성하기 위한 Python 내장 라이브러리
- 비동기 작업 및 코루틴 (coroutines) 관리
- 동시 I/O 작업 처리
- MCP 클라이언트-서버 통신을 위해 필요
json: Python 내장 JSON 인코더 및 디코더
- 항공편 검색 결과 파싱 (parsing)
- 출력을 위한 포맷팅
- 데이터 직렬화/역직렬화 (serialization/deserialization) 처리
저장소 복제 (Clone the Repository):
git clone https://github.com/arjunprabhulal/mcp-gemini-search.git cd mcp-gemini-search
의존성 설치 (Install Dependencies):
필요한 Python 라이브러리 설치
pip install -r requirements.txt
MCP 항공편 검색 도구 설치
pip install mcp-flight-search
환경 변수 설정 (Set Environment Variables):
export GEMINI_API_KEY="YOUR_GEMINI_API_KEY"
export SERP_API_KEY="YOUR_SERPAPI_API_KEY"
플레이스홀더 값을 실제 API 키로 교체하세요:
- Google AI Studio에서 Gemini API 키를 받으세요
- SerpApi에서 SerpAPI 키를 받으세요
이 프로젝트는 자연어 항공편 검색을 가능하게 하기 위해 여러 구성 요소를 통합합니다. 시스템 작동 방식은 다음과 같습니다:
사용자에서 클라이언트로 (User to Client)
-
사용자가 자연어 쿼리 제공 (예: "내일 애틀랜타에서 라스베이거스로 가는 항공편 찾아줘")
-
클라이언트 스크립트 (
client.py)가 입력을 처리
클라이언트에서 MCP 서버로 (Client to MCP Server)
-
클라이언트가 MCP 서버 프로세스 (
mcp-flight-search)를 시작 -
stdio 통신 채널 구축
-
사용 가능한 도구 및 해당 설명(description)을 가져옴
클라이언트에서 Gemini 2.5 Pro로 (Client to Gemini 2.5 Pro)
-
사용자의 쿼리를 전송
-
함수 호출 (function calling)을 위한 도구 설명 제공
-
추출된 파라미터가 포함된 구조화된 함수 호출을 수신
클라이언트에서 MCP 도구로 (Client to MCP Tool)
-
Gemini로부터 함수 호출 파라미터를 가져옴
-
파라미터와 함께 적절한 MCP 도구를 호출
-
응답 처리 수행
MCP 서버에서 SerpAPI로 (MCP Server to SerpAPI)
-
MCP 서버가 SerpAPI에 요청을 보냄
-
Google Flights 데이터 쿼리
-
항공편 정보 처리 및 포맷팅
입력 처리 (Input Processing)
사용자 쿼리 → 자연어 텍스트 → Gemini 2.5 Pro → 구조화된 파라미터
항공권 검색 (Flight Search)
Parameters → MCP Tool → SerpAPI → Flight Data → JSON Response
결과 처리 (Result Handling)
JSON Response → Parse → Format → Display to User
Client ↔ MCP Server
-
stdio 통신을 사용함
-
도구 등록 및 호출을 위해 MCP 프로토콜을 따름
-
비동기 작업 (Asynchronous operations)을 처리함
MCP Server ↔ SerpAPI
-
HTTPS 요청
-
JSON 데이터 교환
-
API 키 인증
Client ↔ Gemini 2.5 Pro
- HTTPS 요청
- 함수 호출 (Function calling) 프로토콜
- API 키 인증
이 통합 과정에는 여러 단계의 에러 처리 (Error handling)가 포함됩니다:
- 입력 유효성 검사 (Input validation)
- API 통신 오류
- 도구 실행 실패
- 응답 파싱 (Response parsing) 문제
- 데이터 포맷팅 문제
클라이언트 실행:
python client.py
스크립트는 다음을 수행합니다:
- MCP 항공권 검색 서버 프로세스를 시작함
- 항공권 검색 쿼리를 2.5 Pro로 전송함
- Gemini의 함수 호출 (Function calling)을 사용하여 검색 파라미터를 추출함
- MCP 도구를 통해 검색을 실행함
- 포맷팅된 결과를 표시함
이 클라이언트는 다음에서 사용할 수 있는 mcp-flight-search 도구를 사용합니다:
- GitHub: arjunprabhulal/mcp-flight-search
- PyPI: mcp-flight-search
AI/ML 및 생성형 AI (Generative AI)에 관한 더 많은 글을 보시려면 Medium에서 저를 팔로우하세요: @arjun-prabhulal
이 프로젝트는 MIT 라이선스 (MIT License) 하에 라이선스가 부여됩니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Claude Ecosystem의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기