mcpField
S
SearXNG

SearXNG

本地服务
github.com/danchev搜索与检索05 周前更新

关于 SearXNG

SearXNG MCP Server 通过可配置的 SearXNG 实例,为 AI Agent 提供注重隐私的网页搜索。它支持多种搜索筛选条件,以及 stdio 和 Streamable HTTP 传输。

主要功能

  1. 01通过多个搜索引擎检索
  2. 02按类别和语言筛选
  3. 03设置时间范围和结果数量
  4. 04选择 SearXNG 实例
  5. 05支持 stdio 和 Streamable HTTP

适用场景

  1. 01搜索研究所需的网页
  2. 02按类别查找图片或新闻
  3. 03限定搜索语言或时间范围

MCP 相关

它向 MCP 客户端提供 `web_search` 工具,将搜索请求发送到配置的 SearXNG 实例。支持本地 stdio 和远程 Streamable HTTP。

配置

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

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
pypisearxng0.1.2
mcpbsearxng.mcpb

工具

1

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

参数类型必填说明
querystring是搜索查询字符串
enginesarray否搜索引擎,例如 ['google', 'bing', 'duckduckgo']
languagestring否搜索语言代码(默认值为 'en')
categoriesarray否搜索类别,例如 ['general', 'images', 'news']
time_rangeenum否时间范围筛选day | month | week | year
max_resultsinteger否要返回的最大结果数(默认值为 10)

详细介绍

PyPI 版本 许可证 PyPI 下载量

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-urlhttps://searx.partySearXNG 实例基础 URL。必须是绝对 URL,且不能包含凭据、查询字符串或片段。
--timeout30搜索网络请求的总超时时间,单位为秒。
--log-levelWARNING日志详细程度:DEBUG、INFO、WARNING、ERROR、CRITICAL。日志写入 stderr。
--transportstdio提供服务所用的传输方式:stdio 或 http。
--host127.0.0.1使用 --transport=http 时绑定的主机。
--port8000使用 --transport=http 时绑定的端口。
--headerNone随搜索请求发送的自定义 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。

评论

支持 Markdown

第一次接触 MCP?

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

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