이 프로젝트는 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-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)
클라이언트에서 MCP 서버로 (Client to MCP Server)
클라이언트에서 Gemini 2.5 Pro로 (Client to Gemini 2.5 Pro)
클라이언트에서 MCP 도구로 (Client to MCP Tool)
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
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) 하에 라이선스가 부여됩니다.