关于 SearXNG
SearXNG MCP Server 通过可配置的 SearXNG 实例,为 AI Agent 提供注重隐私的网页搜索。它支持多种搜索筛选条件,以及 stdio 和 Streamable HTTP 传输。
主要功能
- 01通过多个搜索引擎检索
- 02按类别和语言筛选
- 03设置时间范围和结果数量
- 04选择 SearXNG 实例
- 05支持 stdio 和 Streamable HTTP
适用场景
- 01搜索研究所需的网页
- 02按类别查找图片或新闻
- 03限定搜索语言或时间范围
MCP 相关
它向 MCP 客户端提供 `web_search` 工具,将搜索请求发送到配置的 SearXNG 实例。支持本地 stdio 和远程 Streamable HTTP。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
1收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| query | string | 是 | 搜索查询字符串 |
| engines | array | 否 | 搜索引擎,例如 ['google', 'bing', 'duckduckgo'] |
| language | string | 否 | 搜索语言代码(默认值为 'en') |
| categories | array | 否 | 搜索类别,例如 ['general', 'images', 'news'] |
| time_range | enum | 否 | 时间范围筛选day | month | week | year |
| max_results | integer | 否 | 要返回的最大结果数(默认值为 10) |
详细介绍
SearXNG MCP 服务
一个 Model Context Protocol(MCP)服务,通过 SearXNG 元搜索引擎为 AI Agent 提供注重隐私的网页搜索能力。
功能
此服务提供以下主要功能:
- 通过多个搜索引擎进行网页搜索
- 支持多种搜索类别(综合、图片、新闻等)
- 可自定义搜索引擎选择
- 语言筛选
- 时间范围筛选
- 控制搜索结果数量
可用工具
web_search- 使用 SearXNG 进行网页搜索- 必需参数:
query(字符串):搜索查询
- 可选参数:
categories(数组):搜索类别,例如 ['general', 'images', 'news']engines(数组):搜索引擎,例如 ['google', 'bing', 'duckduckgo']language(字符串):搜索语言代码,默认为 "en"max_results(整数):结果数量上限,默认为 10(1-100)time_range(字符串):时间范围筛选('day'、'week'、'month'、'year')
- 必需参数:
如果无法完成搜索(实例无法访问、对请求进行限流或返回格式错误的响应),工具会返回说明失败原因的错误结果,而不是空结果列表。
搜索限制
每个服务进程最多允许 8 个并发搜索。超出后续调用会立即返回错误,可稍后重试。--timeout 限制整个网络操作的时长,包括响应流式传输;取消操作会关闭当前请求。JSON 解析前,响应大小限制为 2 MiB。
配置的实例必须直接提供 /search:不接受重定向。客户端会请求 Accept-Encoding: identity,并拒绝压缩响应,以避免无法限制的解压操作。结果字段也会截断至其既定限制。缺少 results、results 不是列表或上游返回错误对象时,都会报告为失败;有效的空列表仍视为搜索成功。
应用日志不会记录搜索查询或上游异常文本。即使选择了 --log-level=DEBUG,CLI 也会将 HTTP 依赖项的日志级别保持在 WARNING。
隐私政策
本软件不运营托管式搜索服务,也不会将搜索查询发送给维护者。它运行在用户的设备或基础设施上,并将每条查询、所选引擎、类别、语言、时间范围和安全搜索设置直接发送至配置的 SearXNG 实例。搜索结果会返回给已连接的 MCP 客户端。
本软件不会持久化查询或结果、使用分析或广告跟踪器、创建用户画像,也不会与维护者共享数据。运行日志会记录结果数量和错误,但不会记录查询文本或上游异常详情。请求和结果数据仅暂存于内存中,请求完成后即会丢弃。
所选的 SearXNG 实例及其联系的搜索引擎均为独立的第三方。它们的数据收集、使用、共享和保留实践由各自的隐私政策规定。发送敏感查询前,用户应查看所选实例的隐私声明,或自行运行信任的实例。CLI 默认实例为 https://searx.party;其隐私政策见 https://searx.party/info/en/privacy。
隐私相关问题和请求可提交至 https://github.com/danchev/searXNG/issues。
命令行选项
| 选项 | 默认值 | 描述 |
|---|---|---|
--instance-url | https://searx.party | SearXNG 实例基础 URL。必须是绝对 URL,且不能包含凭据、查询字符串或片段。 |
--timeout | 30 | 搜索网络请求的总超时时间,单位为秒。 |
--log-level | WARNING | 日志详细程度:DEBUG、INFO、WARNING、ERROR、CRITICAL。日志写入 stderr。 |
--transport | stdio | 提供服务所用的传输方式:stdio 或 http。 |
--host | 127.0.0.1 | 使用 --transport=http 时绑定的主机。 |
--port | 8000 | 使用 --transport=http 时绑定的端口。 |
--header | None | 随搜索请求发送的自定义 HTTP 标头(例如 X-Forwarded-For: 1.2.3.4)。可多次指定。 |
Docker / Kubernetes
你可以使用发布到 GitHub Container Registry 的官方容器镜像轻松运行此服务:
docker run -p 8000:8000 ghcr.io/danchev/searxng:latest \
--transport http \
--host 0.0.0.0 \
--instance-url=https://searx.party \
--header "Authorization: Bearer my-secret-token"
传输方式
默认情况下,服务使用 stdio 通信,这是本地 MCP 客户端(Claude Desktop、IDE 集成、uvx)启动服务时所用的方式。
如需远程访问,使用 --transport http 可在 /mcp 提供 Streamable HTTP 传输:
searxng --transport http --host 127.0.0.1 --port 8000
# endpoint: http://127.0.0.1:8000/mcp
有意不实现旧版 SSE 传输。它已在 2025-03-26 的 MCP 协议修订中被 Streamable HTTP 取代,不应在新的部署中使用。
安全性: 服务不执行身份验证,因此默认绑定到 127.0.0.1。仅在受信任的网络中使用 --host 0.0.0.0,或在服务前配置需要身份验证的反向代理。
绑定到非环回主机还会禁用 MCP SDK 的 DNS 重绑定保护;该保护仅能自动用于 127.0.0.1、localhost 和 ::1。绑定到环回地址时,伪造的 Host 标头会被拒绝,并返回 421 Misdirected Request;绑定到公共地址时,则会接受任何 Host。出现这种情况时,服务会在启动时记录警告。
使用示例
配置为 MCP 服务
要将 SearXNG 设置为 MCP 服务,请在 MCP 配置文件中添加以下任一配置:
UVX 设置:
"mcpServers": {
"searxng": {
"command": "uvx",
"args": ["searxng", "--instance-url=https://searx.party"]
}
}
Docker 设置(本地 stdio):
"mcpServers": {
"searxng": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/danchev/searxng:latest",
"--instance-url=https://searx.party"
]
}
}
这会通过 stdio 启动服务,这是本地客户端的合适选择。
远程设置(Streamable HTTP):
将服务作为长时间运行的进程启动:
searxng --transport http --host 0.0.0.0 --port 8000 \
--instance-url=https://searx.party
然后将客户端指向其 /mcp 端点:
"mcpServers": {
"searxng": {
"url": "http://your-host:8000/mcp"
}
}
请注意,需要使用 --host 0.0.0.0 才能接受来自其他机器的连接;另请留意上文的安全提示:服务未经过身份验证,因此请将其限制在受信任的网络中,或在服务前配置需要身份验证的反向代理。
调用示例
{
"name": "web_search",
"arguments": {
"query": "climate change research",
"categories": ["general"],
"engines": ["google"],
"language": "en",
"max_results": 15,
"time_range": "month"
}
}
调试
你可以使用 MCP inspector 调试服务:
npx @modelcontextprotocol/inspector uvx searxng
许可证
AGPLv3+ License - 详情请参阅 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。