Skip to main content
Glama
fighter3005

searxng-mcp

by fighter3005
README.md
# searxng-mcp

MCP server for web search via a self-hosted [SearXNG](https://docs.searxng.org/) instance.

Provides a single `search_web` tool that queries your SearXNG instance and returns structured results (title, URL, snippet).

## Setup

### 1. Set environment variable

```bash
export SEARXNG_BASE_URL="http://searxng:8080"
```

Optional:

```bash
export SEARXNG_LANGUAGE="en-US"
export SEARXNG_CATEGORIES="general"
export SEARXNG_ENGINES="google,bing"
export SEARXNG_TIME_RANGE="month"
export SEARXNG_SAFESEARCH="1"
export SEARXNG_USER_AGENT="my-app/1.0"
export SEARXNG_HEADERS_JSON='{"Authorization":"Bearer ..."}'
export SEARXNG_TIMEOUT_SECONDS="30"
```

### 2. Run

No install needed — run directly from GitHub with `uvx`:

```bash
uvx --from "git+https://github.com/fighter3005/search-mcp" searxng-mcp
```

Or from a local clone:

```bash
uvx --from /path/to/search-mcp searxng-mcp
```

## Client configuration

### Claude Code

```bash
claude mcp add --transport stdio searxng-search \
  -e SEARXNG_BASE_URL="http://searxng:8080" \
  -- uvx --from "git+https://github.com/fighter3005/search-mcp" searxng-mcp
```

### Codex

```bash
codex mcp add searxng-search \
  --env SEARXNG_BASE_URL="http://searxng:8080" \
  -- uvx --from "git+https://github.com/fighter3005/search-mcp" searxng-mcp
```

### Cursor / VS Code

Create `.cursor/mcp.json` or `.vscode/mcp.json`:

**With uvx from GitHub:**

```json
{
  "mcpServers": {
    "searxng-search": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/fighter3005/search-mcp", "searxng-mcp"],
      "env": {
        "SEARXNG_BASE_URL": "http://searxng:8080"
      }
    }
  }
}
```

**After install:**

```json
{
  "mcpServers": {
    "searxng-search": {
      "command": "searxng-mcp",
      "env": {
        "SEARXNG_BASE_URL": "http://searxng:8080"
      }
    }
  }
}
```

### Claude Desktop

Edit `claude_desktop_config.json`:

**With uvx from GitHub (no install needed):**

```json
{
  "mcpServers": {
    "searxng-search": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/fighter3005/search-mcp", "searxng-mcp"],
      "env": {
        "SEARXNG_BASE_URL": "http://searxng:8080"
      }
    }
  }
}
```

**After install (`pip install -e .`):**

```json
{
  "mcpServers": {
    "searxng-search": {
      "command": "searxng-mcp",
      "env": {
        "SEARXNG_BASE_URL": "http://searxng:8080"
      }
    }
  }
}
```

### LiteLLM / Anthropic

Add to your `config.yaml`:

```yaml
mcp_servers:
  searxng-search:
    command: uvx
    args:
      - "--from"
      - "git+https://github.com/fighter3005/search-mcp"
      - "searxng-mcp"
    env:
      SEARXNG_BASE_URL: "http://searxng:8080"
```

Or as a JSON `litellm_config`:

```json
{
  "mcp_servers": {
    "searxng-search": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/fighter3005/search-mcp", "searxng-mcp"],
      "env": {
        "SEARXNG_BASE_URL": "http://searxng:8080"
      }
    }
  }
}
```

## Tool

| Tool | Parameters | Description |
|------|-----------|-------------|
| `search_web` | `query` (str), `num_results` (int, default 5) | Search the web via SearXNG |

Returns `{"results": [{"title": str, "url": str, "snippet": str}, ...]}`.

## Requirements

- Python 3.11+
- A running SearXNG instance with JSON format enabled

TDQS

A4.3/5.0

Scored across 1 tool

Disambiguation5/5

Only one tool exists, so there is no possibility of confusion between tools.

Naming Consistency5/5

The single tool follows a clear verb_noun pattern (search_web), and there are no other tools to create inconsistency.

Tool Count3/5

One tool is on the low end for a typical server, but it is focused on a single search operation, making it borderline appropriate.

Completeness3/5

The server covers the basic search use case, but lacks additional search types or configuration options that might be expected from a full SearXNG integration.

Maintenance

ActivityInactive
ResponsivenessNo issues