你是否关心自己的搜索隐私?当你在 AI 助手内部进行网络搜索时,查询词可能会被发送到商业搜索引擎,留下你的 IP、用户代理和兴趣痕迹。传统的 API 搜索服务虽然方便,但通常要求你注册并暴露你的使用模式。

这就是 mcp-server-searxng 要解决的问题。它是一个基于模型上下文协议的服务器,通过集成 SearXNG(一个开源的、隐私友好的元搜索引擎)来提供搜索能力。SearXNG 本身不追踪用户,它会将你的查询转发给多个搜索引擎(如 Google、Bing、DuckDuckGo),然后聚合结果,而你只与 SearXNG 实例交互,从而获得了一定程度的隐私保护。

项目基本信息

信息项详情
项目名称mcp-server-searxng
GitHub地址https://github.com/kevinwatt/mcp-server-searxng
项目描述An MCP server implementation that integrates with SearXNG, providing privacy-focused meta search capabilities.
作者kevinwatt
开源协议MIT License
开源状态公开状态
LanguagesJavaScript, TypeScript, Dockerfile
支持平台Windows / macOS / Linux / Web
最后更新2026-04-17

一、项目介绍

mcp-server-searxng 是一个轻量级的 MCP 服务器,它封装了 SearXNG 的搜索 API。SearXGN 是一个去中心化的元搜索引擎,它本身不维护索引,而是实时查询其他多个搜索引擎,并将结果组合后返回。

该服务器提供了一个核心工具:web_search。通过这个工具,你可以控制搜索的多个维度:

  • 类别:常规、新闻、科学、文件、图片、视频、音乐、社交媒体、IT 等。
  • 时间范围:按天、周、月、年过滤结果。
  • 语言:指定结果的语言。
  • 安全搜索:三个级别(无、中等、严格)。
  • 分页:支持翻页。

该项目本质上是一个桥梁:它将 SearXNG 实例的 API 暴露为 MCP 工具,让 AI 能够利用这个隐私友好的搜索网络。

二、核心优势

隐私保护设计
SearXNG 是隐私元搜索领域的标杆。它不会记录你的 IP 地址,不会设置追踪 Cookie,不会对你的查询进行分析。所有查询在 SearXNG 实例内部被聚合和匿名化。

聚合多种引擎结果
一次查询可以同时获取来自 Google、Bing、DuckDuckGo、Brave 等多个搜索引擎的结果。这可以减少对单一搜索引擎的依赖,并提供更全面的视角。

丰富的类别和过滤选项
与其他通用搜索 MCP 相比,SearXNG 提供了非常细粒度的类别,如“科学”、“文件”、“IT”、“音乐”等。你可以将搜索范围限定在特定领域,提高相关性。

灵活的实例配置
你可以运行自己的私有 SearXNG 实例(通过 Docker 一键启动),也可以使用社区提供的公共实例。通过 SEARXNG_INSTANCES 环境变量,可以配置多个实例以实现故障转移。

开源且免费
整个栈完全开源免费。你甚至不需要任何 API 密钥。只需要一个 SearXNG 实例的 URL,就可以开始使用。

三、适用场景

隐私敏感的研究
如果你正在研究一个敏感话题,不希望搜索行为被关联到你的身份,可以通过自己的 SearXNG 实例进行搜索。

去中心化的信息收集
当你想验证某个信息在不同搜索引擎中的表现是否一致时,可以使用 SearXNG 的聚合结果进行对比。

限定领域的搜索
例如,你只想搜索“科学”类别的内容,避免看到购物链接或娱乐新闻。可以设置 categories: ["science"]

开发与测试
在开发 AI 应用时,你可能需要一个不消耗 API 信用额度、又无需注册的搜索服务。自己运行一个本地 SearXNG 实例是最佳选择。

构建隐私优先的 AI 应用
为你的 AI 产品提供一个“隐私模式”搜索选项,后端连接自建的 SearXNG 实例,而不是调用商业搜索 API。

四、安装教程

安装 mcp-server-searxng 需要两个步骤:首先运行一个 SearXNG 实例,然后配置 MCP 服务器。

第一步:使用 Docker 运行 SearXNG(推荐)

在终端中执行以下命令,创建一个本地 SearXNG 实例。

mkdir -p searxng

tee searxng/settings.yml << EOF
use_default_settings: true
server:
  bind_address: "0.0.0.0"
  secret_key: "CHANGE_THIS_TO_A_RANDOM_STRING"
  port: 8080
search:
  safe_search: 0
  formats:
    - html
    - json
EOF

docker run -d \
  --name searxng \
  -p 8080:8080 \
  -v "$(pwd)/searxng:/etc/searxng" \
  searxng/searxng

等待几秒钟,让容器完全启动。你可以通过访问 http://localhost:8080 验证 SearXNG 是否运行。

第二步:安装 MCP 服务器

通过 Smithery 一键安装(推荐):

npx -y @smithery/cli install @kevinwatt/mcp-server-searxng --client claude

或通过 npm 全局安装:

npm install -g @kevinwatt/mcp-server-searxng

第三步:配置 MCP 客户端

对于 Claude Desktop,编辑配置文件(macOS: ~/Library/Application Support/Claude/claude_desktop_config.json;Windows: %AppData%\Claude\claude_desktop_config.json),添加:

{
  "mcpServers": {
    "searxng": {
      "command": "npx",
      "args": ["-y", "@kevinwatt/mcp-server-searxng"],
      "env": {
        "SEARXNG_INSTANCES": "http://localhost:8080"
      }
    }
  }
}

如果你使用公共的 SearXNG 实例(风险自负,因为无法确保实例运营者的隐私承诺),可以替换 URL。

第四步:重启客户端

保存配置,完全退出并重启 Claude Desktop。

五、使用示例

以下是在配置好服务器后,与 Claude 的自然语言对话示例。

示例1:基础搜索

用户输入搜索一下“气候变化最新报告”,只返回新闻类结果。

AI 会调用 web_search,参数为 query: "气候变化最新报告", categories: ["news"]。返回结果将从新闻分类中获取。

示例2:限定时间范围和语言

用户输入查找过去一周内关于“人工智能安全”的英文文章。

AI 会调用 web_search,参数为 query: "人工智能安全", time_range: "week", language: "en"

示例3:科学类别搜索

用户输入搜索关于“量子计算”的学术资源。

AI 可以设置 categories: ["science"],过滤掉非学术的内容。

示例4:图片搜索

用户输入搜索“太阳系照片”,只返回图片结果。

AI 可以设置 categories: ["images"],然后返回的结果将是图片链接和缩略图信息。

示例5:分页获取更多结果

用户输入搜索“Node.js 教程”,给我第一页的结果。如果不够,再获取第二页。

AI 可以首先调用 web_search,参数为 page: 1,然后根据情况再次调用,page: 2

六、常见问题

问题1:Docker 容器启动后,curl 测试返回空或错误。

解决方案:

  1. 确认容器正在运行:docker ps | grep searxng
  2. 检查日志:docker logs searxng,看是否有错误信息。
  3. 确保配置文件 settings.yml 中的 secret_key 已更改。SearXNG 会要求一个安全的随机密钥。
  4. 确认端口映射正确。如果你的 Docker 使用了不同端口,请在 SEARXNG_INSTANCES 中相应的修改。

问题2:MCP 服务器搜索返回“No results found”或空数组。

解决方案:

  1. 直接在浏览器中访问 http://localhost:8080/search?q=test&format=json,确认 SearXNG API 是否能正常返回 JSON。如果不能,说明 SearXNG 实例本身有问题。
  2. 检查 SEARXNG_INSTANCES 环境变量的 URL 是否正确,是否包含端口。
  3. 某些公共 SearXNG 实例可能禁用了 JSON API 请求限制。

问题3:我可以使用公共 SearXNG 实例而不自己运行吗?

解决方案:可以。存在一些公共的社区实例,例如 https://searx.be。但你无法保证这些实例的运营者是否真的尊重隐私,而且它们可能不稳定或速率受限。对于敏感查询,强烈建议自己运行实例。

问题4:为什么我搜索中文关键词没有结果?

解决方案:确保你的 SearXNG 实例配置中包含了支持中文的搜索引擎(如百度、中文维基百科)。默认配置可能只包含英文引擎。你需要修改 settings.yml 中的 engines 列表。

问题5:服务器支持哪些搜索引擎?

解决方案:这完全取决于你的 SearXNG 实例的配置。默认配置通常包含 Google、Bing、DuckDuckGo、Brave、Wikipedia 等。你可以通过编辑 searxng/settings.yml 文件来启用或禁用特定的引擎。

七、总结

mcp-server-searxng 提供了一个隐私优先的搜索 MCP 解决方案。它充分利用了 SearXNG 元搜索引擎的强大能力和隐私特性,让 AI 助手能够在不牺牲用户隐私的前提下获取实时网络信息。

该项目的亮点包括:

  • 隐私保护:通过自托管或使用可信实例,避免查询泄露。
  • 聚合搜索:一次查询获取多个引擎的结果,来源多样。
  • 精细控制:类别、时间、语言、安全搜索等选项丰富。
  • 完全免费:无需任何 API 密钥,无查询费用。

31 颗星虽然不算高,但对于隐私敏感的用户和开发者来说,这个项目价值极高。如果你正在构建一个注重隐私的 AI 应用,或者希望完全掌控自己的搜索基础设施,那么 mcp-server-searxng 搭配你自己的 SearXNG 实例将是绝佳选择。

标签: 搜索与检索

已有 37 条评论

    1. ulyssesc ulyssesc

      The `all_time` time_range is the default. Omit the parameter.

    2. victorz victorz

      I compared results with Google. Different but not worse.

    3. williamk williamk

      The `categories` includes "social media". Useful for trend tracking.

    4. xiaoq xiaoq

      The `searxng` directory needs write permissions for the container.

    5. yolandaz yolandaz

      The `docker run` command uses `-v` for volume. Works on Linux and Mac.