MCP SearXNG Enhanced Server

MCP SearXNG Enhanced Server

site icon
2025.05.10 0
Python网页搜索网站抓取日期时间工具搜索工具
MCP SearXNG Enhanced Server 是一个基于 Model Context Protocol (MCP) 的服务,主要用于支持分类感知的网页搜索、网站内容抓取以及日期/时间工具。它设计用于与 SearXNG 和现代 MCP 客户端无缝集成。
View on GitHub

Overview

基本能力

产品定位

MCP SearXNG Enhanced Server 是一个增强版的 SearXNG 搜索服务,提供分类感知的网页搜索、网站内容抓取和日期/时间工具功能。

核心功能

  • 🔍 支持分类的 SearXNG 网页搜索(通用、图片、视频、文件、地图、社交媒体)
  • 📄 网站内容抓取,包含引用元数据和自动 Reddit URL 转换
  • 💾 内存缓存,自动验证新鲜度
  • 🚦 基于域名的速率限制,防止服务滥用
  • 🕒 时区感知的日期/时间工具
  • ⚠️ 强大的错误处理,支持自定义异常类型
  • 🐳 Docker 化,通过环境变量配置
  • ⚙️ 容器重启间配置持久化

适用场景

  • 需要分类感知的网页搜索
  • 需要抓取网站内容并获取引用信息
  • 需要时区感知的日期/时间工具
  • 需要防止服务滥用的场景

工具列表

工具名称 功能描述 别名
search_web 通过 SearXNG 进行网页搜索 search, web_search, find, lookup_web, search_online, access_internet, lookup
get_website 抓取网站内容 fetch_url, scrape_page, get, load_website, lookup
get_current_datetime 获取当前日期/时间 current_time, get_time, current_date

常见问题解答

  • 无法连接到 SearXNG:确保 SearXNG 实例正在运行,并且 SEARXNG_ENGINE_API_BASE_URL 环境变量指向正确的端点。
  • 速率限制错误:调整 RATE_LIMIT_REQUESTS_PER_MINUTE 如果遇到太多速率限制错误。
  • 内容提取慢:增加 TRAFILATURA_TIMEOUT 以允许在复杂页面上有更多时间处理内容。
  • Docker 网络问题:如果在 Windows/Mac 上使用 Docker Desktop,host.docker.internal 应该解析到主机机器。在 Linux 上,可能需要使用主机的 IP 地址。

使用教程

使用依赖

  • Docker 安装在系统上
  • 一个运行的 SearXNG 实例(自托管或可访问的端点)

安装教程

构建 Docker 镜像:

docker build -t overtlids/mcp-searxng-enhanced:latest .

运行 SearXNG 实例(手动 Docker 运行):

docker run -i --rm --network=host \
  -e SEARXNG_ENGINE_API_BASE_URL="http://127.0.0.1:8080/search" \
  -e DESIRED_TIMEZONE="America/New_York" \
  overtlids/mcp-searxng-enhanced:latest

配置 MCP 客户端(例如 VS Code 中的 Cline):

{
  "mcpServers": {
    "overtlids/mcp-searxng-enhanced": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm", "--network=host",
        "-e", "SEARXNG_ENGINE_API_BASE_URL=http://host.docker.internal:8080/search",
        "-e", "DESIRED_TIMEZONE=America/New_York",
        "-e", "ODS_CONFIG_PATH=/config/ods_config.json",
        "-e", "RETURNED_SCRAPPED_PAGES_NO=3",
        "-e", "SCRAPPED_PAGES_NO=5",
        "-e", "PAGE_CONTENT_WORDS_LIMIT=5000",
        "-e", "CITATION_LINKS=True",
        "-e", "MAX_IMAGE_RESULTS=10",
        "-e", "MAX_VIDEO_RESULTS=10",
        "-e", "MAX_FILE_RESULTS=5",
        "-e", "MAX_MAP_RESULTS=5",
        "-e", "MAX_SOCIAL_RESULTS=5",
        "-e", "TRAFILATURA_TIMEOUT=15",
        "-e", "SCRAPING_TIMEOUT=20",
        "-e", "CACHE_MAXSIZE=100",
        "-e", "CACHE_TTL_MINUTES=5",
        "-e", "CACHE_MAX_AGE_MINUTES=30",
        "-e", "RATE_LIMIT_REQUESTS_PER_MINUTE=10",
        "-e", "RATE_LIMIT_TIMEOUT_SECONDS=60",
        "-e", "IGNORED_WEBSITES=",
        "overtlids/mcp-searxng-enhanced:latest"
      ],
      "timeout": 60
    }
  }
}

调试方式

运行本地(不使用 Docker) 1. Python 安装:需要 Python 3.9 或更新版本,推荐 Python 3.11。 2. 克隆仓库

git clone https://github.com/OvertliDS/mcp-searxng-enhanced.git
cd mcp-searxng-enhanced
  1. 创建并激活虚拟环境
# Linux/macOS
python3 -m venv .venv
source .venv/bin/activate

# Windows (Command Prompt)
python -m venv .venv
.\\.venv\Scripts\activate.bat

# Windows (PowerShell)
python -m venv .venv
.\\.venv\Scripts\Activate.ps1
  1. 安装依赖
pip install -r requirements.txt
  1. 确保 SearXNG 可访问:确保有运行的 SearXNG 实例及其 API 基础 URL。
  2. 设置环境变量
# Linux/macOS (bash/zsh)
export SEARXNG_ENGINE_API_BASE_URL="http://your-searxng-instance:port/search"
export DESIRED_TIMEZONE="America/Los_Angeles"

# Windows (Command Prompt)
set SEARXNG_ENGINE_API_BASE_URL="http://your-searxng-instance:port/search"
set DESIRED_TIMEZONE="America/Los_Angeles"

# Windows (PowerShell)
$env:SEARXNG_ENGINE_API_BASE_URL="http://your-searxng-instance:port/search"
$env:DESIRED_TIMEZONE="America/Los_Angeles"
  1. 运行服务器
python mcp_server.py
  1. 配置文件 (ods_config.json)
{
  "searxng_engine_api_base_url": "http://127.0.0.1:8080/search",
  "desired_timezone": "America/New_York"
}

许可证

该项目遵循 MIT 开源许可条款,请参阅 MIT 了解完整条款。