搜索引擎协议服务

searxng-mcp是一个独立的模型上下文协议(MCP)服务器,为SearXNG提供搜索和浏览功能,适用于需要自定义搜索引擎和网页内容提取的场景。

  • by zatevakhin
  • Rust
  • 本地部署
  • 更新于
在 GitHub 查看 zatevakhin/searxng-mcp

使用说明

searxng mcp

SearXNG的独立模型上下文协议(MCP)服务器。

暴露的工具:

  • search:查询SearXNG实例并返回JSON结果
  • browse:获取URL并返回Markdown或文本
  • browse_eval:在加载的页面上评估JavaScript(仅限Obscura后端)
  • engines:列出配置的SearXNG发动机(来自 /config)
  • health:检查与SearXNG的连接(/config)
  • ping:基本健康检查

默认情况下,仅 search 和 browse 暴露。

用法

货物

cargo run -- --transport stdio

或流式HTTP服务器(建议用于网络客户端):

cargo run -- --transport http --bind 127.0.0.1:3344

无

开发程序外壳:

nix develop

构建:

nix build

运行:

nix run . -- --transport http --bind 127.0.0.1:3344

Docker Compose

使用此仓库作为构建源的最小本地堆栈(SearXNG+MCP服务器):

docker compose up --build

这将开始:

  • SearXNG on http://localhost:8080
  • searxng mcp上 http://localhost:3344

配置

配置使用CLI标志、环境变量和内置默认值。

优先:

  • CLI标志
  • 环境变量
  • 默认值

MCP服务器

  • SEARXNG_MCP_TRANSPORT (stdio|http,默认值: stdio)
  • SEARXNG_MCP_BIND (默认值: 127.0.0.1:3344;被使用 http 运输)
  • SEARXNG_MCP_TOOLS (逗号分隔的列表,默认值: search,browse)

CLI标志仍然有效,并且优先于环境变量:

SEARXNG_MCP_TRANSPORT=stdio searxng-mcp --transport http --bind 127.0.0.1:3344

工具列表

默认情况下,此服务器仅公开 search,browse.

要启用其他工具,请执行以下操作:

searxng-mcp --tools search,browse,health

或者通过env:

export SEARXNG_MCP_TOOLS=search,browse,health

SearXNG

  • SEARXNG_BASE_URL (默认值: http://localhost:8080)
  • SEARXNG_DEFAULT_ENGINES (逗号分隔)
  • SEARXNG_DEFAULT_CATEGORIES (逗号分隔)
  • SEARXNG_DEFAULT_LANGUAGE (默认值: en)
  • SEARXNG_SAFE_SEARCH (0|1|2,默认值: 0)
  • SEARXNG_NUM_RESULTS (默认值: 5)
  • SEARXNG_TIMEOUT_SECS (默认值: 20)

浏览

  • BROWSE_BACKEND (simple|obscura,默认值: simple; obscura 需要 --features obscura-backend)
  • browse 工具 format 论点(markdown|text,默认值: markdown;仅为工具参数,不是环境变量或CLI标志)
  • BROWSE_MAX_BYTES (默认值: 2000000;两个后端)
  • BROWSE_TIMEOUT_SECS (默认值: 20;两个后端)
  • BROWSE_USER_AGENT (默认值: searxng-mcp/<version>;简单的后端和Obscura非隐形)
  • BROWSE_FOLLOW_REDIRECTS (true|false,默认值: false;仅限简单后端)
  • BROWSE_MAX_REDIRECTS (默认值: 10;仅限简单后端)
  • BROWSE_OBSCURA_WAIT_UNTIL (load|domload|idle0|idle2,默认值: load;仅遮挡后端)
  • BROWSE_OBSCURA_STEALTH (true|false|1|0|yes|no|on|off,默认值: false;仅遮挡后端;仅限于env; true 需要 --features obscura-stealth)

SSRF控制:

  • BROWSE_ALLOWED_HOSTS (逗号分隔的列表;如果设置,则只允许这些主机)
  • BROWSE_ALLOW_PRIVATE (true|false,默认值: false)

笔记:

  • 如果 BROWSE_ALLOWED_HOSTS 设置后,它将覆盖private/lolocalhost阻塞。
  • 如果没有设置对抗列表, browse 默认情况下,阻止本地主机和私有/环回/链接本地IP。
  • 简单的后端重定向选项包括 BROWSE_FOLLOW_REDIRECTS 和 BROWSE_MAX_REDIRECTS;Obscura在内部处理导航。
  • 隐蔽等待和隐形选项 BROWSE_OBSCURA_WAIT_UNTIL 和 BROWSE_OBSCURA_STEALTH.
  • 遮蔽隐形模式不适用 BROWSE_USER_AGENT;它使用Obscura自己的隐形用户代理/客户端行为。
  • 启用 browse_eval 和 --tools search,browse,browse_eval 仅在使用时 BROWSE_BACKEND=obscura.

使用Obscura支持构建:

cargo build --features obscura-backend

使用Obscura隐身功能构建和运行:

cargo build --features obscura-stealth
BROWSE_BACKEND=obscura BROWSE_OBSCURA_STEALTH=true cargo run --features obscura-stealth -- --tools search,browse

MCP客户端示例

克劳德桌面版

添加到MCP服务器配置中:

{
  "mcpServers": {
    "searxng": {
      "command": "searxng-mcp",
      "args": ["--transport", "stdio"]
    }
  }
}

光标

.cursor/mcp.json:

{
  "mcpServers": {
    "searxng": {
      "command": "searxng-mcp",
      "args": ["--transport", "stdio"]
    }
  }
}

NixOS服务

此仓库在以下位置公开了一个NixOS模块 nixosModules.searxng-mcp.

基于薄片的NixOS配置示例:

{
  inputs.searxng-mcp.url = "github:zatevakhin/searxng-mcp";

  outputs = { self, nixpkgs, searxng-mcp, ... }:
  let
    system = "x86_64-linux";
  in {
    nixosConfigurations.myhost = nixpkgs.lib.nixosSystem {
      inherit system;
      modules = [
        searxng-mcp.nixosModules.searxng-mcp
        ({ ... }: {
          services.searxng-mcp.enable = true;
          services.searxng-mcp.openFirewall = true;
          services.searxng-mcp.listenAddress = "127.0.0.1";
          services.searxng-mcp.port = 3344;

          services.searxng-mcp.tools = ["search" "browse" "health"];

          services.searxng-mcp.searxng = {
            baseUrl = "http://localhost:8080";
            defaultEngines = ["duckduckgo" "startpage"];
          };

          services.searxng-mcp.browse.backend = "obscura";
          services.searxng-mcp.obscura = {
            waitUntil = "load";
            stealth = true;
          };
        })
      ];
    };
  };
}

学分

  • SearXNG 为元搜索提供动力。
  • 晦暗 提供可选的渲染浏览后端。

许可证

MIT。看 LICENSE.