返回市场
MCP-搜索引擎

MCP-搜索引擎

作者:ihor-sokoliuk330 星标更新:2025-11-10

项目介绍

SearXNG MCP 服务器

一个实现了MCP服务器,并集成了SearXNG API的实现,提供网络搜索能力。

https://nodei.co/npm/mcp-searxng.png?downloads=true&downloadRank=true&stars=true

https://badgen.net/docker/pulls/isokoliuk/mcp-searxng

<a href="https://glama.ai/mcp/servers/0j7jjyt7m9"><img width="380" height="200" src="https://gips2.baidu.com/it/u=1793217972,2735728138&fm=3081&app=3081&f=PNG?w=760&h=400" alt="SearXNG Server MCP 服务器" /></a>

特性

  • 网络搜索:通用查询、新闻、文章,支持分页。
  • URL内容读取:高级内容提取,支持分页、部分过滤和标题提取。
  • 智能缓存:URL内容通过TTL(生存时间)进行缓存,以提高性能并减少冗余请求。
  • 分页:控制要检索的结果页面。
  • 时间筛选:按时间段(天、月、年)筛选结果。
  • 语言选择:按首选语言筛选结果。
  • 安全搜索:控制搜索结果的内容过滤级别。

工具

  • searxng_web_search

    • 执行带有分页的网络搜索
    • 输入参数:
      • query (字符串):搜索查询。此字符串传递给外部搜索服务。
      • pageno (数字,可选):搜索页码,从1开始(默认值为1)
      • time_range (字符串,可选):按时间段筛选结果 - 其中之一:"day","month","year"(默认值:无)
      • language (字符串,可选):结果的语言代码(例如:"en","fr","de")或"all"(默认值:"all")
      • safesearch (数字,可选):安全搜索过滤级别(0:无,1:适度,2:严格)(默认值:实例设置)
  • web_url_read

    • 读取并转换URL内容为markdown,具有高级内容提取选项
    • 输入参数:
      • url (字符串):要获取和处理的URL
      • startChar (数字,可选):内容提取的起始字符位置(默认值:0)
      • maxLength (数字,可选):返回的最大字符数
      • section (字符串,可选):在特定标题下提取内容(搜索标题文本)
      • paragraphRange (字符串,可选):返回特定段落范围(例如:"1-5","3","10-")
      • readHeadings (布尔值,可选):仅返回标题列表而不是全文内容

配置

环境变量

必需

  • SEARXNG_URL:SearXNG 实例的URL(默认值:http://localhost:8080
    • 格式:<协议>://<主机名>[:<端口>]
    • 示例:https://search.example.com

可选

  • AUTH_USERNAME / AUTH_PASSWORD:密码保护实例的HTTP基本认证凭据
  • USER_AGENT:自定义User-Agent头(例如:MyBot/1.0
  • HTTP_PROXY / HTTPS_PROXY:用于路由流量的代理URL
    • 格式:http://[用户名:密码@]代理主机:端口
  • NO_PROXY:逗号分隔的绕过列表(例如:localhost,.internal,example.com

安装与配置

NPX

{
  "mcpServers": {
    "searxng": {
      "command": "npx",
      "args": ["-y", "mcp-searxng"],
      "env": {
        "SEARXNG_URL": "YOUR_SEARXNG_INSTANCE_URL"
      }
    }
  }
}
<details> <summary>完整配置示例(所有选项)</summary>
{
  "mcpServers": {
    "searxng": {
      "command": "npx",
      "args": ["-y", "mcp-searxng"],
      "env": {
        "SEARXNG_URL": "YOUR_SEARXNG_INSTANCE_URL",
        "AUTH_USERNAME": "your_username",
        "AUTH_PASSWORD": "your_password",
        "USER_AGENT": "MyBot/1.0",
        "HTTP_PROXY": "http://proxy.company.com:8080",
        "HTTPS_PROXY": "http://proxy.company.com:8080",
        "NO_PROXY": "localhost,127.0.0.1,.local,.internal"
      }
    }
  }
}

注意:根据需要混合使用环境变量。所有可选变量可以独立或一起使用。

</details>

NPM

npm install -g mcp-searxng
{
  "mcpServers": {
    "searxng": {
      "command": "mcp-searxng",
      "env": {
        "SEARXNG_URL": "YOUR_SEARXNG_INSTANCE_URL"
      }
    }
  }
}
<details> <summary>完整配置示例(所有选项)</summary>
{
  "mcpServers": {
    "searxng": {
      "command": "mcp-searxng",
      "env": {
        "SEARXNG_URL": "YOUR_SEARXNG_INSTANCE_URL",
        "AUTH_USERNAME": "your_username",
        "AUTH_PASSWORD": "your_password",
        "USER_AGENT": "MyBot/1.0",
        "HTTP_PROXY": "http://proxy.company.com:8080",
        "HTTPS_PROXY": "http://proxy.company.com:8080",
        "NO_PROXY": "localhost,127.0.0.1,.local,.internal"
      }
    }
  }
}
</details>

Docker

使用Docker Hub上的预构建镜像

docker pull isokoliuk/mcp-searxng:latest
{
  "mcpServers": {
    "searxng": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "SEARXNG_URL",
        "isokoliuk/mcp-searxng:latest"
      ],
      "env": {
        "SEARXNG_URL": "YOUR_SEARXNG_INSTANCE_URL"
      }
    }
  }
}
<details> <summary>完整配置示例(所有选项)</summary>
{
  "mcpServers": {
    "searxng": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "SEARXNG_URL",
        "-e", "AUTH_USERNAME",
        "-e", "AUTH_PASSWORD",
        "-e", "USER_AGENT",
        "-e", "HTTP_PROXY",
        "-e", "HTTPS_PROXY",
        "-e", "NO_PROXY",
        "isokoliuk/mcp-searxng:latest"
      ],
      "env": {
        "SEARXNG_URL": "YOUR_SEARXNG_INSTANCE_URL",
        "AUTH_USERNAME": "your_username",
        "AUTH_PASSWORD": "your_password",
        "USER_AGENT": "MyBot/1.0",
        "HTTP_PROXY": "http://proxy.company.com:8080",
        "HTTPS_PROXY": "http://proxy.company.com:8080",
        "NO_PROXY": "localhost,127.0.0.1,.local,.internal"
      }
    }
  }
}

注意:只添加你需要的 -e 标志和环境变量。

</details>

本地构建

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=YOUR_SEARXNG_INSTANCE_URL
      # 根据需要添加任何可选变量:
      # - AUTH_USERNAME=your_username
      # - AUTH_PASSWORD=your_password
      # - USER_AGENT=MyBot/1.0
      # - HTTP_PROXY=http://proxy.company.com:8080
      # - HTTPS_PROXY=http://proxy.company.com:8080
      # - NO_PROXY=localhost,127.0.0.1,.local,.internal

然后配置你的MCP客户端:

{
  "mcpServers": {
    "searxng": {
      "command": "docker-compose",
      "args": ["run", "--rm", "mcp-searxng"]
    }
  }
}

HTTP传输(可选)

该服务器支持STDIO(默认)和HTTP传输。设置 MCP_HTTP_PORT 启用HTTP模式。

{
  "mcpServers": {
    "searxng-http": {
      "command": "mcp-searxng",
      "env": {
        "SEARXNG_URL": "YOUR_SEARXNG_INSTANCE_URL",
        "MCP_HTTP_PORT": "3000"
      }
    }
  }
}

HTTP端点:

  • MCP协议POST/GET/DELETE /mcp
  • 健康检查GET /health

测试:

MCP_HTTP_PORT=3000 SEARXNG_URL=http://localhost:8080 mcp-searxng
curl http://localhost:3000/health

运行评估

SEARXNG_URL=YOUR_URL OPENAI_API_KEY=your-key npx mcp-eval evals.ts src/index.ts

开发者指南

贡献

我们欢迎贡献!请遵循以下指南:

编码标准:

  • 使用TypeScript,并启用严格的类型安全性
  • 遵循现有的错误处理模式
  • 编写简洁且信息丰富的错误消息
  • 对新功能编写单元测试
  • 维持90%以上的测试覆盖率
  • 提交前使用MCP检查器进行测试
  • 运行评估以验证功能

工作流程:

  1. 分叉并克隆:

    git clone https://github.com/YOUR_USERNAME/mcp-searxng.git
    cd mcp-searxng
    git remote add upstream https://github.com/ihor-sokoliuk/mcp-searxng.git
    
  2. 设置:

    npm install
    npm run watch  # 开发模式,带文件监视
    
  3. 开发:

    git checkout -b feature/your-feature-name
    # 在src/中进行更改
    npm run build
    npm test
    npm run test:coverage
    npm run inspector
    
  4. 提交:

    git commit -m "feat: 描述"
    git push origin feature/your-feature-name
    # 在GitHub上创建PR
    

测试

npm test                    # 运行所有测试
npm run test:coverage      # 生成覆盖率报告
npm run test:watch         # 监视模式

覆盖率: 100%的成功率,全面的单元测试覆盖了错误处理、类型、代理配置、资源和日志记录。

许可证

此MCP服务器采用MIT许可证。这意味着你可以自由地使用、修改和分发软件,但须遵守MIT许可证的条款和条件。更多详情,请参见项目仓库中的LICENSE文件。 </中文翻译>