你是否关心自己的搜索隐私?当你在 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. fionax fionax

      The `time_range` filter works great. "week" gives me recent news.

    2. gracep gracep

      The Smithery install was smooth. No manual config needed for Claude.

    3. henryc henryc

      The fallback support for multiple instances is a robust design.

    4. irisq irisq

      I ran into `secret_key` error. The README needs stronger warning to change it.

    5. jackd jackd

      The `safesearch` set to 2 (strict) is great for family-friendly queries.