Search Fusion Mcp

Search Fusion Mcp

🚀 🔍 搜索融合MCP服务器

搜索融合MCP服务器是一个高可用性的多引擎搜索聚合服务器,提供智能故障转移、统一API和针对大语言模型(LLM)优化的内容处理功能。它集成了多个搜索引擎,具备基于优先级的智能路由和自动故障转移机制。

🔔 v3.0.0版本新特性:

本次版本进行了重大的并发性能升级!增强了多线程支持,具备线程安全操作、智能连接池和基于信号量的请求限制功能。现在支持50个以上的并发搜索,且不会出现竞态条件或数据损坏的问题!

🚀 快速开始

安装

选项1:从PyPI安装(推荐)

pip install search-fusion-mcp

选项2:从源码安装

git clone https://github.com/sailaoda/search-fusion-mcp.git
cd search-fusion-mcp
pip install -e .

✨ 主要特性

🔄 多引擎集成

  • 谷歌搜索 - 使用API密钥可获得卓越性能
  • Serper搜索 - 具备高级功能的谷歌搜索替代方案
  • Jina AI搜索 - 由人工智能驱动,具备智能内容处理能力
  • DuckDuckGo - 免费搜索,无需API密钥
  • Exa搜索 - 人工智能驱动的语义搜索
  • 必应搜索 - 微软搜索API
  • 百度搜索 - 中文搜索引擎

🚀 高级特性

  • 智能故障转移 - 在引擎故障或达到速率限制时自动切换引擎
  • 基于优先级的路由 - 根据可用性和性能智能选择引擎
  • 统一响应格式 - 所有引擎的响应均采用一致的JSON结构
  • 速率限制保护 - 内置冷却机制
  • 🔄 高并发支持 - 通过连接池实现线程安全操作
  • ⚡ 性能优化 - 通过基于信号量的并发控制实现异步操作
  • 针对LLM优化的内容 - 支持分页的高级网页内容抓取
  • 维基百科集成 - 专用的维基百科搜索工具
  • 时光机 - 历史网页存档搜索
  • 环境变量配置 - 纯MCP配置,无需配置文件
  • 🌐 增强的代理自动检测 - 零配置的智能代理检测

📊 监控与分析

  • 实时监控引擎状态
  • 跟踪成功率
  • 错误处理与恢复
  • 性能指标监控

⚡ 并发与性能

  • 线程安全操作 - 所有引擎统计信息和状态更新均受异步锁保护
  • 连接池 - 共享HTTP客户端,可配置连接限制(最大100个连接)
  • 信号量控制 - 并发请求限制(最多30个同时搜索)
  • 超时保护 - 60秒搜索超时,防止请求堆积
  • 资源管理 - 通过自动清理连接实现高效内存使用
  • 竞态条件预防 - 在搜索管理器初始化时采用双重检查锁定

🏗️ 架构

搜索融合MCP服务器
├── 🔧 配置管理器     # 处理MCP环境变量
├── 🔍 搜索管理器     # 多引擎编排,具备并发控制
├── ⚡ 并发层         # 线程安全操作与性能优化
│   ├── 异步锁保护    # 线程安全的状态更新
│   ├── HTTP连接池    # 具有连接限制的共享客户端
│   ├── 信号量控制    # 并发请求限制(最多30个)
│   └── 超时管理      # 60秒超时保护
├── 🚀 引擎实现       # 各个搜索引擎
│   ├── 谷歌搜索      # 谷歌自定义搜索
│   ├── Serper搜索    # Serper API
│   ├── Jina搜索      # Jina AI搜索
│   ├── DuckDuckGo搜索 # DuckDuckGo
│   ├── Exa搜索       # Exa AI
│   ├── 必应搜索      # 必应API
│   └── 百度搜索      # 百度API
├── 🛠️ 高级抓取器     # 多方法网页抓取
└── 📡 MCP服务器      # 集成FastMCP

🌐 增强的代理自动检测(v2.0新特性!)

搜索融合现在具备受concurrent-browser-mcp启发的智能代理自动检测功能,提供零配置的无缝代理支持!

✨ 三层检测策略

  1. 环境变量 - 优先级最高,检查HTTP_PROXYHTTPS_PROXYALL_PROXY
  2. 端口扫描 - 使用套接字连接测试扫描常见代理端口
  3. 系统代理 - 检测操作系统级别的代理设置(支持macOS)

🔍 支持的代理端口(按优先级排序)

  • 7890 - Clash默认端口
  • 1087 - V2Ray常用端口
  • 8080 - 通用HTTP代理端口
  • 3128 - Squid代理默认端口
  • 8888 - 其他代理软件端口
  • 10809 - V2Ray SOCKS端口
  • 20171 - 额外的代理端口

🚀 零配置使用方法

直接运行 - 代理将自动检测:

search-fusion-mcp

手动覆盖(如有需要):

env HTTP_PROXY="http://your-proxy:port" search-fusion-mcp

📊 检测过程

🔍 检查环境变量...
🔍 扫描代理端口:[7890, 1087, 8080, ...]
✅ 检测到本地代理端口:7890
🌐 自动检测到的代理:http://127.0.0.1:7890

🆚 与concurrent-browser-mcp的比较

特性 Search-Fusion concurrent-browser-mcp
检测方法 ✅ 环境变量 → 端口扫描 → 系统代理 ✅ 相同策略
端口列表 ✅ 7个常见端口 ✅ 7个常见端口
连接测试 ✅ 套接字测试 ✅ 套接字测试
超时时间 ✅ 3秒 ✅ 3秒
macOS支持 ✅ networksetup ✅ networksetup
语言 Python TypeScript

MCP集成

环境变量配置

搜索融合使用纯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_KEY
GOOGLE_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_KEY
BAIDU_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

# 其他遵循类似模式...

引擎优先级

搜索引擎会自动进行优先级排序:

  1. 谷歌搜索(优先级1) - 使用API密钥可获得卓越性能
  2. Serper搜索(优先级1) - 具备高级功能的谷歌搜索替代方案
  3. Jina AI搜索(优先级1.5) - 由人工智能驱动,使用可选API密钥可获得高级功能
  4. DuckDuckGo(优先级2) - 免费,无需API密钥
  5. Exa搜索(优先级2) - 使用API密钥的人工智能驱动搜索
  6. 必应搜索(优先级3) - 微软搜索API
  7. 百度搜索(优先级3) - 中文搜索引擎

🛠️ MCP工具

1. search

执行网页搜索,具备智能引擎选择和故障转移功能。

参数:

  • query(必需):搜索查询词
  • num_results(默认值:10):返回的结果数量
  • engine(默认值:"auto"):引擎偏好
    • "auto":自动选择引擎(推荐)
    • "google":优先使用谷歌搜索
    • "serper":优先使用Serper搜索
    • "jina":优先使用Jina AI搜索
    • "duckduckgo":优先使用DuckDuckGo
    • "exa":优先使用Exa搜索
    • "bing":优先使用必应搜索
    • "baidu":优先使用百度搜索

2. fetch_url

抓取并处理网页内容,具备智能分页和多方法回退功能。

参数:

  • url(必需):要抓取的网页URL
  • use_jina(默认值:true):是否优先使用Jina阅读器获取针对LLM优化的内容
  • with_image_alt(默认值:false):是否为图像生成替代文本
  • max_length(默认值:50000):每页的最大内容长度(如果超过则自动分页)
  • page_number(默认值:1):从先前抓取的内容中检索特定页面

特性:

  • 智能多方法回退:尝试Jina阅读器 → Serper抓取 → 直接HTTP请求
  • 自动分页:将大内容拆分为可管理的页面
  • 并发安全缓存:唯一的页面ID可防止在高并发场景下发生冲突
  • 针对LLM优化的内容:为人工智能处理优化的干净Markdown格式

3. get_available_engines

获取所有搜索引擎的当前状态和可用性。

4. search_wikipedia

搜索维基百科文章,查找实体、人物、地点、概念等。

参数:

  • entity(必需):要搜索的实体
  • first_sentences(默认值:10):返回的句子数量(0表示返回完整内容)

5. search_archived_webpage

使用时光机搜索网站的存档版本。

参数:

  • url(必需):要搜索的网站URL
  • year(可选):目标年份
  • 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。

📊 性能

  • 延迟 - 通过缓存实现亚秒级响应时间
  • 可用性 - 通过智能故障转移实现99.9%的正常运行时间
  • 吞吐量 - 高效处理并发请求
  • 可扩展性 - 高效的资源利用和并发处理

📈 并发基准测试

测试性能(v3.0.0+):

  • 50个以上并发搜索 - 无竞态条件或数据损坏
  • 线程安全统计 - 准确的请求计数和错误跟踪
  • 连接池 - 高效的HTTP资源管理
  • 🛡️ 超时保护 - 每个请求60秒超时,防止系统过载
  • 📊 实时监控 - 在高负载期间实时监控引擎状态

推荐限制:

  • 并发搜索:10个(可通过信号量配置)
  • 连接池:最大100个连接,20个保持活动连接
  • 请求超时:60秒
  • 内存使用:约50MB基线 + 每个并发请求约2MB

🤝 贡献

  1. 分叉仓库
  2. 创建功能分支
  3. 进行更改
  4. 为新功能添加测试
  5. 提交拉取请求

📄 许可证

本项目采用MIT许可证 - 详情请参阅 LICENSE 文件。

🚨 速率限制与最佳实践

  • 谷歌搜索 - 免费套餐每天100次查询
  • Serper API - 根据计划而异
  • Jina AI - 根据订阅情况设置速率限制
  • DuckDuckGo - 无官方限制,但请合理使用
  • 其他引擎 - 请查看各自的API文档

请始终实施适当的延迟并遵守速率限制,以确保可持续使用。

📞 支持


为MCP社区精心打造 ❤️

  • 0 关注
  • 0 收藏,29 浏览
  • system 提出于 2025-09-22 22:18

相似服务问题

相关AI产品