跳转到主内容

SearXNG 本地部署与 MCP 接入:搭建私有搜索引擎做技术文档交叉验证

2026-06-10searxng · claude-code · 搜索 · 审查 · docker · mcp · 排错

开篇:SearXNG 是什么,为什么要自己部署

SearXNG 是一个开源元搜索引擎(meta search engine)—— 它本身不爬取网页,而是把用户查询转发给百度、必应、谷歌等上游引擎,聚合结果后统一返回。 部署在本地 Docker 中,免费、无 API Key、无调用次数限制、无搜索历史泄漏

本文从零开始,完成 SearXNG 本地部署、中文引擎配置、JSON API 开启, 再通过 MCP 协议接入 Claude Code,最后给出三个真实使用场景和一套搜索策略。

读完可以带走:① 一个运行在本机的私有搜索引擎(Docker 容器部署); ② 接入 Claude Code 的 MCP 配置(含 Windows 平台已知问题规避); ③ 多引擎搜索的组合策略和调优方法。

一、SearXNG 本地部署

前置条件:Docker 已安装(Windows 使用 Docker Desktop + WSL2 后端,macOS 使用 Docker Desktop,Linux 使用 Docker Engine)。 以下命令三端通用。

1.1 拉取镜像并启动

bash
# 拉取镜像
docker pull searxng/searxng:latest
# 启动容器(将 settings.yml 挂载为 volume,方便后续修改)
docker run -d --name searxng \
-p 8080:8080 \
-v searxng-config:/etc/searxng \
searxng/searxng:latest
# 验证容器运行
docker ps --filter name=searxng

国内 Docker 镜像加速:如果 docker pull 极慢或超时,搜索 "Docker 国内镜像加速 2026" 获取当前可用的镜像站地址, 写入 Docker Desktop Settings → Docker Engine → registry-mirrors。

1.2 配置:开启中文引擎 + JSON API

默认配置不会启用百度和 JSON API。需要导出 settings.yml 并修改——推荐用 volume mount 方式(容器删除后配置不丢失),不推荐 docker exec vi

bash
# 1. 从容器中拷贝默认配置到宿主机
docker cp searxng:/etc/searxng/settings.yml ./settings.yml
# 2. 编辑 settings.yml(用任意编辑器)
# 3. 将修改后的文件挂载回容器
docker cp ./settings.yml searxng:/etc/searxng/settings.yml
# 4. 重启容器使配置生效
docker restart searxng

需要改三个地方:

yaml
# 1. 开启 JSON API(MCP 接入必需)
search:
formats:
- html
- json
# 2. 启用百度(默认 disabled: true)
engines:
- name: baidu
disabled: false
timeout: 10.0 # 百度响应较慢,放宽超时
# 3. 设置默认语言为中文
server:
secret_key: "替换为随机字符串" # openssl rand -hex 32 生成
default_locale: zh-Hans-CN

secret_key 用于服务端会话加密,生产环境务必改为随机值(openssl rand -hex 32 生成)。

1.3 验证搜索引擎

bash
# 验证 JSON API — 应返回搜索结果 JSON
curl "http://localhost:8080/search?q=hello&format=json"
# 验证百度引擎 — 搜索结果中应有 baidu 条目
curl "http://localhost:8080/search?q=测试&format=json&engines=baidu"

如果返回 403,说明 formats 列表中缺少 json,回头检查 settings.yml。

搜索引擎选择建议(国内环境): 必应(默认开启,国内直连)、百度(需手动开启,国内直连)、谷歌(默认开启,需科学上网)。 推荐至少启用必应 + 百度——必应对英文技术资料覆盖好,百度对中文社区(CSDN、博客园、知乎)覆盖好。

二、接入 Claude Code MCP

SearXNG 有多个社区 MCP 服务器。本文使用 mcp-searxngnpm), 它提供两个工具:

  • searxng_web_search — 执行搜索,支持分页、语言、时间范围、安全搜索参数
  • web_url_read — 读取搜索结果中 URL 的全文内容

2.1 Windows 平台的 MCP 配置

不推荐手动编辑 JSON 配置文件。使用 Claude Code 自带的 claude mcp add 命令:

bash
# 在项目目录中执行
claude mcp add searxng --env SEARXNG_URL=http://localhost:8080 -- cmd /c "npx -y mcp-searxng"

⚠️ 常见坑claude mcp add 在 Windows 上可能把 /c 误解析为 C:/。 这是因为 Git for Windows 的 MSYS2/Cygwin 环境将 POSIX 路径 /c 自动转为 Windows 路径。 添加后检查 .claude.jsonargs 第一个元素是否为 "/c",如果变成 "C:/" 则手动改回。

最终生效的配置(位于 .claude.json 中当前项目的 mcpServers 下):

json
"searxng": {
"type": "stdio",
"command": "cmd",
"args": ["/c", "npx -y mcp-searxng"],
"env": { "SEARXNG_URL": "http://localhost:8080" }
}
macOS / Linux 用户:env 注入是稳定的,直接用官方命令即可:claude mcp add --env SEARXNG_URL=http://localhost:8080 -- npx -y mcp-searxng

2.2 验证 MCP 连接

重启 Claude Code 后,输入 /mcp 确认 searxng 状态为 connected ✓

如果 connected 但搜索工具调用报错 "not configured",手动验证 MCP 进程收到的 URL:

bash
# Windows — 手动启动 MCP 服务器,看打印的 SEARXNG_URL
cmd /c "set SEARXNG_URL=http://localhost:8080 && npx -y mcp-searxng"
# 期望输出(注意最后一行):
# 🔍 MCP SearXNG Server v1.0.3 - Ready
# 🌐 SearXNG URL: http://localhost:8080 ← 如果是 "not configured" 则失败

三、使用示例

SearXNG 接入 Claude Code 后,MCP 工具可以在对话中直接被 Claude Code 调用。以下是三个典型场景。

3.1 技术选型调研

同一个问题在不同搜索引擎中得到的结果侧重不同。例如搜 Bun vs Node.js performance 2026

  • 百度:返回中文社区(掘金、SegmentFault、CSDN)的对比评测,侧重国内开发者的实际体验
  • 必应:覆盖英文技术博客和 Microsoft 生态内容,对 npm 包的文档页面索引较好
  • 谷歌:优先返回官方 benchmark 和 GitHub 仓库的 issue 讨论,时效性排序更强

聚合三方的结果可以避免单一引擎的信息偏差——中文社区可能更关注生态兼容性,英文社区更关注裸性能数据。

3.2 报错排查

遇到一段报错信息时,直接粘贴到搜索中,跨社区对比解决方案。 例如一段 Docker 启动报错 Error response from daemon: Ports are not available

  • 百度会优先返回 CSDN/博客园的同类踩坑帖,包含中文环境下的操作步骤截图
  • 必应返回 Stack Overflow 和 Microsoft 官方文档中关于 Windows 端口占用的说明
  • 谷歌返回 GitHub Issues 中 Docker 项目的相关 bug report,可能包含官方回复

三个答案源互相参照,可以判断哪个方案是"大多数情况下有效"的,哪个是特定环境下的 workaround。

3.3 API 参数或配置字段核实

需要确认某个 API 参数名或配置字段的准确写法时,分别在中文和英文社区搜索。 例如查 Next.js basePath 的配置方式:

  • 英文搜索结果直接指向 Next.js 官方 docs(nextjs.org/docs),信息最权威
  • 中文搜索结果可能包含国内开发者的实战文章,附带 Edge Case(如 basePathassetPrefix 的区别和组合使用)

两者结合——官方文档确认正确性,社区文章确认边界情况——比只看单源更可靠。

四、搜索策略与引擎调优

4.1 引擎选择策略

场景推荐引擎原因
中文社区资料百度对 CSDN、博客园、知乎、掘金的索引深度远超英文引擎
英文技术文档谷歌时效性排序和官方 docs 召回率领先
GitHub Issues必应对 GitHub 仓库的索引覆盖率较高(Microsoft 生态)
综合查全三引擎同时查SearXNG 自动聚合,一次查询 = 三次搜索

4.2 搜索技巧

  • 站点限定site:github.com 关键词 将搜索限定在 GitHub;site:csdn.net 限定在 CSDN。排除噪音时特别有用。
  • 时间过滤:SearXNG JSON API 支持 time_range 参数 (day / month / year),过滤掉过时信息。 例如搜索 q=claude-code-mcp&time_range=year 只看一年内的内容。
  • 多关键词组合:先用宽泛词(如 Docker 网络配置)定位问题域, 再用精确词(如 docker bridge network iptables)深入。 SearXNG 的聚合特性让切换引擎的成本为零——同一组关键词在不同引擎中跑一次即可。
  • 语言参数:设置 language: en 强制返回英文结果,language: zh 返回中文结果。跨语言对比同一技术话题时很有用。

4.3 为什么用 SearXNG 而不是直接搜

  • 免费无 Key:不需要注册任何搜索 API 服务,Docker 一个容器跑起来就是搜索引擎
  • 多引擎聚合:同一个查询同时覆盖百度 + 必应 + 谷歌,中英文资料一次返回
  • 无跟踪:搜索请求从本机发出,搜索历史不过第三方服务器
  • 可编程:JSON API 让 Claude Code 直接调用搜索结果,不需要手动打开浏览器
  • 备选方案:如果暂时不想部署 SearXNG,Claude Code 内置的 WebSearch + WebFetch 也能完成大部分搜索需求——只是搜索源受限于单一引擎索引

五、常见问题

Docker pull 超时或极慢

国内网络环境下,Docker Hub 的访问速度不稳定。配置 Docker 镜像加速器 (Docker Desktop → Settings → Docker Engine → registry-mirrors), 或在搜索引擎中搜 "Docker 国内镜像加速 2026" 获取当前可用的加速地址。

JSON API 返回 403

settings.ymlsearch.formats 列表缺少 json。 添加后 docker restart searxng 即可。

MCP 显示 connected 但搜索失败

参考 2.2 节,手动启动 MCP 进程确认 SEARXNG_URL 是否正确传入。

常见原因:

  • SearXNG 容器未启动(docker ps --filter name=searxng 确认)
  • 端口被占用(netstat -ano | findstr 8080 检查)
  • Windows 下用了 env 块配置(参考 2.1 节的绕过方案)

修改 settings.yml 后不生效

如果使用的是 docker cp 方式修改,确认执行了 docker restart searxng。 如果使用的是 volume mount(-v ./settings.yml:/etc/searxng/settings.yml), 注意 SearXNG 在启动时会校验配置,有语法错误时容器会直接退出——先 docker logs searxng 查看错误信息。

延伸阅读
延伸阅读: 本文使用的 MCP 配置方式(cmd /c set)背后涉及 Claude Code 的 env 块 Bug、backups 缓存机制和进程诊断方法, 详细排查过程见《MCP 配置避坑指南》。 SearXNG 的 Docker Compose 部署(含 Redis 缓存、Caddy 反向代理)见官方文档(github.com/searxng/searxng)。 MCP 协议的基础概念和架构介绍见《理解 MCP》
时效性说明

⚠️ 以上信息可能已过时,请以各平台官方网站的最新公告和定价页面为准。以上版本号、Docker 镜像标签、npm 包名及 GitHub Issue 状态验证于 2026-06。

本文中的大部分命令和配置都可以交给 AI 编程工具执行——粘贴到对话框让它代劳。 涉及密钥、浏览器操作或系统级修改的步骤除外。详见《从「动手做」到「指挥做」》

有疑问?来这里找答案

如果对本站内容有疑问,推荐到视频或其他知识性平台寻求解决方法,也可直接向 AI 提问获得参考性回答(注意分辨 AI 回答的正确性)

视频教程
B站搜索教程
视频演示 + 疑难解答