Skip to main content
Glama
zhizhishu

FusionSearch MCP

by zhizhishu

title: claw. emoji: 🐾 colorFrom: purple colorTo: indigo sdk: docker app_port: 3000 pinned: false license: mit short_description: 夜里亮着的一盏灯,给认得路的人

🔎 FusionSearch MCP

把五个搜索源熔进一个 MCP —— 一次调用,多源取证 · 交叉验证 · AI 汇总

License Docker MCP Node SearXNG GHCR

FusionSearch MCP 把 LibreSearch/SearXNG、Search-2api/search.sh、Grok(OpenAI 兼容)、Tavily、Firecrawl 五层能力熔进同一个 MCP 服务。它不是把五个 provider 并排丢给客户端挑,而是在服务端跑一条 Fusion Orchestrator 证据流水线——意图识别 → 多源编排 → 证据归一 → 去重排序 → 交叉验证 → AI 合成,客户端只管拿到带来源、可追踪、交叉验证过的答案。

Related MCP server: Agent Search MCP

✨ 特性亮点

  • 🧩 五源融合 — 网页结构化(SearXNG) + AI 答案(search.sh) + 联网搜索/抓取(Tavily) + 正文托底(Firecrawl) + 合成汇总(Grok),一次查询自动交叉取证。

  • 🛡️ 全链路降级 — 五源各自独立、互为备胎;某一层没配或挂了,其它层照常出结果,绝不整体失败

  • 🎯 6 个精炼工具 — 取证与编排全收进服务端 Fusion Orchestrator,客户端不必在一堆同义工具里挑(v2 从 22 精简到 6)。

  • 🚪 统一 /mcp 入口 — Streamable HTTP,兼容 Cherry Studio / Claude Code / Codex;Bearer 或路径内嵌两种鉴权。

  • 🖥️ 开箱管理台/admin 一处配齐五源 Key、密钥中心 👁 明文查看/回写、五类能力测试、健康看板。

  • 🐳 三种部署 — 轻量服务器版 / Docker Compose 多合一 / Hugging Face 单容器 Space,都是一条命令。

四个对外面/(all-in-one 下的 LibreSearch 搜索页)· /admin(管理台)· /mcp(统一 MCP)· /search2api/v1/chat/completions(OpenAI 兼容答案 API)。

🚀 快速开始(新手三步)

想最快跑起来、试试 MCP 搜索?三步搞定:

第 1 步 · 起服务(Docker 最省事)

git clone https://github.com/zhizhishu/fusionsearch-mcp.git
cd fusionsearch-mcp
cp .env.example .env          # 打开 .env,至少设 ADMIN_TOKEN 和 MCP_AUTH_TOKEN
docker compose up -d --build

起来后打开 http://localhost:1666/admin,用 .env 里的 ADMIN_TOKEN 登录。想要内置搜索页 + Search-2api 的完整版,用多合一:docker compose -f docker-compose.all-in-one.yml up -d --build

第 2 步 · 配搜索源(都可单独用、互为备胎)

进 Admin UI 对应面板填 Key。一个都不填也能启动,只是少一层能力;五层各自独立,某层没配或挂了其它照常出结果:

能力

配什么

备注

网页结构化结果

LibreSearch(多合一版内置)

免费、无需 Key

AI 答案搜索

Search-2api 的 SEARCH_SH_COOKIE

免费,抓 search.sh 浏览器 Cookie

联网搜索 / 抓取

Tavily(官方 REST 或第三方 MCP)

tavily.com

正文抓取托底

Firecrawl Key

firecrawl.dev

AI 汇总总结

Grok / 任意 OpenAI-compatible URL+Key

交叉验证后合成答案

第 3 步 · 接入 MCP 客户端

在 Cherry Studio / Claude Code / Codex 等填:

URL:    http://localhost:1666/mcp
Header: Authorization: Bearer <你的 MCP_AUTH_TOKEN>

然后直接调 smart_research(丢一句话问题或一个 URL 都行)——服务端自动多源取证、去重、交叉验证、AI 汇总,客户端只管拿答案 + 来源。抓单个网页正文用 smart_fetch,看各源健康用 fusion_status

想上公网,部署到你自己的 Hugging Face Docker Space(见下方「Hugging Face 多合一」),务必开 MCP_AUTH_TOKEN + SITE_GATE_PASSWORD 做保护。


📦 部署模式

模式

适合场景

入口

正常服务器版

只跑 FusionSearch MCP/UI,LibreSearch 与 Search-2api 可外置

docker compose up -d --build

Docker Compose 多合一

一台服务器里同时跑 Nginx + FusionSearch + 官方 LibreSearch 镜像 + Search-2api

docker compose -f docker-compose.all-in-one.yml up -d --build

Hugging Face 多合一

一个 public Docker Space 同时提供搜索页、Admin UI、MCP 和 Search-2api

Dockerfile.hf-allinone 作为 Space 的 Dockerfile

🧭 路径

路径

正常服务器版

多合一版 / Hugging Face 版

/

Streamable HTTP MCP 兼容入口,浏览器访问会跳到 /admin

LibreSearch 搜索首页

/search

SEARCH_ENDPOINT 指向外部搜索 API

LibreSearch 搜索 API,支持 format=json

/admin

FusionSearch 管理 UI

FusionSearch 管理 UI

/mcp

统一 Fusion MCP,推荐默认使用

统一 Fusion MCP,推荐默认使用

/libresearch/mcp

legacy 兼容 profile

legacy 兼容 profile

/fusion/mcp

legacy 兼容 profile

legacy 兼容 profile

/search2api/v1/chat/completions

通常外置,不由本服务提供

内置 Search-2api OpenAI-compatible endpoint

🗺️ 架构蓝图 · Fusion Orchestrator 证据流水线

FusionSearch 当前以 /mcp 为统一入口运行 Fusion Orchestrator。它不是把多个 provider 简单并列暴露给客户端,而是把一次查询拆成意图识别、provider 编排、证据归一、去重排序、交叉校验和最终合成几步,让客户端默认拿到可追踪的答案、来源和 provider 状态。

graph TD
    C["🧑‍💻 Client / LLM"] -->|"MCP: /mcp"| IR
    subgraph O["🧠 Fusion Orchestrator"]
        IR["🧭 Intent Router<br/>URL → 抓取流水线<br/>关键词/问题 → 多源研究"]
        subgraph PR["📚 Provider Registry(五源并行取证)"]
            L["LibreSearch / SearXNG<br/>结构化网页结果"]
            S["Search-2api / search.sh<br/>答案型搜索"]
            T["Tavily<br/>search · extract · map"]
            F["Firecrawl<br/>正文抓取托底"]
            G["Grok / OpenAI 兼容<br/>合成与总结"]
        end
        IR --> PR
        PR --> EN["🔧 Evidence Normalizer<br/>统一 title · url · provider · content · 状态/错误"]
        EN --> DX["⚖️ Dedup · Ranking · Cross-check<br/>合并重复源 · 优先多源佐证 · 标记单源/失败/证据不足"]
        DX --> SY["✨ Synthesis<br/>用户答案 + 证据摘要 + 来源列表<br/>(上游失败仍返回已得证据 + 明确错误)"]
    end
    SY --> C

当前推荐客户端优先调用 smart_researchsmart_fetchfusion_statussmart_research 负责从 URL 或自然语言问题进入合适流水线;smart_fetch 负责 URL 抓取、降级和可选总结;fusion_status 负责查看 LibreSearch、Search-2api、Grok、Tavily、Firecrawl 的健康状态与脱敏配置状态。

除三类智能工具外,还有三个配置/运维工具:web_map(Tavily 站点地图)、fusion_config(Grok/Tavily/Firecrawl 配置诊断,可选连通性测试)、fusion_switch_model(切换默认 Grok 模型并持久化)。工具总数从 22 精简到 6,原先重叠的 libresearch_* / fusionsearch_* 家族与单独的 provider 工具已移除,取证与编排全部收进服务端。

🖥️ 正常服务器版

这种模式最轻,只运行 FusionSearch Node 服务。LibreSearch 可以继续外置 Hugging Face,也可以填你自己的 LibreSearch/Search-2api 地址。

git clone https://github.com/zhizhishu/fusionsearch-mcp.git
cd fusionsearch-mcp
cp .env.example .env
docker compose up -d --build
docker compose logs -f fusionsearch-mcp

默认入口:

Admin:  http://<server-ip>:1666/admin
MCP:    http://<server-ip>:1666/mcp
Health: http://<server-ip>:1666/health

也可以直接使用 GHCR 镜像:

docker pull ghcr.io/zhizhishu/fusionsearch-mcp:latest
docker run -d \
  --name fusionsearch-mcp \
  -p 1666:1666 \
  -e PORT=1666 \
  -e RUNTIME_CONFIG_PATH=/app/config/runtime.json \
  -v "$(pwd)/config:/app/config" \
  -v "$(pwd)/logs:/app/logs" \
  --restart unless-stopped \
  ghcr.io/zhizhishu/fusionsearch-mcp:latest

仓库已带 GitHub Actions:推送 main 后会自动构建并发布 ghcr.io/zhizhishu/fusionsearch-mcp:latest,同时生成 sha-* 标签。服务器端只需要 docker pull 或重新 docker compose pull && docker compose up -d 即可更新。

🐳 Docker Compose 多合一

这种模式会在服务器里一次启动四个服务:

gateway/nginx
  ├─ /                  -> libresearch:8080
  ├─ /search            -> libresearch:8080/search
  ├─ /admin /mcp /api   -> fusionsearch-mcp:1666
  └─ /search2api/*      -> search2api:8000/*

其中 libresearch 服务直接使用 libregroup/libresearch:latest,不再从源码重复构建 SearXNG。deploy/searxng/settings.yml 只作为轻量配置文件挂载,确保 format=json 长期可用。 Nginx 使用 Docker 内置 DNS 动态解析服务名,fusionsearch-mcplibresearchsearch2api 单独重启后不会继续指向旧容器 IP。

启动:

cp .env.example .env
# 编辑 .env,至少建议设置 ADMIN_TOKEN、SESSION_SECRET、MCP_AUTH_TOKEN。
# Search-2api 需要 SEARCH_SH_COOKIE;很多情况下还需要 SEARCH_SH_USER_AGENT 与 Cookie 匹配。
docker compose -f docker-compose.all-in-one.yml up -d --build
docker compose -f docker-compose.all-in-one.yml logs -f

默认入口:

Search:      http://<server-ip>:1666/
Search JSON: http://<server-ip>:1666/search?q=test&format=json
Admin:       http://<server-ip>:1666/admin
MCP:         http://<server-ip>:1666/mcp
Search-2api: http://<server-ip>:1666/search2api/v1/chat/completions

停止:

docker compose -f docker-compose.all-in-one.yml down

🤗 Hugging Face 多合一

Hugging Face Docker Space 版使用单容器多进程,最终镜像直接 FROM libregroup/libresearch:latest

Hugging Face public Space
  └─ Dockerfile.hf-allinone
       ├─ libregroup/libresearch:latest
       ├─ node src/server.js 作为轻量网关与 MCP/Admin 服务
       ├─ LibreSearch / granian
       └─ search2api FastAPI

HF 只有一个容器,所以这里不再装 Nginx/Supervisor;启动脚本会同时拉起 LibreSearch、Search-2api 和 FusionSearch Node。Node 网关负责把 //search/static 代理到 LibreSearch,把 /search2api/* 代理到 Search-2api。

Hugging Face Space 只会自动识别根目录 Dockerfile。所以部署 Space 时有两种做法:

  1. 在 Space 仓库里把 Dockerfile.hf-allinone 复制/改名为 Dockerfile

  2. 用同步脚本或 CI 推送到 HF Space 时,把 Dockerfile.hf-allinone 映射成 Space 根目录的 Dockerfile

Space Settings 里建议配置这些 Secrets/Variables:

ADMIN_AUTH_ENABLED=true
ADMIN_TOKEN=<管理页登录口令>
SESSION_SECRET=<随机长字符串>
MCP_AUTH_TOKEN=<MCP Bearer Token>

SEARCH_SH_COOKIE=<从 search.sh 浏览器 Network 请求复制的完整 cookie header>
SEARCH_SH_USER_AGENT=<复制 cookie 时同一个浏览器请求的 User-Agent>
API_MASTER_KEY=<Search-2api 内部 Bearer Token>

GROK_API_URL=<可选,显式 OpenAI-compatible /v1 地址>
GROK_API_KEY=<可选>
TAVILY_PROVIDER=rest
TAVILY_API_KEY=<可选,官方 Tavily REST key>
TAVILY_MCP_URL=<可选,第三方 Tavily MCP 地址,例如 Hikari>
TAVILY_MCP_TOKEN=<可选,第三方 Tavily MCP Bearer Token>
TAVILY_HIKARI_TOKEN=<可选,Hikari Token 兼容别名>
FIRECRAWL_API_KEY=<可选>

不要把 Cookie、API Key、Admin Token、MCP Token 提交到 GitHub 或 Hugging Face 文件里。它们只应该放在 .env、服务器环境变量或 HF Secrets。

密钥中心(统一查看 / 修改 / 回写)

所有密钥的查看、修改、持久化都收在 /admin -> 密钥中心 一处,不再分散到多个页。推荐先配置:

HF_SPACE_ID=<你的HF用户名>/fusionsearch-mcp
HF_WRITE_TOKEN=<有该 Space 写权限的 Hugging Face token>

密钥中心每一行包含:

  • 状态 + 打码预览:是否已配置、来源(HF 环境变量 / runtime)。

  • 👁 明文:点开就地显示当前实际生效的明文(HF 环境变量或 runtime 配置都认),仅登录管理员可见,明文不写日志。

  • 内联修改:在输入框填新值即替换,留空则不改;带 清空 勾选的行可清空。

  • HF 标记:表示保存时会写回 Hugging Face Secrets。

点「保存全部」时,改动会立刻应用到正在运行的容器(秒生效),并且默认同时写回 HF Secrets(勾选「保存时写回 Hugging Face Secrets」),这样 Space 重启 / 重建也不会丢。如果运行中的容器还没有 HF_WRITE_TOKEN,可以在密钥中心的「一次性 HF Write Token」里临时粘贴一次;完整 Token 不回显、不写日志。

几个要点:

  • 环境变量类(如 SEARCH_SH_COOKIE 没有 runtime 字段,只能写回 HF Secrets,需要重启 Space 才生效;保存后 UI 会提示。

  • Admin 口令 / MCP Bearer 也在密钥中心里改:保存成功即更新当前运行时;改了 Admin 口令后当前登录会失效,需要用新口令重新登录。Admin/MCP Token 不限制固定长度,短口令可用,公网环境仍建议长随机值。

  • 端点类(如 LibreSearch Endpoint) 不是密钥,不写回 HF Secrets(避免与 Variables 撞名),在对应服务面板里修改。

  • 只想轮换会话(踢掉所有旧登录)去 /admin -> 安全 -> 会话与登录;那里也有「打开密钥总览页」,一次性把所有密钥按 .env 格式导出备份。

第三方 Tavily MCP / Hikari

FusionSearch 支持两种 Tavily 来源:

  • TAVILY_PROVIDER=rest:走 Tavily REST,使用 TAVILY_API_URL / TAVILY_API_KEYTAVILY_API_URL 默认 https://api.tavily.com,也可以换成自定义代理地址。

  • TAVILY_PROVIDER=mcp:走第三方 Tavily MCP/Hikari,使用 TAVILY_MCP_URL / TAVILY_MCP_TOKEN。如果只设置了 TAVILY_HIKARI_TOKEN 且未指定 provider,服务会自动切到 MCP 模式,并默认使用 https://tavily.ivanli.cc/mcp

Admin UI 的 Tavily 页是二选一:官方 REST 显示 REST API URL/Key,自定义 MCP / Hikari 显示 MCP URL/Token 与工具名覆盖。MCP 模式会自动发现 search / extract / map 工具;第三方网关工具名特殊时,可设置 TAVILY_MCP_SEARCH_TOOLTAVILY_MCP_EXTRACT_TOOLTAVILY_MCP_MAP_TOOL 覆盖。

Admin 日志

/admin -> 状态 -> 日志 可以查看 FusionSearch 自身运行日志,默认写入 logs/fusionsearch.log。日志会记录配置保存、安全设置、HF Secrets 更新和 Admin API 错误;Token、Cookie、API Key 等敏感字段会脱敏。

🔧 MCP 工具

工具精简为 6 个。智能工具在服务端自动编排 LibreSearch、Search-2api、Grok、Tavily、Firecrawl 五层能力并交叉取证,客户端不必在一堆同义工具里挑选:

  • smart_research:推荐主入口。Intent Router 会先判断输入是 URL 还是关键词/问题;URL 进入抓取流水线,关键词/问题进入多源研究流水线,并尽量交叉取证后再合成答案。可用 strategy 选档位、limit(extra_sources)扩展信源。

  • smart_fetch:推荐网页抓取入口。按 Tavily Extract -> Firecrawl Scrape -> HTML fetch 顺序降级,归一化正文证据后可选让 Grok 基于抓取内容总结。

  • web_map:Tavily Map 探测站点结构与链接。

  • fusion_status:返回 LibreSearch、Search-2api、Grok、Tavily、Firecrawl 的最近健康状态和脱敏 Key 状态。

  • fusion_config:Grok/Tavily/Firecrawl 配置诊断,可选实时连通性测试。

  • fusion_switch_model:切换默认 Grok 模型并持久化到 runtime 配置。

v2 起工具从 22 精简到 6:重叠的 libresearch_* / fusionsearch_* 家族与单独的 web_search/web_fetch/fusion_research provider 工具已移除,取证与多源编排收进服务端 Fusion Orchestrator。Grok 合成默认走流式(连接不空闲,绕开中转代理约 60 秒空闲掐断长请求),失败自动降级非流式。

统一 MCP 入口:

  • /mcp:全量 FusionSearch MCP,日常推荐。

  • /libresearch/mcp/fusion/mcp:legacy profile 路由,只为旧客户端配置兼容保留。

公网 MCP 建议开启 MCP_AUTH_TOKEN,客户端使用:

Authorization: Bearer <MCP_AUTH_TOKEN>

如果某些 MCP 客户端不好填 Header,也支持便捷路径鉴权:

https://<host>/mcp/ApiKey=<MCP_AUTH_TOKEN>

SSE 客户端可用:

https://<host>/mcp/ApiKey=<MCP_AUTH_TOKEN>/sse

注意:URL 里的 Token 可能出现在浏览器历史、反向代理访问日志或截图里;生产环境仍优先推荐 Bearer Header。

🎛️ Admin UI

打开:

http://<host>:1666/admin

管理页可以配置:

  • LibreSearch/SearXNG endpoint 与默认参数,默认强制 format=json

  • Search-2api endpoint 与 Bearer Token。

  • All Key Control:集中填写 Grok/OpenAI-compatible、Tavily、Firecrawl,并显示脱敏 Key 状态。

  • Grok/OpenAI-compatible URL、Key、模型。

  • Grok 默认模型:保存时可同步 GROK_MODEL 到 Hugging Face Secrets,避免 Space 重启后恢复旧模型。

  • Grok System Prompt:真正随请求发给 Grok 的 system message。

  • Tavily 与 Firecrawl Key/API URL,Tavily 页提供官方 REST 与自定义 MCP/Hikari 二选一配置。

  • Admin Token、Session Secret、MCP Token 轮换。

All Key Control 会显示 已配置 / 未配置、脱敏值和来源,例如 sk-****1234cf_clearance=****; len 392。完整 Cookie、Token、API Key 不会回显,也不会写入日志。

状态页新增 Monitoring:按 CheckCle 式服务列表展示 LibreSearch、Search-2api、Grok、Tavily、Firecrawl 的 Up / Warning / Down / Paused。它优先依赖最近 MCP 调用、Admin 测试和日志记录;主动探针有 10 分钟冷却保护,Tavily/Firecrawl 默认不主动消耗额度,只确认配置并等待真实调用刷新状态。

测试页分为 LibreSearch、Search-2api、Grok、Tavily、Firecrawl 五个标签:LibreSearch 验证 JSON 搜索;Search-2api 验证 Chat Completions 和上游维护状态;Grok 验证模型/回答;Tavily 验证 Search、Fetch、Map;Firecrawl 验证 Scrape 托底。

环境变量优先级高于 config/runtime.json。Key 类字段只显示“是否已配置”,不会在 API 响应或页面里回显明文。

📌 Search-2api 注意事项

Search-2api 来源项目:https://github.com/lza6/Search-2api(作者 lza6)。

它依赖 search.sh 浏览器请求里的临时 Cookie。实测重点:

  • SEARCH_SH_COOKIE 要从浏览器 Network 请求复制完整 cookie header。

  • cf_clearance 通常和 User-Agent 绑定,建议同时填写 SEARCH_SH_USER_AGENT

  • Cookie 过期或 search.sh 上游接口变化时,Search-2api 会失效,需要重新抓 Cookie。

  • 如果设置 API_MASTER_KEY,FusionSearch 侧需要用相同值作为 SEARCH_SH_API_KEY。多合一 compose 已自动把 API_MASTER_KEY 传给 FusionSearch。

  • 没填 Cookie 时,内置 Search-2api 仍会启动,/v1/models 可探针通过;真正调用 chat 时会返回明确的 503 缺 Cookie 提示。

测试:

curl http://localhost:1666/search2api/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <API_MASTER_KEY>" \
  -d '{"model":"search-sh-ai","messages":[{"role":"user","content":"你好"}],"stream":false}'

⚙️ 环境变量

变量

说明

FUSIONSEARCH_PORT

Compose 对外端口,默认 1666

PORT

容器内 FusionSearch 监听端口

SEARCH_ENDPOINT

LibreSearch /search API 地址

RUNTIME_CONFIG_PATH

运行配置保存路径

LOG_DIR

FusionSearch 日志目录,默认 ./logs

ADMIN_AUTH_ENABLED

是否启用 Admin Token

ADMIN_TOKEN

管理页登录口令

SESSION_SECRET

session cookie 签名密钥

MCP_AUTH_TOKEN

MCP Bearer Token

HF_ENDPOINT

Hugging Face Hub 地址,默认 https://huggingface.co

HF_SPACE_ID / SPACE_ID

允许 /admin 回写 Secrets 的 Space ID,例如 <你的HF用户名>/fusionsearch-mcp

HF_WRITE_TOKEN

允许 /admin 调 Hugging Face API 替换 Space Secrets 的写入 token

SEARCH_SH_CHAT_ENDPOINT

外置 Search-2api chat completions 地址

SEARCH_SH_API_KEY

外置 Search-2api Bearer Token

SEARCH_SH_COOKIE

内置 Search-2api 调 search.sh 的 Cookie

SEARCH_SH_USER_AGENT

内置 Search-2api 调 search.sh 的 User-Agent

API_MASTER_KEY

内置 Search-2api 的 Bearer Token

GROK_API_URL

OpenAI-compatible Grok /v1 地址

GROK_API_KEY

Grok API Key

GROK_MODEL

默认 Grok 模型

GROK_SYSTEM_PROMPT

注入给 Grok 的 system prompt

TAVILY_ENABLED

是否启用 Tavily

TAVILY_PROVIDER

restmcp;未设置时默认 REST,检测到 Hikari/MCP token 时自动使用 MCP

TAVILY_API_URL / TAVILY_API_KEY

官方 Tavily REST 配置

TAVILY_MCP_URL / TAVILY_MCP_TOKEN

第三方 Tavily MCP/Hikari 配置

TAVILY_HIKARI_TOKEN

Hikari Bearer Token 兼容别名

TAVILY_MCP_SEARCH_TOOL / TAVILY_MCP_EXTRACT_TOOL / TAVILY_MCP_MAP_TOOL

第三方 MCP 工具名覆盖,通常留空自动发现

FIRECRAWL_API_URL / FIRECRAWL_API_KEY

Firecrawl 配置

GRANIAN_WORKERS / GRANIAN_BLOCKING_THREADS

官方 LibreSearch 镜像的 Granian 并发参数

GRANIAN_PROCESS_NAME

LibreSearch 运行进程名,默认 fusionsearch-libre,避免部分托管平台误判默认进程名

UWSGI_WORKERS / UWSGI_THREADS

兼容旧 LibreSearch 运行习惯的环境变量,保留给部署层填写

🛠️ 本地开发

npm install
npm run dev

静态检查:

node --check src/app.js
node --check src/fusionClients.js
node --check src/server.js
node --check public/admin/app.js
python -m py_compile services/search2api/main.py services/search2api/app/core/config.py services/search2api/app/providers/search_provider.py
docker compose -f docker-compose.all-in-one.yml config

🎯 设计原则

  • KISS:普通服务器版保持轻量;all-in-one 直接复用官方 LibreSearch 镜像,不再重复构建搜索引擎。

  • YAGNI:当前只做 Token 鉴权,不把 HF OAuth 做成强依赖。

  • DRY:Grok/Tavily/Firecrawl 配置集中在 Fusion client,LibreSearch/Search-2api 各自独立,搜索引擎运行时复用 libregroup/libresearch

  • SOLID:Admin UI、MCP 工具注册、搜索客户端、鉴权、运行配置分离,后续换接口时不需要重写整套服务。

🙏 致谢与参考项目

FusionSearch MCP 站在这些开源项目和上游服务的肩膀上,特此致谢:

设计灵感

  • GrokSearch(作者 GuDaStudio,grok-with-tavily 分支)— 本项目最直接的灵感来源:Grok + Tavily + Firecrawl 的「双引擎 + 抓取降级」思路。FusionSearch 是它的服务端超集——把交叉验证 / 编排从客户端提示词搬进服务端 Fusion Orchestrator,并从三层扩到五层能力。

核心依赖 / 上游

  • SearXNG — 开源元搜索引擎,网页搜索层的底座。

  • LibreSearchlibregroup/libresearch)— all-in-one 直接复用的官方 SearXNG 镜像,不再重复构建搜索引擎。

  • Search-2api(作者 lza6)— search.sh 的 OpenAI-compatible 封装,作为答案型搜索层内置于 services/search2api

  • Tavily — 面向 AI 的搜索 / 抓取 / 站点地图 API。

  • Firecrawl — 网页正文抓取,抓取降级链的一环。

  • perplexity-aiescapeWu,fork of ESousa97,MIT)— Perplexity.ai 逆向封装(Pro 账号 cookie → OpenAI 兼容答案),作为可选第 6 源内置于 services/perplexitysmart_research 并行取证时接入;未配则自动跳过、独立自重启、不影响核心五源。

  • Grok / xAI(或任意 OpenAI-compatible 端点)— 证据合成与汇总。

  • Model Context Protocol — MCP 规范与 @modelcontextprotocol/sdk,统一工具接入协议。

各上游的商标、服务与配额政策归其原作者 / 公司所有;本项目只做聚合编排,请在使用时遵守各自的服务条款。

📄 License

本项目以 MIT 许可证开源。所聚合的各上游项目 / 服务,其许可证与条款以各自仓库或官网为准。

Related MCP Connectors

  • MCP-native web evidence and claim verification: cited, source-grounded evidence for AI agents.

  • Live AI-native web search with citations. One tool for every MCP client. Flat per-request pricing.

  • Your agent needs the open web — searched by more than one engine, and read as clean markdown rather than raw HTML. **What you can ask for** • "Search this question with two providers and tell me where they disagree." • "Scrape these 40 URLs into markdown, in one batch." • "Crawl this documentation site and give me every page." • "Do deep research on this topic and cite the sources." • "Find the academic papers behind this claim." **How to use it** Point any MCP client at https://mcp.aisa.one/search/mcp and sign in with OAuth — there is no key to create or paste. 30 tools across several independent providers: Tavily and Exa search, answers, contents and agent runs; Firecrawl scrape, batch scrape, crawl, map and search; Perplexity Sonar, Sonar Pro, reasoning and deep research; Oxylabs AI search and LLM jobs; OpenAI and Anthropic web search; and scholarly search. **Why this rather than the source** Several independent indexes behind one account, because one engine's blind spot is not visible from inside it. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Find the page here, then ask the same agent who links to it or how much traffic it gets — without adding a second server. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** https://mcp.aisa.one/seo-serp/mcp for the Google results page itself, https://mcp.aisa.one/seo-serp-other-engines/mcp for Bing, Baidu and Naver.

  • Multi-engine search for AI agents. Trust scoring, local corpus, MCP-native. Self-hostable, BYOK.

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Unified gateway to Exa, Websets, and Deep Search for code search, deep research, and structured citations via any MCP client.
    -
  • A
    license
    A
    quality
    A
    maintenance
    Free multi-source search for AI agents with multi-source verification, token savings, and MCP native support.
    7
    114 npm
    110
    Apache 2.0
  • A
    license
    B
    quality
    A
    maintenance
    MCP search and evidence tool for AI agents. Rewrites queries, zooms into source domains, and returns sourced answers with metrics.
    1
    4
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    A Grok-first multi-source search MCP for AI agents that integrates Grok, Tavily, AnySearch, and Firecrawl to provide unified search results, cross-verification, and web content fetching.
    3
    MIT