关于 SearXNG MCP Server
SearXNG MCP Server 将 SearXNG 搜索接入 MCP,供 AI 助手通过受信任或自营的搜索实例查找网页并读取 URL。它提供搜索筛选、分页及多种传输和部署方式;需另行准备启用 JSON 搜索的 SearXNG 实例。
主要功能
- 01网页搜索、筛选与分页
- 02读取网页和有限 PDF 文本
- 03查询建议与实例能力检查
- 04可选副本故障切换与缓存
- 05STDIO 和 Streamable HTTP
- 06静态令牌与可选 OAuth 保护
适用场景
- 01让 AI 助手搜索网页资料
- 02读取指定 URL 并整理文本
- 03检查 SearXNG 实例的类别和引擎
- 04在本地或 HTTP 服务中接入搜索
MCP 相关
该 MCP 服务将 MCP 客户端连接到 SearXNG,提供网页搜索、查询建议、实例信息检查和 URL 阅读工具。客户端可通过 STDIO 启动服务,也可连接独立运行的 HTTP 服务。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
4收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| query | string | 是 | 搜索查询字符串。这是必需参数名称——必须准确使用 `query`,不能使用 `prompt` 或 `q`。 |
| pageno | integer | 否 | 搜索结果页码(从 1 开始) |
| engines | string | 否 | 以逗号分隔的 SearXNG 引擎名称,用于指定查询对象(例如 'google,bing,ddg')。实时 /config 能力信息会汇总所有可访问实例;为获得一致的多实例结果,建议优先使用 searxng_instance_info engines.common.enabled。engines.available.enabled 中的值仅尽力采用,可能只有部分实例支持。已知值会进行不区分大小写的规范化;未知值会去除首尾空格后转发,以便 SearXNG 忽略或采用。如果 /config 不可用,值将原样转发并附带警告。省略时,每个实例使用其服务端默认值。 |
| language | string | 否 | 搜索结果的语言代码(例如 'en'、'fr'、'de')。默认值取决于实例。 |
| min_score | number | 否 | 最低相关性分数阈值,范围为 0.0 至 1.0。低于此分数的结果将被过滤。 |
| categories | string | 否 | 以逗号分隔的 SearXNG 类别。实时 /config 能力信息会汇总所有可访问实例;为获得一致的多实例结果,建议优先使用 searxng_instance_info categories.common。categories.available 中的值仅尽力采用,可能只有部分实例支持。已知值会进行不区分大小写的规范化;未知值会去除首尾空格后转发,以便 SearXNG 忽略或采用。如果 /config 不可用,值将原样转发并附带警告。省略时,每个实例使用其服务端默认值。 |
| safesearch | enum | 否 | 安全搜索过滤级别(0:无,1:中等,2:严格)0 | 1 | 2 |
| time_range | enum | 否 | 搜索时间范围(day、week、month、year)。明确指定引擎时,所有选定引擎都必须通过 /config 确认 time_range_support=true。day | week | month | year |
| num_results | number | 否 | 要返回的结果数上限(1-20)。运营方上限 SEARXNG_MAX_RESULTS 会作为最高限制生效。 |
| result_detail | enum | 否 | 结果详情:full 保留 SearXNG 元数据和搜索信号;compact 对每个结果仅返回 title、URL 和 content-snippet 字段(JSON 键:title、url、content)。省略时使用 full。compact | full |
| response_format | enum | 否 | 响应格式:面向 Agent 的格式化文本,或面向程序化客户端的原始 JSON。省略时应用 SEARXNG_DEFAULT_RESPONSE_FORMAT;若未设置或无效,则使用 text。显式指定的 response_format 始终优先。text | json |
详细介绍
🔍 SearXNG MCP 服务
尊重隐私的 AI 助手网络搜索——使用由你运营或信任的 SearXNG 实例,搭配 Claude、Cursor 等工具。
一个 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 MCP | Exa MCP | Firecrawl MCP | mcp-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。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。