Unified Search MCP Server
Proporciona capacidades de búsqueda unificada en Google Scholar, Google Web Search y YouTube.
GitHub
3
Prueba este MCPPatrocinadoDocumentación
Unified Search MCP Server 🔍
Servidor MCP (Model Context Protocol) de nivel de producción que integra búsquedas en Google Scholar, Google Web Search y YouTube.
🚀 Características principales
Funciones de búsqueda principales
- 🎓 Google Scholar: Búsqueda de artículos académicos (filtrado por autor, año)
- 🌐 Google Web Search: Búsqueda web mediante Google Custom Search API
- 📺 YouTube Search: Búsqueda de videos (duración, fecha de publicación, opciones de orden)
- 🔄 Búsqueda integrada: Búsqueda simultánea en todas las fuentes
Funciones empresariales
- 🔐 Seguridad: Cifrado de claves API, validación de entradas, prevención de XSS/inyección SQL
- 💾 Caché distribuida: Caché basada en Redis y gestión de TTL
- ⚡ Limitación de velocidad: Límites de velocidad configurables con backend Redis
- 📊 Monitoreo: Métricas Prometheus, comprobaciones de salud, registro estructurado
- 🔄 Resiliencia: Lógica de reintentos, interruptor de circuito, degradación elegante
- 📝 Registro de auditoría: Seguimiento de auditoría integral para cumplimiento normativo
📋 Requisitos
- Python 3.11+
- Redis (opcional, para funciones distribuidas)
- Claves API:
- Google Custom Search API (para búsqueda web)
- YouTube Data API v3 (para búsqueda en YouTube)
🛠️ Instalación
Instalación rápida mediante Smithery
Se configura automáticamente al implementar directamente a través de la plataforma Smithery.
Instalación manual
- Clonar el repositorio:
git clone https://github.com/JDeun/unified-search-mcp-server.git
cd unified-search-mcp-server
- Crear el entorno virtual:
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
- Instalar dependencias:
pip install -r requirements.txt
- Configurar el entorno:
cp .env.example .env
# .env 파일을 편집하여 API 키와 설정 입력
⚙️ Configuración
Variables de entorno
# 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
Cómo obtener claves API
- Google Custom Search API:
- Acceder a Google Cloud Console
- Activar "Custom Search API"
- Crear credenciales (clave API)
- Crear un motor de búsqueda personalizado en cse.google.com
- YouTube Data API v3:
- Usar el mismo proyecto de Google Cloud Console
- Activar "YouTube Data API v3"
- Usar la misma clave API o crear una nueva
🚀 Uso
Ejecutar el servidor
# 개발 모드 (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
Implementación con 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
Integración con Claude Desktop
Agregar a 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"
}
}
}
}
📖 Herramientas disponibles
unified_search
Busca simultáneamente en todas las fuentes.
results = await unified_search(
query="인공지능",
sources=["scholar", "web", "youtube"],
num_results=10
)
search_google_scholar
Busca artículos académicos.
results = await search_google_scholar(
query="머신러닝",
="Yann LeCun",
year_start=2020,
year_end=2024,
num_results=10
)
search_google_web
Busca en la web.
results = await search_google_web(
query="ChatGPT",
language="ko",
safe_search="medium",
num_results=10
)
search_youtube
Busca videos en YouTube.
results = await search_youtube(
query="파이썬 튜토리얼",
video_duration="medium",
upload_date="month",
order="viewCount",
num_results=20
)
get_author_info
Obtiene información del autor en Google Scholar.
info = await get_author_info("Geoffrey Hinton")
clear_cache
Elimina los resultados de búsqueda almacenados en caché.
await clear_cache(source="web") # 또는 None으로 전체 삭제
get_api_usage_stats
Monitorea el uso y los límites de la API.
stats = await get_api_usage_stats()
🏗️ Arquitectura
Diseño modular
src/
├── config/ # 설정 및 보안
├── models/ # 데이터 모델 및 검증
├── services/ # 검색 서비스 구현
├── cache/ # 캐싱 레이어
├── utils/ # 유틸리티 (로깅, rate limiting)
├── monitoring/ # 메트릭 및 헬스 체크
└── mcp_server.py # 메인 서버 구현
Capa de seguridad
- Validación y saneamiento de entradas
- Almacenamiento cifrado de claves API
- Limitación de velocidad por cliente/endpoint
- Registro de auditoría para cumplimiento normativo
- CORS y seguimiento de ID de solicitud
Optimización del rendimiento
- Caché distribuida basada en Redis
- Agrupación de conexiones del cliente HTTP
- Ejecución de búsquedas concurrentes
- Reintentos inteligentes con retroceso exponencial
- Interruptor de circuito para APIs externas
📊 Monitoreo
Endpoint de comprobación de salud
리소스: health://status
Endpoint de métricas
리소스: metrics://stats
Métricas principales
- Número de solicitudes de búsqueda y latencia
- Tasa de aciertos de caché
- Uso de cuota de API
- Tasa de errores por fuente
- Violaciones de límite de velocidad
🔒 Seguridad
Buenas prácticas
- Todas las claves API cifradas con Fernet
- Validación de entradas para prevenir XSS/inyección SQL
- Limitación de velocidad para prevenir abusos
- Registro estructurado sin datos sensibles
- Actualizaciones de seguridad periódicas
Cumplimiento normativo
- Preparado para GDPR sin almacenamiento de PII
- Seguimiento de auditoría para todas las búsquedas
- Retención de datos configurable
- Seguimiento del uso de API
🧪 Pruebas
Ejecutar pruebas:
pytest tests/ -v --cov=src
🤝 Contribuciones
- Hacer fork del repositorio
- Crear una rama de funcionalidad (
git checkout -b feature/amazing) - Confirmar los cambios (
git commit -m 'Add feature') - Hacer push a la rama (
git push origin feature/amazing) - Abrir un Pull Request
📝 Licencia
Licencia MIT: consulte el archivo LICENSE para más detalles
🙏 Agradecimientos
- Construido con FastMCP
- Búsqueda en Google Scholar mediante scholarly
- Inspiración de la comunidad MCP
⚠️ Notas importantes
Límites de API
- Google Web Search: 100 consultas/día (nivel gratuito)
- YouTube API: 10,000 unidades/día (aproximadamente 100 búsquedas)
- Google Scholar: sin API oficial, con límites de velocidad
Consideraciones de producción
- Usar Redis para implementaciones distribuidas
- Configurar una rotación adecuada de claves API
- Monitorear límites de velocidad y cuotas
- Configurar alertas para errores de API
- Realizar copias de seguridad periódicas de la configuración
📞 Soporte
Problemas y preguntas:
- GitHub Issues: Crear un issue
- Soporte de Smithery: problemas relacionados con la implementación
Hecho con ❤️ para la comunidad MCP