Unified Search MCP Server
Provides unified search capabilities across Google Scholar, Google Web Search, and YouTube.
Unified Search MCP Server 🔍
프로덕션 레벨 MCP (Model Context Protocol) 서버로 Google Scholar, Google Web Search, YouTube를 통합 검색할 수 있습니다.
🚀 주요 기능
핵심 검색 기능
- 🎓 Google Scholar: 학술 논문 검색 (저자, 연도 필터링)
- 🌐 Google Web Search: Google Custom Search API를 사용한 웹 검색
- 📺 YouTube Search: 동영상 검색 (길이, 업로드 날짜, 정렬 옵션)
- 🔄 통합 검색: 모든 소스에서 동시 검색
엔터프라이즈 기능
- 🔐 보안: API 키 암호화, 입력값 검증, XSS/SQL 인젝션 방지
- 💾 분산 캐싱: Redis 기반 캐싱 및 TTL 관리
- ⚡ Rate Limiting: Redis 백엔드 기반 설정 가능한 rate limit
- 📊 모니터링: Prometheus 메트릭, 헬스 체크, 구조화된 로깅
- 🔄 복원력: 재시도 로직, 서킷 브레이커, 우아한 성능 저하
- 📝 감사 로깅: 규정 준수를 위한 포괄적인 감사 추적
📋 요구 사항
- Python 3.11+
- Redis (선택사항, 분산 기능용)
- API 키:
- Google Custom Search API (웹 검색용)
- YouTube Data API v3 (YouTube 검색용)
🛠️ 설치
Smithery를 통한 빠른 설치
Smithery 플랫폼을 통해 직접 배포하면 자동으로 설정됩니다.
수동 설치
- 저장소 클론:
git clone https://github.com/JDeun/unified-search-mcp-server.git cd unified-search-mcp-server
- 가상 환경 생성:
python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate
- 의존성 설치:
pip install -r requirements.txt
- 환경 설정:
cp .env.example .env
.env 파일을 편집하여 API 키와 설정 입력
⚙️ 설정
환경 변수
API 키
GOOGLE_API_KEY=your-google-api-key GOOGLE_CUSTOM_SEARCH_ENGINE_ID=your-cse-id YOUTUBE_API_KEY=your-youtube-api-key
보안
MCP_ENCRYPTION_KEY=your-256-bit-key MCP_RATE_LIMIT_SECRET=your-secret
Redis (선택사항)
MCP_REDIS_URL=redis://localhost:6379/0
설정
MCP_ENV=production MCP_LOG_LEVEL=INFO MCP_CACHE_TTL=3600
API 키 발급 방법
- Google Custom Search API:
- Google Cloud Console 접속
- "Custom Search API" 활성화
- 인증 정보 생성 (API 키)
- cse.google.com에서 Custom Search Engine 생성
- YouTube Data API v3:
- 동일한 Google Cloud Console 프로젝트 사용
- "YouTube Data API v3" 활성화
- 동일한 API 키 사용 또는 새로 생성
🚀 사용법
서버 실행
개발 모드 (stdio)
python unified_search_server.py
프로덕션 모드 (HTTP)
python unified_search_server.py --transport streamable-http
커스텀 포트
MCP_PORT=8080 python unified_search_server.py --transport streamable-http
Docker 배포
이미지 빌드
docker build -t unified-search-mcp .
컨테이너 실행
docker run -p 8000:8000
-e GOOGLE_API_KEY=your-key
-e GOOGLE_CUSTOM_SEARCH_ENGINE_ID=your-cse
-e YOUTUBE_API_KEY=your-key
unified-search-mcp
Claude Desktop 통합
claude_desktop_config.json에 추가:
{ "mcpServers": { "unified-search": { "command": "python", "args": ["/path/to/unified_search_server.py"], "env": { "GOOGLE_API_KEY": "your-key", "GOOGLE_CUSTOM_SEARCH_ENGINE_ID": "your-cse", "YOUTUBE_API_KEY": "your-key" } } } }
📖 사용 가능한 도구
unified_search
모든 소스에서 동시에 검색합니다.
results = await unified_search( query="인공지능", sources=["scholar", "web", "youtube"], num_results=10 )
search_google_scholar
학술 논문을 검색합니다.
results = await search_google_scholar( query="머신러닝", author="Yann LeCun", year_start=2020, year_end=2024, num_results=10 )
search_google_web
웹을 검색합니다.
results = await search_google_web( query="ChatGPT", language="ko", safe_search="medium", num_results=10 )
search_youtube
YouTube 동영상을 검색합니다.
results = await search_youtube( query="파이썬 튜토리얼", video_duration="medium", upload_date="month", order="viewCount", num_results=20 )
get_author_info
Google Scholar에서 저자 정보를 가져옵니다.
info = await get_author_info("Geoffrey Hinton")
clear_cache
캐시된 검색 결과를 삭제합니다.
await clear_cache(source="web") # 또는 None으로 전체 삭제
get_api_usage_stats
API 사용량과 제한을 모니터링합니다.
stats = await get_api_usage_stats()
🏗️ 아키텍처
모듈식 설계
src/
├── config/ # 설정 및 보안
├── models/ # 데이터 모델 및 검증
├── services/ # 검색 서비스 구현
├── cache/ # 캐싱 레이어
├── utils/ # 유틸리티 (로깅, rate limiting)
├── monitoring/ # 메트릭 및 헬스 체크
└── mcp_server.py # 메인 서버 구현
보안 레이어
- 입력값 검증 및 살균
- API 키 암호화 저장
- 클라이언트/엔드포인트별 rate limiting
- 규정 준수를 위한 감사 로깅
- CORS 및 요청 ID 추적
성능 최적화
- Redis 기반 분산 캐싱
- HTTP 클라이언트 연결 풀링
- 동시 검색 실행
- 지수 백오프를 통한 스마트 재시도
- 외부 API용 서킷 브레이커
📊 모니터링
헬스 체크 엔드포인트
리소스: health://status
메트릭 엔드포인트
리소스: metrics://stats
주요 메트릭
- 검색 요청 수 및 지연 시간
- 캐시 히트율
- API 할당량 사용량
- 소스별 오류율
- Rate limit 위반
🔒 보안
모범 사례
- 모든 API 키 Fernet으로 암호화
- XSS/SQL 인젝션 방지를 위한 입력 검증
- 남용 방지를 위한 rate limiting
- 민감한 데이터 없는 구조화된 로깅
- 정기적인 보안 업데이트
규정 준수
- PII 저장 없는 GDPR 준비
- 모든 검색에 대한 감사 추적
- 설정 가능한 데이터 보존
- API 사용량 추적
🧪 테스트
테스트 실행:
pytest tests/ -v --cov=src
🤝 기여
- 저장소 포크
- 기능 브랜치 생성 (
git checkout -b feature/amazing) - 변경 사항 커밋 (
git commit -m 'Add feature') - 브랜치에 푸시 (
git push origin feature/amazing) - Pull Request 열기
📝 라이선스
MIT 라이선스 - 자세한 내용은 LICENSE 파일 참조
🙏 감사의 말
- FastMCP로 구축
- scholarly를 통한 Google Scholar 검색
- MCP 커뮤니티의 영감
⚠️ 중요 사항
API 제한
- Google Web Search: 100 쿼리/일 (무료 티어)
- YouTube API: 10,000 유닛/일 (약 100 검색)
- Google Scholar: 공식 API 없음, rate 제한 있음
프로덕션 고려사항
- 분산 배포를 위해 Redis 사용
- 적절한 API 키 로테이션 설정
- Rate limit 및 할당량 모니터링
- API 오류에 대한 알림 설정
- 정기적인 설정 백업
📞 지원
문제 및 질문:
- GitHub Issues: 이슈 생성
- Smithery 지원: 배포 관련 문제
MCP 커뮤니티를 위해 ❤️로 제작
Máy chủ liên quan
CoolPC MCP Server
Query computer component prices from Taiwan's CoolPC website to generate AI-assisted price quotes.
MCP Market Russia
Search 1000+ Russian construction companies and real estate agencies for AI agents
Kagi Search
Web search using the Kagi Search API
Image Sorcery
At Sunrise Apps, we believe AI agents should be limitless, especially when it comes to visual data. We created ImageSorcery to bridge the critical gap in AI's ability to interact with and manipulate images directly, all while upholding the highest standards of privacy and security.
Weather MCP Server
Provides real-time weather forecasts and alerts using the National Weather Service API.
Ebook MCP Service
Access and search EPUB ebook collections using semantic vector search.
Mastra Docs Server
Provides AI assistants with direct access to Mastra.ai's complete knowledge base.
Expert Registry MCP Server
An MCP server for expert discovery, registration, and context injection, utilizing vector and graph databases.
Local RAG
Privacy-first local RAG server for semantic document search without external APIs
MTG MCP Servers
Magic: The Gathering (MTG) servers for deck management and card search using the MCP protocol.