搜索融合MCP服务器是一个高可用性的多引擎搜索聚合服务器,提供智能故障转移、统一API和针对大语言模型(LLM)优化的内容处理功能。它集成了多个搜索引擎,具备基于优先级的智能路由和自动故障转移机制。
本次版本进行了重大的并发性能升级!增强了多线程支持,具备线程安全操作、智能连接池和基于信号量的请求限制功能。现在支持50个以上的并发搜索,且不会出现竞态条件或数据损坏的问题!
pip install search-fusion-mcp
git clone https://github.com/sailaoda/search-fusion-mcp.git
cd search-fusion-mcp
pip install -e .
搜索融合MCP服务器
├── 🔧 配置管理器 # 处理MCP环境变量
├── 🔍 搜索管理器 # 多引擎编排,具备并发控制
├── ⚡ 并发层 # 线程安全操作与性能优化
│ ├── 异步锁保护 # 线程安全的状态更新
│ ├── HTTP连接池 # 具有连接限制的共享客户端
│ ├── 信号量控制 # 并发请求限制(最多30个)
│ └── 超时管理 # 60秒超时保护
├── 🚀 引擎实现 # 各个搜索引擎
│ ├── 谷歌搜索 # 谷歌自定义搜索
│ ├── Serper搜索 # Serper API
│ ├── Jina搜索 # Jina AI搜索
│ ├── DuckDuckGo搜索 # DuckDuckGo
│ ├── Exa搜索 # Exa AI
│ ├── 必应搜索 # 必应API
│ └── 百度搜索 # 百度API
├── 🛠️ 高级抓取器 # 多方法网页抓取
└── 📡 MCP服务器 # 集成FastMCP
搜索融合现在具备受concurrent-browser-mcp启发的智能代理自动检测功能,提供零配置的无缝代理支持!
HTTP_PROXY、HTTPS_PROXY、ALL_PROXY直接运行 - 代理将自动检测:
search-fusion-mcp
手动覆盖(如有需要):
env HTTP_PROXY="http://your-proxy:port" search-fusion-mcp
🔍 检查环境变量...
🔍 扫描代理端口:[7890, 1087, 8080, ...]
✅ 检测到本地代理端口:7890
🌐 自动检测到的代理:http://127.0.0.1:7890
| 特性 | Search-Fusion | concurrent-browser-mcp |
|---|---|---|
| 检测方法 | ✅ 环境变量 → 端口扫描 → 系统代理 | ✅ 相同策略 |
| 端口列表 | ✅ 7个常见端口 | ✅ 7个常见端口 |
| 连接测试 | ✅ 套接字测试 | ✅ 套接字测试 |
| 超时时间 | ✅ 3秒 | ✅ 3秒 |
| macOS支持 | ✅ networksetup | ✅ networksetup |
| 语言 | Python | TypeScript |
搜索融合使用纯MCP环境变量配置,无需配置文件。
MCP客户端配置(从PyPI安装):
{
"mcp": {
"mcpServers": {
"search-fusion": {
"command": "search-fusion-mcp",
"env": {
"GOOGLE_API_KEY": "your_google_api_key",
"GOOGLE_CSE_ID": "your_google_cse_id",
"SERPER_API_KEY": "your_serper_api_key",
"JINA_API_KEY": "your_jina_api_key",
"EXA_API_KEY": "your_exa_api_key",
"BING_API_KEY": "your_bing_api_key",
"BAIDU_API_KEY": "your_baidu_api_key",
"BAIDU_SECRET_KEY": "your_baidu_secret_key"
}
}
}
}
}
MCP客户端配置(从源码安装):
{
"mcp": {
"mcpServers": {
"search-fusion": {
"command": "python",
"args": ["-m", "src.main"],
"cwd": "/path/to/your/search-fusion-mcp",
"env": {
"GOOGLE_API_KEY": "your_google_api_key",
"GOOGLE_CSE_ID": "your_google_cse_id",
"SERPER_API_KEY": "your_serper_api_key",
"JINA_API_KEY": "your_jina_api_key",
"EXA_API_KEY": "your_exa_api_key",
"BING_API_KEY": "your_bing_api_key",
"BAIDU_API_KEY": "your_baidu_api_key",
"BAIDU_SECRET_KEY": "your_baidu_secret_key"
}
}
}
}
}
| 搜索引擎 | 环境变量 | 是否必需 | 描述 | 获取API密钥 |
|---|---|---|---|---|
| 谷歌 | GOOGLE_API_KEYGOOGLE_CSE_ID |
两者都需要 | 谷歌自定义搜索API | 获取API密钥 |
| Serper | SERPER_API_KEY |
需要API密钥 | Serper谷歌搜索API | 获取API密钥 |
| Jina AI | JINA_API_KEY |
需要API密钥 | Jina AI搜索API | 获取API密钥 |
| 必应 | BING_API_KEY |
需要API密钥 | 微软必应搜索API | 获取API密钥 |
| 百度 | BAIDU_API_KEYBAIDU_SECRET_KEY |
两者都需要 | 百度搜索API | 获取API密钥 |
| Exa | EXA_API_KEY |
需要API密钥 | Exa AI搜索API | 获取API密钥 |
| DuckDuckGo | 无需 | - | 免费搜索,无需API密钥 | - |
替代变量名:
# 谷歌
GOOGLE_SEARCH_API_KEY # 替代GOOGLE_API_KEY
GOOGLE_SEARCH_CSE_ID # 替代GOOGLE_CSE_ID
# Serper
SERPER_SEARCH_API_KEY # 替代SERPER_API_KEY
# 其他遵循类似模式...
搜索引擎会自动进行优先级排序:
search执行网页搜索,具备智能引擎选择和故障转移功能。
参数:
query(必需):搜索查询词num_results(默认值:10):返回的结果数量engine(默认值:"auto"):引擎偏好
"auto":自动选择引擎(推荐)"google":优先使用谷歌搜索"serper":优先使用Serper搜索"jina":优先使用Jina AI搜索"duckduckgo":优先使用DuckDuckGo"exa":优先使用Exa搜索"bing":优先使用必应搜索"baidu":优先使用百度搜索fetch_url抓取并处理网页内容,具备智能分页和多方法回退功能。
参数:
url(必需):要抓取的网页URLuse_jina(默认值:true):是否优先使用Jina阅读器获取针对LLM优化的内容with_image_alt(默认值:false):是否为图像生成替代文本max_length(默认值:50000):每页的最大内容长度(如果超过则自动分页)page_number(默认值:1):从先前抓取的内容中检索特定页面特性:
get_available_engines获取所有搜索引擎的当前状态和可用性。
search_wikipedia搜索维基百科文章,查找实体、人物、地点、概念等。
参数:
entity(必需):要搜索的实体first_sentences(默认值:10):返回的句子数量(0表示返回完整内容)search_archived_webpage使用时光机搜索网站的存档版本。
参数:
url(必需):要搜索的网站URLyear(可选):目标年份month(可选):目标月份day(可选):目标日期# 自动选择引擎
result = await search("2024年人工智能趋势")
# 优先选择特定引擎
result = await search("机器学习", engine="google")
# 带智能分页的抓取
result = await fetch_url("https://example.com/long-article")
# 如果内容已分页,获取额外页面
if result.get("is_paginated"):
page_2 = await get_page(result["page_id"], 2)
# 获取维基百科摘要
result = await search_wikipedia("Python编程语言")
# 获取完整文章
result = await search_wikipedia("量子计算", first_sentences=0)
git clone https://github.com/sailaoda/search-fusion-mcp.git
cd search-fusion-mcp
pip install -r requirements.txt
pip install -e .
如需详细的配置说明,请参阅 MCP_CONFIG_GUIDE.md。
测试性能(v3.0.0+):
推荐限制:
本项目采用MIT许可证 - 详情请参阅 LICENSE 文件。
请始终实施适当的延迟并遵守速率限制,以确保可持续使用。
为MCP社区精心打造 ❤️