mcpField
S
SearXNG MCP Server

SearXNG MCP Server

本地服务
npmjs.com搜索与检索1.3k1 天前更新

关于 SearXNG MCP Server

SearXNG MCP Server 将 SearXNG 搜索接入 MCP,供 AI 助手通过受信任或自营的搜索实例查找网页并读取 URL。它提供搜索筛选、分页及多种传输和部署方式;需另行准备启用 JSON 搜索的 SearXNG 实例。

主要功能

  1. 01网页搜索、筛选与分页
  2. 02读取网页和有限 PDF 文本
  3. 03查询建议与实例能力检查
  4. 04可选副本故障切换与缓存
  5. 05STDIO 和 Streamable HTTP
  6. 06静态令牌与可选 OAuth 保护

适用场景

  1. 01让 AI 助手搜索网页资料
  2. 02读取指定 URL 并整理文本
  3. 03检查 SearXNG 实例的类别和引擎
  4. 04在本地或 HTTP 服务中接入搜索

MCP 相关

该 MCP 服务将 MCP 客户端连接到 SearXNG,提供网页搜索、查询建议、实例信息检查和 URL 阅读工具。客户端可通过 STDIO 启动服务,也可连接独立运行的 HTTP 服务。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"searxng": {
"command": "npx",
"args": [
"-y",
"mcp-searxng"
],
"env": {
"SEARXNG_URL": "<SEARXNG_URL>",
"AUTH_USERNAME": "<AUTH_USERNAME>",
"AUTH_PASSWORD": "<AUTH_PASSWORD>"
}
}
}
}
启动命令npx -y mcp-searxng
需要配置的环境变量
SEARXNG_URL密钥URL of your SearXNG instance
AUTH_USERNAME密钥Legacy global SearXNG Basic Auth username
AUTH_PASSWORD密钥Legacy global SearXNG Basic Auth password

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmmcp-searxng2.9.0

工具

4

收录的工具列表 · 更新于 3 周前

参数类型必填说明
querystring是搜索查询字符串。这是必需参数名称——必须准确使用 `query`,不能使用 `prompt` 或 `q`。
pagenointeger否搜索结果页码(从 1 开始)
enginesstring否以逗号分隔的 SearXNG 引擎名称,用于指定查询对象(例如 'google,bing,ddg')。实时 /config 能力信息会汇总所有可访问实例;为获得一致的多实例结果,建议优先使用 searxng_instance_info engines.common.enabled。engines.available.enabled 中的值仅尽力采用,可能只有部分实例支持。已知值会进行不区分大小写的规范化;未知值会去除首尾空格后转发,以便 SearXNG 忽略或采用。如果 /config 不可用,值将原样转发并附带警告。省略时,每个实例使用其服务端默认值。
languagestring否搜索结果的语言代码(例如 'en'、'fr'、'de')。默认值取决于实例。
min_scorenumber否最低相关性分数阈值,范围为 0.0 至 1.0。低于此分数的结果将被过滤。
categoriesstring否以逗号分隔的 SearXNG 类别。实时 /config 能力信息会汇总所有可访问实例;为获得一致的多实例结果,建议优先使用 searxng_instance_info categories.common。categories.available 中的值仅尽力采用,可能只有部分实例支持。已知值会进行不区分大小写的规范化;未知值会去除首尾空格后转发,以便 SearXNG 忽略或采用。如果 /config 不可用,值将原样转发并附带警告。省略时,每个实例使用其服务端默认值。
safesearchenum否安全搜索过滤级别(0:无,1:中等,2:严格)0 | 1 | 2
time_rangeenum否搜索时间范围(day、week、month、year)。明确指定引擎时,所有选定引擎都必须通过 /config 确认 time_range_support=true。day | week | month | year
num_resultsnumber否要返回的结果数上限(1-20)。运营方上限 SEARXNG_MAX_RESULTS 会作为最高限制生效。
result_detailenum否结果详情:full 保留 SearXNG 元数据和搜索信号;compact 对每个结果仅返回 title、URL 和 content-snippet 字段(JSON 键:title、url、content)。省略时使用 full。compact | full
response_formatenum否响应格式:面向 Agent 的格式化文本,或面向程序化客户端的原始 JSON。省略时应用 SEARXNG_DEFAULT_RESPONSE_FORMAT;若未设置或无效,则使用 text。显式指定的 response_format 始终优先。text | json

详细介绍

🔍 SearXNG MCP 服务

尊重隐私的 AI 助手网络搜索——使用由你运营或信任的 SearXNG 实例,搭配 Claude、Cursor 等工具。

GitHub Stars npm version npm downloads Docker Pulls License: MIT OpenSSF Scorecard OpenSSF Best Practices mcp-searxng MCP server GitHub MCP Registry

一个 MCP 服务,可集成 SearXNG API,为 AI 助手提供网络搜索能力。

✨ 已收录于 GitHub MCP Registry。

快速开始

你需要一个已启用 JSON 搜索的 SearXNG 实例。本项目将 MCP 客户端连接到 SearXNG;它不会安装 SearXNG。请使用你运营或信任的实例。如有需要,请从自托管指南 或公共实例指南开始。

选择连接方式:

你的设置从这里开始
客户端在本地启动服务安装 Node.js 22 或更高版本,然后使用下方的 NPX 示例或客户端配置指南。
客户端启动 Docker 容器使用安装中的 Docker/STDIO 配置指南。
你有独立运行的 HTTP 服务使用客户端的 HTTP 配置指南,并提供完整的 /mcp URL。
你需要运营 HTTP 服务按照 HTTP 服务指南操作。

对于使用 mcpServers JSON 的客户端(例如 Claude Desktop),请添加:

{
  "mcpServers": {
    "searxng": {
      "command": "npx",
      "args": ["-y", "mcp-searxng"],
      "env": { "SEARXNG_URL": "https://search.example.com" }
    }
  }
}

将示例 URL 替换为你的 SearXNG 基础 URL。其他客户端的配置格式有所不同:请选择对应的客户端配置指南。 本地 STDIO 模式下,请勿设置 MCP_HTTP_PORT。Docker 还需要将环境变量转发到容器中。

重新加载客户端,检查其 MCP 工具列表,然后让它搜索 SearXNG 文档。一个简单的工具调用是使用 searxng_web_search,并传入 {"query":"SearXNG"}。发现工具本身并不能测试与 SearXNG 的连接。如果调用失败,请先查看故障排除指南。

功能

  • 支持分页、筛选、直接回答,以及完整或精简的文本/JSON 输出。
  • 读取 HTML、结构化文本和有长度限制的 PDF 文本;查看标题或选定章节。
  • 发现实例功能并获取查询建议。
  • 可选的副本故障切换/扇出、HTML 回退、缓存、代理和浏览器求解器。
  • 支持本地 STDIO 或 Streamable HTTP,并可通过静态 bearer 和可选 OAuth 进行保护。

请参阅工具指南,了解功能和限制;参阅配置参考,了解设置;参阅历史部署测量数据,了解有界资源规划的依据。

为什么选择 mcp-searxng?

截至 2026-07-29 记录的功能对比

截至 2026-07-29,以下功能对比基于官方的 Brave MCP、 Exa MCP 和 Firecrawl MCP 项目。 “分页”指提供页面或偏移量控制。“可自托管”指搜索服务可在你控制的环境中运行。“免费/无需 API 密钥”指此 MCP 服务无需付费搜索供应商的 API 密钥;但你仍需运行或选择底层 SearXNG 实例。

Brave MCPExa MCPFirecrawl MCPmcp-searxng
网页搜索✓✓✓✓
读取 URL✗✓✓✓
分页✓✗✓✓
可自托管✗✗部分支持✓
免费/无需 API 密钥✗✗✗✓

隐私取决于 SearXNG 的部署方式。由运营者控制的实例可以避免信任第三方搜索服务运营者,而公共实例会收到查询内容,并且可能记录查询。SearXNG 和此 MCP 集成自身并不提供匿名性。

工作原理

MCP client → mcp-searxng → SearXNG → search engines

客户端可以启动自己的 STDIO 进程,也可以连接到 HTTP 服务。SEARXNG_URL 指向 SearXNG 服务,而不是 MCP 端点。读取 URL 时会直接获取选定的网站。支持以分号分隔的副本列表,用于可互换的 SearXNG 部署;请参阅副本配置。

STDIO 是默认传输方式。传统的 Streamable HTTP 会话默认是有状态的:客户端应在完成后发送 DELETE /mcp;如果后续请求因会话终止而收到 HTTP 404,则应重新初始化。现代 HTTP 请求和 MCP_HTTP_STATELESS=true 传统模式均为无状态;请参阅 HTTP 传输配置。

工具

工具用途
searxng_web_search查找来源并优化结果
searxng_search_suggestions补全或优化查询
searxng_instance_info查看分类、引擎和默认设置
web_url_read以文本/Markdown 格式读取已知 URL

工具指南提供示例和完整参数参考。可选的研究工作流介绍了如何检查来源并引用证据。

安装

项目维护的分发方式包括 npm(含 npx)和 Docker。其他软件包格式(包括 Nix)可由社区单独维护。

使用 NPX 和 npm 安装时,需要 Node.js 22 或更高版本。Docker 镜像包含其运行所需的 Node.js 环境。

NPM(全局安装)
npm install -g mcp-searxng
{
  "mcpServers": {
    "searxng": {
      "command": "mcp-searxng",
      "env": {
        "SEARXNG_URL": "YOUR_SEARXNG_INSTANCE_URL"
      }
    }
  }
}
Docker

预构建镜像:

docker pull isokoliuk/mcp-searxng:latest

可以使用 Cosign 验证镜像签名——请参阅 SECURITY.md 了解操作说明。

{
  "mcpServers": {
    "searxng": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "SEARXNG_URL",
        "isokoliuk/mcp-searxng:latest"
      ],
      "env": {
        "SEARXNG_URL": "YOUR_SEARXNG_INSTANCE_URL"
      }
    }
  }
}

要传递其他环境变量,请在 args 中添加 -e VAR_NAME,并将该变量添加到 env 中。 要集成浏览器求解器,请传递 FLARESOLVERR_URL、BYPARR_URL 或两者,并确保此容器可以访问已配置的服务。双模式采用固定的 FlareSolverr 优先顺序,不会自动反向故障转移。安全的渲染后 HTML 和明确的 Byparr PDF 内容会直接读取;含义不明确的内容会使用受控重放处理,并在符合条件的读取失败时进行有限故障转移。完整行为说明和 Docker Compose 示例请参阅 URL Reader Controls。

在本地构建:

docker build -t mcp-searxng:latest -f Dockerfile .

使用上方相同的配置,并将 isokoliuk/mcp-searxng:latest 替换为 mcp-searxng:latest。

Docker Compose

docker-compose.yml:

services:
  mcp-searxng:
    image: isokoliuk/mcp-searxng:latest
    stdin_open: true
    environment:
      - SEARXNG_URL=${SEARXNG_URL:?Set SEARXNG_URL in the environment}
      # Add optional variables as needed — see CONFIGURATION.md

此仓库跟踪的 Compose 文件有意仅支持 STDIO,且不发布任何网络端口;MCP 客户端使用绝对 Compose 文件路径和 docker compose run --rm -T 启动,而不是使用 docker compose up。-T 标志可避免分配伪终端,从而使 MCP JSON-RPC 通过原始标准输入和输出传输。除非 MCP 客户端提供 SEARXNG_URL,否则 Compose 会在启动前失败。

MCP 客户端配置:

{
  "mcpServers": {
    "searxng": {
      "command": "docker",
      "args": [
        "compose",
        "-f", "/absolute/path/to/docker-compose.yml",
        "run", "--rm", "-T", "mcp-searxng"
      ],
      "env": {
        "SEARXNG_URL": "YOUR_SEARXNG_INSTANCE_URL"
      }
    }
  }
}

如果你之前将此仓库跟踪的文件用作运行在 8080 端口上的 HTTP 服务,请将 HTTP 设置放入未跟踪的 docker-compose.override.yml 中:

services:
  mcp-searxng:
    ports:
      - "127.0.0.1:8080:8080"
    environment:
      - MCP_HTTP_PORT=8080
      - MCP_HTTP_HOST=0.0.0.0

此处的 0.0.0.0 是容器侧的绑定地址;主机侧端口仍仅限回环访问。此覆盖配置不含身份验证,仅适用于临时的单主机迁移场景。在添加同机容器或将服务暴露到本机以外之前,请遵循强化的部署指南。

HTTP 传输

单独运行 HTTP,然后连接客户端。有关本地检查、静态 bearer 身份验证、OAuth 要求和部署验证,请参阅 HTTP server guide。

配置

在默认的本地设置中,SEARXNG_URL 是必需项。强化 HTTP 和 OAuth 等可选模式还有相应的附加要求。环境变量、默认值、缓存、超时、代理、TLS 和限制请参阅 配置参考。

可选的 MCP OAuth

HTTP 部署可以使用外部授权提供方提供的 OAuth。 请参阅身份验证选项。 静态 bearer 身份验证和 SearXNG Basic Auth 保护的是不同的连接。

故障排除

症状下一步检查
服务未显示或已断开连接客户端/进程启动
HTTP 身份验证、会话或代理错误HTTP 连接
工具已显示,但搜索失败SearXNG 连接
结果为空、质量差或已过时筛选器、上游元数据和缓存
URL/PDF 读取失败或超时URL 读取
SearXNG 返回 403 Forbidden

JSON 输出可能已禁用,或请求被访问控制层拒绝。更改设置前,请先按照直接检查进行检查。浏览器页面可以正常打开,并不能证明 JSON API 可用。

无法启用 JSON?(HTML 回退)

SEARXNG_HTML_FALLBACK=true 可在搜索响应返回 403/404 或非 JSON 时,尝试使用 HTML 重试。解析结果尽力而为,元数据有限;紧凑输出会省略回退标记。在你不控制的服务上启用此功能前,请阅读公共实例指南。

如需报告错误,请收集最精简的复现步骤和相关错误信息。

文档

配置搜索以获得有效覆盖范围,其中包含经过测试的上游设置、专业引擎路由和 MCP 输出控制。 部署方案包含私有 Compose 堆栈和可选的浏览器提供方,以及注明日期的结果和已知故障。

按任务查找指南。这些链接会打开当前主分支的文档。尚未发布的行为会特别标注;调查旧版本时,请参阅对应的 Git 标签。

贡献

请参阅 CONTRIBUTING.md。

许可证

MIT — 详情请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。