Skip to main content
Glama

SearXNG Server

SearXNG MCP Server

An MCP server implementation that integrates the SearXNG API, providing web search capabilities.

Features

  • Web Search: General queries, news, articles, with pagination.
  • Pagination: Control which page of results to retrieve.
  • Time Filtering: Filter results by time range (day, month, year).
  • Language Selection: Filter results by preferred language.
  • Safe Search: Control content filtering level for search results.

Tools

  • searxng_web_search
    • Execute web searches with pagination
    • Inputs:
      • query (string): The search query. This string is passed to external search services.
      • pageno (number, optional): Search page number, starts at 1 (default 1)
      • time_range (string, optional): Filter results by time range - one of: "day", "month", "year" (default: none)
      • language (string, optional): Language code for results (e.g., "en", "fr", "de") or "all" (default: "all")
      • safesearch (number, optional): Safe search filter level (0: None, 1: Moderate, 2: Strict) (default: instance setting)
  • web_url_read
    • Read and convert the content from a URL to markdown
    • Inputs:
      • url (string): The URL to fetch and process

Configuration

Setting the SEARXNG_URL

The SEARXNG_URL environment variable defines which SearxNG instance to connect to.

Environment Variable Format
SEARXNG_URL=<protocol>://<hostname>[:<port>]
Examples
# Local development (default) SEARXNG_URL=http://localhost:8080 # Public instance SEARXNG_URL=https://search.example.com # Custom port SEARXNG_URL=http://my-searxng.local:3000
Setup Instructions
  1. Choose a SearxNG instance from the list of public instances or use your local environment
  2. Set the SEARXNG_URL environment variable to the complete instance URL
  3. If not specified, the default value http://localhost:8080 will be used

Using Authentication (Optional)

If you are using a password protected SearxNG instance you can set a username and password for HTTP Basic Auth:

  • Set the AUTH_USERNAME environment variable to your username
  • Set the AUTH_PASSWORD environment variable to your password

Note: Authentication is only required for password-protected SearxNG instances. See the usage examples below for how to configure authentication with different installation methods.

Proxy Support (Optional)

The server supports HTTP and HTTPS proxies through environment variables. This is useful when running behind corporate firewalls or when you need to route traffic through a specific proxy server.

Proxy Environment Variables

Set one or more of these environment variables to configure proxy support:

  • HTTP_PROXY: Proxy URL for HTTP requests
  • HTTPS_PROXY: Proxy URL for HTTPS requests
  • http_proxy: Alternative lowercase version for HTTP requests
  • https_proxy: Alternative lowercase version for HTTPS requests
Proxy URL Formats

The proxy URL can be in any of these formats:

# Basic proxy export HTTP_PROXY=http://proxy.company.com:8080 export HTTPS_PROXY=http://proxy.company.com:8080 # Proxy with authentication export HTTP_PROXY=http://username:password@proxy.company.com:8080 export HTTPS_PROXY=http://username:password@proxy.company.com:8080

Note: If no proxy environment variables are set, the server will make direct connections as normal. See the usage examples below for how to configure proxy settings with different installation methods.

NPX

Basic Configuration
{ "mcpServers": { "searxng": { "command": "npx", "args": ["-y", "mcp-searxng"], "env": { "SEARXNG_URL": "YOUR_SEARXNG_INSTANCE_URL" } } } }
With Authentication
{ "mcpServers": { "searxng": { "command": "npx", "args": ["-y", "mcp-searxng"], "env": { "SEARXNG_URL": "YOUR_SEARXNG_INSTANCE_URL", "AUTH_USERNAME": "your_username", "AUTH_PASSWORD": "your_password" } } } }
With Proxy Support
{ "mcpServers": { "searxng": { "command": "npx", "args": ["-y", "mcp-searxng"], "env": { "SEARXNG_URL": "YOUR_SEARXNG_INSTANCE_URL", "HTTP_PROXY": "http://proxy.company.com:8080", "HTTPS_PROXY": "http://proxy.company.com:8080" } } } }
With Authentication and Proxy Support
{ "mcpServers": { "searxng": { "command": "npx", "args": ["-y", "mcp-searxng"], "env": { "SEARXNG_URL": "YOUR_SEARXNG_INSTANCE_URL", "AUTH_USERNAME": "your_username", "AUTH_PASSWORD": "your_password", "HTTP_PROXY": "http://proxy.company.com:8080", "HTTPS_PROXY": "http://proxy.company.com:8080" } } } }

NPM

npm install -g mcp-searxng
Basic Configuration
{ "mcpServers": { "searxng": { "command": "mcp-searxng", "env": { "SEARXNG_URL": "YOUR_SEARXNG_INSTANCE_URL" } } } }
With Authentication
{ "mcpServers": { "searxng": { "command": "mcp-searxng", "env": { "SEARXNG_URL": "YOUR_SEARXNG_INSTANCE_URL", "AUTH_USERNAME": "your_username", "AUTH_PASSWORD": "your_password" } } } }
With Proxy Support
{ "mcpServers": { "searxng": { "command": "mcp-searxng", "env": { "SEARXNG_URL": "YOUR_SEARXNG_INSTANCE_URL", "HTTP_PROXY": "http://proxy.company.com:8080", "HTTPS_PROXY": "http://proxy.company.com:8080" } } } }
With Authentication and Proxy Support
{ "mcpServers": { "searxng": { "command": "mcp-searxng", "env": { "SEARXNG_URL": "YOUR_SEARXNG_INSTANCE_URL", "AUTH_USERNAME": "your_username", "AUTH_PASSWORD": "your_password", "HTTP_PROXY": "http://proxy.company.com:8080", "HTTPS_PROXY": "http://proxy.company.com:8080" } } } }

Docker

Using Pre-built Image from Docker Hub
docker pull isokoliuk/mcp-searxng:latest
Basic Configuration
{ "mcpServers": { "searxng": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "SEARXNG_URL", "isokoliuk/mcp-searxng:latest" ], "env": { "SEARXNG_URL": "YOUR_SEARXNG_INSTANCE_URL" } } } }
With Authentication
{ "mcpServers": { "searxng": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "SEARXNG_URL", "-e", "AUTH_USERNAME", "-e", "AUTH_PASSWORD", "isokoliuk/mcp-searxng:latest" ], "env": { "SEARXNG_URL": "YOUR_SEARXNG_INSTANCE_URL", "AUTH_USERNAME": "your_username", "AUTH_PASSWORD": "your_password" } } } }
With Proxy Support
{ "mcpServers": { "searxng": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "SEARXNG_URL", "-e", "HTTP_PROXY", "-e", "HTTPS_PROXY", "isokoliuk/mcp-searxng:latest" ], "env": { "SEARXNG_URL": "YOUR_SEARXNG_INSTANCE_URL", "HTTP_PROXY": "http://proxy.company.com:8080", "HTTPS_PROXY": "http://proxy.company.com:8080" } } } }
With Authentication and Proxy Support
{ "mcpServers": { "searxng": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "SEARXNG_URL", "-e", "AUTH_USERNAME", "-e", "AUTH_PASSWORD", "-e", "HTTP_PROXY", "-e", "HTTPS_PROXY", "isokoliuk/mcp-searxng:latest" ], "env": { "SEARXNG_URL": "YOUR_SEARXNG_INSTANCE_URL", "AUTH_USERNAME": "your_username", "AUTH_PASSWORD": "your_password", "HTTP_PROXY": "http://proxy.company.com:8080", "HTTPS_PROXY": "http://proxy.company.com:8080" } } } }
Build Locally
docker build -t mcp-searxng:latest -f Dockerfile .
Basic Configuration
{ "mcpServers": { "searxng": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "SEARXNG_URL", "mcp-searxng:latest" ], "env": { "SEARXNG_URL": "YOUR_SEARXNG_INSTANCE_URL" } } } }
With Authentication
{ "mcpServers": { "searxng": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "SEARXNG_URL", "-e", "AUTH_USERNAME", "-e", "AUTH_PASSWORD", "mcp-searxng:latest" ], "env": { "SEARXNG_URL": "YOUR_SEARXNG_INSTANCE_URL", "AUTH_USERNAME": "your_username", "AUTH_PASSWORD": "your_password" } } } }
With Proxy Support
{ "mcpServers": { "searxng": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "SEARXNG_URL", "-e", "HTTP_PROXY", "-e", "HTTPS_PROXY", "mcp-searxng:latest" ], "env": { "SEARXNG_URL": "YOUR_SEARXNG_INSTANCE_URL", "HTTP_PROXY": "http://proxy.company.com:8080", "HTTPS_PROXY": "http://proxy.company.com:8080" } } } }
With Authentication and Proxy Support
{ "mcpServers": { "searxng": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "SEARXNG_URL", "-e", "AUTH_USERNAME", "-e", "AUTH_PASSWORD", "-e", "HTTP_PROXY", "-e", "HTTPS_PROXY", "mcp-searxng:latest" ], "env": { "SEARXNG_URL": "YOUR_SEARXNG_INSTANCE_URL", "AUTH_USERNAME": "your_username", "AUTH_PASSWORD": "your_password", "HTTP_PROXY": "http://proxy.company.com:8080", "HTTPS_PROXY": "http://proxy.company.com:8080" } } } }

HTTP Transport (Optional)

The server supports both STDIO (default) and HTTP transports:

STDIO Transport (Default)
  • Best for: Claude Desktop and most MCP clients
  • Usage: Automatic - no additional configuration needed
HTTP Transport
  • Best for: Web-based applications and remote MCP clients
  • Usage: Set the MCP_HTTP_PORT environment variable
Basic HTTP Server Configuration
{ "mcpServers": { "searxng-http": { "command": "mcp-searxng", "env": { "SEARXNG_URL": "YOUR_SEARXNG_INSTANCE_URL", "MCP_HTTP_PORT": "3000" } } } }
HTTP Server with Authentication
{ "mcpServers": { "searxng-http": { "command": "mcp-searxng", "env": { "SEARXNG_URL": "YOUR_SEARXNG_INSTANCE_URL", "MCP_HTTP_PORT": "3000", "AUTH_USERNAME": "your_username", "AUTH_PASSWORD": "your_password" } } } }
HTTP Server with Proxy Support
{ "mcpServers": { "searxng-http": { "command": "mcp-searxng", "env": { "SEARXNG_URL": "YOUR_SEARXNG_INSTANCE_URL", "MCP_HTTP_PORT": "3000", "HTTP_PROXY": "http://proxy.company.com:8080", "HTTPS_PROXY": "http://proxy.company.com:8080" } } } }
HTTP Server with Authentication and Proxy Support
{ "mcpServers": { "searxng-http": { "command": "mcp-searxng", "env": { "SEARXNG_URL": "YOUR_SEARXNG_INSTANCE_URL", "MCP_HTTP_PORT": "3000", "AUTH_USERNAME": "your_username", "AUTH_PASSWORD": "your_password", "HTTP_PROXY": "http://proxy.company.com:8080", "HTTPS_PROXY": "http://proxy.company.com:8080" } } } }

HTTP Endpoints:

  • MCP Protocol: POST/GET/DELETE /mcp
  • Health Check: GET /health
  • CORS: Enabled for web clients

Testing HTTP Server:

# Start HTTP server MCP_HTTP_PORT=3000 SEARXNG_URL=http://localhost:8080 mcp-searxng # Check health curl http://localhost:3000/health

Running evals

The evals package loads an mcp client that then runs the src/index.ts file, so there is no need to rebuild between tests. You can see the full documentation here.

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

For Developers

Contributing to the Project

We welcome contributions! Here's how to get started:

0. Coding Guidelines
  • Use TypeScript for type safety
  • Follow existing error handling patterns
  • Keep error messages concise but informative
  • Write unit tests for new functionality
  • Ensure all tests pass before submitting PRs
  • Maintain test coverage above 90%
  • Test changes with the MCP inspector
  • Run evals before submitting PRs
1. Fork and Clone
# Fork the repository on GitHub, then clone your fork git clone https://github.com/YOUR_USERNAME/mcp-searxng.git cd mcp-searxng # Add the original repository as upstream git remote add upstream https://github.com/ihor-sokoliuk/mcp-searxng.git
2. Development Setup
# Install dependencies npm install # Start development with file watching npm run watch
3. Development Workflow
  1. Create a feature branch:
    git checkout -b feature/your-feature-name
  2. Make your changes in src/ directory
    • Main server logic: src/index.ts
    • Error handling: src/error-handler.ts
  3. Build and test:
    npm run build # Build the project npm test # Run unit tests npm run test:coverage # Run tests with coverage report npm run inspector # Run MCP inspector
  4. Run evals to ensure functionality:
    SEARXNG_URL=http://localhost:8080 OPENAI_API_KEY=your-key npx mcp-eval evals.ts src/index.ts
4. Submitting Changes
# Commit your changes git add . git commit -m "feat: description of your changes" # Push to your fork git push origin feature/your-feature-name # Create a Pull Request on GitHub

Testing

The project includes comprehensive unit tests with excellent coverage.

Running Tests
# Run all tests npm test # Run with coverage reporting npm run test:coverage # Watch mode for development npm run test:watch
Test Statistics
  • Unit tests covering all core modules
  • 100% success rate with dynamic coverage reporting via c8
  • HTML coverage reports generated in coverage/ directory
What's Tested
  • Error handling (network, server, configuration errors)
  • Type validation and schema guards
  • Proxy configurations and environment variables
  • Resource generation and logging functionality
  • All module imports and function availability

License

This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.

Deploy Server
A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

SearXNG API を統合し、Web 検索機能を提供する MCP サーバー実装。

  1. 特徴
    1. ツール
      1. 構成
        1. SEARXNG_URLの設定
        2. Claude Desktopでの使用
        3. Smithery経由でインストール
        4. NPX
        5. 国立博物館
        6. ドッカー
      2. ライセンス

        Related MCP Servers

        • A
          security
          A
          license
          A
          quality
          An MCP server for connecting agentic systems to search systems via searXNG.
          Last updated -
          1
          96
          MIT License
        • -
          security
          F
          license
          -
          quality
          An MCP server that integrates with SerpApi to retrieve search results from multiple search engines including Google, Bing, Yahoo, and others, enabling fast access to both live and archived search data.
          Last updated -
          14
        • -
          security
          A
          license
          -
          quality
          An MCP server that enables web searches using a SearxNG instance, allowing MCP-compatible applications like Goose to perform internet searches.
          Last updated -
          GPL 3.0
        • A
          security
          A
          license
          A
          quality
          An MCP server that allows searching through public SearXNG instances by parsing HTML content into JSON results, enabling metasearch capabilities without requiring JSON API access.
          Last updated -
          1
          150
          17
          MIT License

        View all related MCP servers

        MCP directory API

        We provide all the information about MCP servers via our MCP API.

        curl -X GET 'https://glama.ai/api/mcp/v1/servers/ihor-sokoliuk/mcp-searxng'

        If you have feedback or need assistance with the MCP directory API, please join our Discord server