统一搜索MCP服务器🔍
生产级 通过模型上下文协议(MCP)服务器,您可以综合搜索Google Scholar、Google Web Search和YouTube。
  ](https://smithery.ai/server/@JDeun/unified-search-mcp-server)
🚀 主要功能
核心搜索功能
- 🎓 谷歌学术:学术论文搜索(作者,年度过滤)
- 🌐 谷歌网络搜索:使用Google Custom Search API进行Web搜索
- 📺 YouTube搜索:视频搜索(长度、上传日期、对齐选项)
- 🔄 集成搜索:在所有源中同时搜索
企业功能
- 🔐 保安:API密钥加密、输入值验证、XSS/SQL注入防护
- 💾 分布式缓存:基于Redis的缓存和TTL管理
- ⚡ 速率限制:基于Redis后端的可配置rate limit
- 📊 监视:Prometheus度量、健康检查、结构化记录
- 🔄 复原力:重试逻辑、电路中断、优雅的性能下降
- 📝 审核日志记录:全面的审计跟踪以实现法规遵从性
📋 要求
- Python 3.11+
- Redis(可选,用于分布式功能)
- API密钥:
- Google Custom Search API(用于Web搜索) - 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 키와 설정 입력设置⚙ENT
环境变量
# 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密钥
- 谷歌自定义搜索API:
- 谷歌云控制台 连接 - 启用“Custom Search API” - 生成验证信息(API密钥) - cse.google.com在中创建Custom Search Engine
- YouTube数据API v3:
- 使用相同的Google Cloud Console项目 - 启用“YouTube Data API v3” - 使用相同的API密钥或创建新的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-mcpClaude桌面集成
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"
}
}
}
}📖 可用工具
统一搜索
同时搜索所有源。
results = await unified_search(
query="인공지능",
sources=["scholar", "web", "youtube"],
num_results=10
)搜索_谷歌_学者
搜索学术论文。
results = await search_google_scholar(
query="머신러닝",
author="Yann LeCun",
year_start=2020,
year_end=2024,
num_results=10
)search_google_web
搜索Web。
results = await search_google_web(
query="ChatGPT",
language="ko",
safe_search="medium",
num_results=10
)搜索youtube
搜索YouTube视频。
results = await search_youtube(
query="파이썬 튜토리얼",
video_duration="medium",
upload_date="month",
order="viewCount",
num_results=20
)获取作者信息
从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限制
- 用于法规遵从性的审核日志记录
- 跟踪CORS和请求ID
性能优化
- 基于Redis的分布式缓存
- HTTP客户端连接池
- 运行并行搜索
- 通过指数回退进行智能重试
- 用于外部API的电路中断器
📊 监视
健康检查端点
리소스: health://status度量端点
리소스: metrics://stats主要度量
- 搜索请求数量和延迟
- 缓存命中率
- API配额使用情况
- 每个源的错误率
- 违反Rate limit
🔒 保安
最佳实践
- 使用所有API密钥Fernet进行加密
- 验证输入以防止XSS/SQL注入
- 防止滥用的rate limit
- 无敏感数据的结构化记录
- 定期安全更新
法规遵从性
- 准备不保存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许可证-详细信息 许可证 文件引用
🙏 感谢的话
重要事项
API限制
- 谷歌网络搜索:100查询/天(免费方案)
- YouTube API:10000单位/天(约100次搜索)
- 谷歌学术:没有官方API,有rate限制
生产注意事项
- 使用Redis进行分布式部署
- 设置适当的API密钥轮换
- 监控Rate limit和配额
- 设置API错误的通知
- 定期备份设置
📞 支持
问题和问题:
- GitHub问题: 创建问题
- Smithery支持:部署问题
______________________________________________________________________
为MCP社区制作❤
