搜索代理服务

一个通过SearXNG提供网页搜索能力的模型上下文协议(MCP)服务器,适用于Raycast、Zed和OpenCode等MCP客户端。

  • by nicholasq
  • Rust
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 nicholasq/searxng-mcp

使用说明

SearXNG MCP服务器

一种模型上下文协议(MCP)服务器,通过以下方式提供网络搜索功能 SearXNG。此服务器允许像Raycast、Zed和OpenCode这样的MCP客户端使用您自己的SearXNG实例执行web搜索。

请切中要害,告诉我如何操作这个东西!

以下是运行此mcp服务器的推荐方法:

  1. SearXNG服务器在容器中运行,mcp服务器在主机上运行。
  • $ docker/searxng_run.sh
  • $ cargo install --path .
  1. SearXNG服务器在容器中运行,mcp服务器在容器内运行。
  • $ docker/searxng_run.sh
  • $ ./mcp_build.sh
  • $ ./mcp_start.sh

如果你还想要什么,那就靠你自己了。 阅读脚本 第一 在运行它们之前,以防您需要进行更改!

特性

  • 网页搜索:使用SearXNG从多个搜索引擎汇总的结果搜索网络

先决条件

  • 锈
  • Docker(如果你打算在容器中运行SearXNG)

快速设置

要使用docker进行交互式设置,请运行提供的设置脚本:

./setup.sh

注意:此脚本将把SearXNG的主机端口8080映射到容器端口8080。它还创建了一个searxng网络,这样如果你决定在docker容器中运行mcp服务器,它将能够与searxng容器通信。如果您不喜欢此配置,请对脚本进行适当的更改。

此脚本提供了一个交互式菜单,将:

  • 检查Docker可用性
  • 构建SearXNG Docker镜像
  • 启动SearXNG容器
  • 构建MCP Docker镜像

它不会启动MCP服务器容器,因为这应该在MCP客户端的配置中完成。

手动Docker设置

如果你更喜欢用Docker手动设置,你可以参考这些脚本:

基本手动设置:

# Build and run SearXNG
cd docker/
docker build -t searxng-server .
docker run -d --name searxng-server --network searxng -v "searxng_config:/etc/searxng/" -v "searxng_data:/var/cache/searxng/" searxng-server
cd ..

# Build MCP client
docker build -t searxng-mcp .

安装

  1. 克隆此存储库:
git clone https://github.com/nicholasq/searxng-mcp
cd searxng-mcp
  1. 安装项目:
cargo install --path .

配置

可选环境变量:

  • SEARXNG_BASE_URL SearXNG实例的url(默认值:“http://localhost:8080")
  • SEARXNG_TIMEOUT_SECONDS:HTTP超时(秒)(默认值:30)
  • SEARXNG_MAX_RESULTS:要显示的最大结果数(默认值:20)
  • SEARXNG_VALIDATION_TIMEOUT_SECONDS:验证超时(秒)(默认值:10)

用法

与Zed

  1. 将服务器添加到Zed配置文件中:

macOS/Linux: ~/.config/zed/settings.json

{
  "mcpServers": {
    "searxng": {
      "source": "custom",
      "env": {
        "SEARXNG_BASE_URL": "http://localhost:8080"
      },
      "command": "searxng-mcp",
      "args": []
    }
  }
}

刀具参数

这 searxng_search 工具接受以下参数:

  • query (必填):搜索查询字符串
  • categories (可选):逗号分隔的类别列表(例如,“一般、新闻、图像”)
  • engines (可选):以逗号分隔的要使用的特定引擎列表
  • language (可选):结果的语言代码(例如,“en”、“fr”、“de”)
  • page (可选):分页页码(从1开始)
  • time_range (可选):时间过滤器-“日”、“月”或“年”
  • safe_search (可选):安全搜索级别-0(无),1(中等),2(严格)

查询示例

问Zed:

  • “搜索‘rust编程语言’”
  • “搜索过去一个月有关气候变化的最新消息”
  • “使用安全搜索查找猫的图像”
  • “在学术资源中搜索‘机器学习’”

发展

运行测试

# Run unit tests
cargo test

# Run integration tests (requires SearXNG at localhost:8080)
cargo test -- --ignored

项目结构

src/
├── main.rs          # MCP server implementation
├── config.rs        # Configuration management
├── search.rs        # SearXNG API client
└── errors.rs        # Error types and handling

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。