# Reported issues for SearXNG Search

Pod holds 22 of 57 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to [SearXNG Search](/mcp/searxng-search).

## Most discussed

### Flaresolverr/Byparr support

### What problem does this solve?

Hi, thank you for this project! I've been using it for a while and it works great.

Today I hit a `Website Error (403): Access blocked (bot detection or geo-restriction)`. Accessing the website using a normal browser results in a Cloudflare challenge.

### Proposed solution

For other purposes, I already have a Byparr/Flaresolverr instance running (they have the same API, that's why I refer to them together). In case you're not familiar with them, they are self

[Read the thread](https://github.com/ihor-sokoliuk/mcp-searxng/issues/166) · 2026-07-08 · closed · external user · 10 comments

### v1.2.0 unresponsive

### What happened?

When running `npx mcp-searxng` , nothing happens. No output, no attempt to connect, it just silently fails.

This causes MCP clients to fail with error: 
```
Jun 07 14:16:35 hwkiller-desktop uvx[326259]: 2026-06-07 14:16:35,744 - ERROR - Failed to establish connection for server: 'searxng' - McpError: Connection closed
Jun 07 14:16:35 hwkiller-desktop uvx[326259]: Traceback (most recent call last):
Jun 07 14:16:35 hwkiller-desktop uvx[326259]:   File "/home/hwkiller/.cache/uv

[Read the thread](https://github.com/ihor-sokoliuk/mcp-searxng/issues/91) · 2026-06-07 · closed · external user · 12 comments

### Executing web_url_read seems to produce garbage output

Hello! Recently I noticed that something broke in `web_url_read` tool, when my model is calling it all I get is nonsense binary output.

<img width="816" height="357" alt="Image" src="https://github.com/user-attachments/assets/1d0e9544-df20-48d1-afac-d66a6dcba1bc" />

It seems to be caused by installing the dispatcher for a fetch request. When I comment out this option

https://github.com/ihor-sokoliuk/mcp-searxng/blob/65b0cb16cded0f8fa44109a11710d30e0bbe99a3/src/url-reader.ts#L246

everything s

[Read the thread](https://github.com/ihor-sokoliuk/mcp-searxng/issues/81) · 2026-05-24 · closed · external user · 11 comments

### missing or invalid session ID

Hello. I use a sear-xng in a docker container where I forwarded port 8080 from the container, to port 80 on my local machine.

I installed the server using npm and to start the server, I used `MCP_HTTP_PORT=3000 SEARXNG_URL=http://localhost:80 mcp-searxng`

Here is my output from `curl http://localhost:3000/health`
```
{"status":"healthy","server":"ihor-sokoliuk/mcp-searxng","version":"0.6.5","transport":"http"}
```

And here is the output from `curl http://localhost:3000/mcp`

```
Invalid or mi

[Read the thread](https://github.com/ihor-sokoliuk/mcp-searxng/issues/30) · 2025-10-13 · closed · external user · 17 comments

### Failed to connect: McpError

~~~
Failed to connect: McpError: MCP error -32000: Connection closed
    at Client._onclose (file:///app/node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.4/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js:106:23)
    at _transport.onclose (file:///app/node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.4/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js:73:18)
    at ChildProcess.<anonymous> (file:/app/node_modules/.pnpm/@modelcontextprotocol+sdk@1.17.4/node_mod

[Read the thread](https://github.com/ihor-sokoliuk/mcp-searxng/issues/22) · 2025-09-15 · closed · external user · 14 comments

### Does not start MCP server with version 0.6.2

Problem:

I have a local SearXNG instance working on port 10789, and `SEARXNG_URL=http://localhost:10789 npx -y mcp-searxng` used to work fine.

However since the latest upgrade, running `SEARXNG_URL=http://localhost:10789 npx -y mcp-searxng` would immediately stop after starting, without printing any message. I'm not sure how to get some error log or error message.

I tried `SEARXNG_URL=http://localhost:10789 npx -y mcp-searxng@0.6.1` and it worked. `SEARXNG_URL=http://localhost:10789 npx -y mc

[Read the thread](https://github.com/ihor-sokoliuk/mcp-searxng/issues/20) · 2025-09-08 · closed · external user · 12 comments

### dont work in roo-code

in chat i see plain tag

<searxng_web_search>
some query
1
<time_range>day</time_range>
en
0
</searxng_web_search>

[Read the thread](https://github.com/ihor-sokoliuk/mcp-searxng/issues/15) · 2025-07-06 · closed · external user · 11 comments

### SearxNG tool returns "Error: Invalid URL" despite valid config and working SearxNG instance

When calling the `searxng_web_search` tool with a simple query (e.g., `"movies in 2025"`), the tool returns: "Error: Invalid URL"

The project uses an ADK (Google's Agent Development Kit) architecture, where the agent makes tool calls (such as `searxng_web_search`) via the ADK interface. The agent sends the tool call with the query, and the tool server (mcp-searxng) is expected to return results from SearxNG.

The server communication is working because calls to web_url_read are responding corre

[Read the thread](https://github.com/ihor-sokoliuk/mcp-searxng/issues/14) · 2025-07-01 · closed · external user · 18 comments

## Most recent

### Searches where every engine failed are reported as "No results found" — unresponsive_engines is parsed and discarded

## Summary

`unresponsive_engines` is declared on `SearXNGWeb` (`src/types.ts:31`) but never read anywhere in `src/`. It is parsed off the SearXNG JSON response and discarded.

The consequence is a silent failure: a search where **every engine that reported back failed** is returned to the MCP client as a **successful tool call** with the same string as a search that ran perfectly and simply matched nothing:

```
🔍 No results found for "<query>". Try different search terms or check if SearXNG se

[Read the thread](https://github.com/ihor-sokoliuk/mcp-searxng/issues/262) · 2026-08-29 · open · external user · 0 comments

### 2.0.0 strict HTTP enforcement rejects Kuadrant mcp-gateway broker (session-less ping) — no opt-out

## Summary

Upgrading mcp-searxng **1.16.0 → 2.0.0** in HTTP mode breaks integration with the [Kuadrant mcp-gateway](https://github.com/Kuadrant/mcp-gateway) broker. 2.0.0's stricter `POST /mcp` validation rejects the broker's session-less liveness **ping**; 1.16.0 accepted it. The broker then de-federates the server and drops all of its tools.

## Configuration

HTTP transport, **stateful** (no `MCP_HTTP_STATELESS`):

```
MCP_HTTP_HOST=0.0.0.0
MCP_HTTP_PORT=3000
SEARXNG_URL=http://<searxng>:808

[Read the thread](https://github.com/ihor-sokoliuk/mcp-searxng/issues/256) · 2026-08-21 · closed · external user · 6 comments

### Feature Request: Optional JSON search-API engine as fallback provider alongside SearXNG instances

Hi, thanks for maintaining this — I've been running mcp-searxng as the search tool for a couple of research agents and the instance failover has saved me more than once.

**The pain point**

Public SearXNG instances are the weak link. Even with the cooldown logic in `searxng-instances.ts`, I regularly hit runs where every configured instance is either rate-limited or returns `403 Access blocked (bot detection)`. I saw the Flaresolverr/Byparr request in #166 — same experience here. Standing up Fl

[Read the thread](https://github.com/ihor-sokoliuk/mcp-searxng/issues/234) · 2026-08-05 · closed · external user · 1 comment

### Local LAN access

### What happened?

Hello, I want to let this service run on my Unraid NAS for my local network and I experience that it binds to 127.0.0.1, so no LAN access at all, but I also can not change the BIND Adress. Having another proxy in between seems a bit silly.

Am I missing something?

Best regards and thanks you for your efforts.

### Steps to reproduce

Install Unraid MCP Server from community apps and look up the log after started. It tells its bound to localhost only.

### Expected behavior

[Read the thread](https://github.com/ihor-sokoliuk/mcp-searxng/issues/227) · 2026-08-01 · closed · external user · 1 comment

### Default tool response format

### What problem does this solve?

Hi, first of all thank you for your work!

I would like to set the default responses format of the web search tool to json.

### Proposed solution

Give another config option (environment variable) to configure the default tool response format, so it is possible to set markdown or json.

### Alternatives considered

One could tell the agent to always pass the parameter, but it is brittle and consumes context.

### Anything else?

The markdown output can be less

[Read the thread](https://github.com/ihor-sokoliuk/mcp-searxng/issues/187) · 2026-07-23 · closed · external user · 9 comments

### Support stateless mode for clients that don't preserve session IDs

## Problem

Some MCP clients (e.g., OpenCode with `type: "remote"`) do not preserve the `mcp-session-id` header across requests. The client correctly sends `initialize`, receives a session ID, but subsequent `tools/list` and tool call requests omit the header.

The current server rejects these with:

```
400 Bad Request: No valid session ID provided
```

## Root Cause

`@modelcontextprotocol/sdk` v1.x requires `sessionIdGenerator` to be a function. Setting it to `undefined` throws a type error —

[Read the thread](https://github.com/ihor-sokoliuk/mcp-searxng/issues/173) · 2026-07-16 · closed · external user · 3 comments

### pdf parsing

### What problem does this solve?

searxng-mcp is great for gathering research about a topic, but lots of academic papers are only exposed as pdfs. Thus enabling searxng-mcp to read them would be very useful. 

### Proposed solution

a library like [unpdf](https://github.com/unjs/unpdf) could be used to parse retrieved pdfs. 

### Alternatives considered

_No response_

### Anything else?

_No response_

[Read the thread](https://github.com/ihor-sokoliuk/mcp-searxng/issues/167) · 2026-07-11 · closed · external user · 2 comments

### SSRF: isPrivateIpv4 misses CGNAT 100.64.0.0/10 and other IANA special-purpose ranges

## Problem
`isPrivateIpv4` in `src/url-security.ts:12-25` blocks RFC1918, loopback, 0.0.0.0/8 and link-local, but does not cover CGNAT (100.64.0.0/10, RFC 6598) or other IANA special-purpose ranges suggested for coverage in the fix for #82.

## Cite
`src/url-security.ts:17-23` — predicate checks `0.`, `10.`, `127.`, `192.168.`, `172.16-31.`, `169.254.` only.

## Steps
```bash
MCP_HTTP_HARDEN=true # MCP_HTTP_ALLOW_PRIVATE_URLS unset
# Bind sentinel to a 100.64/10 address on lo
sudo ip a

[Read the thread](https://github.com/ihor-sokoliuk/mcp-searxng/issues/144) · 2026-07-04 · closed · external user · 1 comment

### Windows: NODE_EXTRA_CA_CERTS guidance missing from CONFIGURATION.md (corp proxy TLS)

@
## Problem

`src/tls-config.ts:getSystemCACerts` short-circuits to `null` on Windows because there is no universal CA-bundle path:

```ts
// Windows has no universal CA bundle path; skip auto-detection
if (platformName === "win32") {
  return null;
}
```

The code comment above the function tells developers:

> On Windows, users should set NODE_EXTRA_CA_CERTS pointing to a PEM file.

...but this guidance is **not** in [`CONFIGURATION.md`](https://github.com/ihor-sokoliuk/mcp-searxng/blob/main/

[Read the thread](https://github.com/ihor-sokoliuk/mcp-searxng/issues/138) · 2026-07-01 · closed · external user · 1 comment

### JSON parse error message should hint at SEARXNG_HTML_FALLBACK

@
## Problem

When the SearXNG instance returns a 200 response whose body isnt JSON (Cloudflare interstitial, WAF challenge, an HTML error page, or a search page HTML because the operator forgot to allow `format: json`), `fetchSearchFromInstance` in [`src/search.ts`](https://github.com/ihor-sokoliuk/mcp-searxng/blob/main/src/search.ts#L493-L501) throws:

```
🔍 SearXNG Response Error: Invalid JSON format. Response: "<!doctype html><html lang..."
```

There is no hint that the fix might be either:

[Read the thread](https://github.com/ihor-sokoliuk/mcp-searxng/issues/137) · 2026-07-01 · closed · external user · 1 comment

### parsing non-HTML pages (like pdfs) produces nonsense that gets sent to LLM

### What happened?

url-reader.ts currently assumes HTML, and when retrieving a pdf from a url it cannot decode it, thus feeding nonsense to the LLM. 

### Steps to reproduce

1. call web_url_read on a url containing a pdf
2. content isn't decoded / gated -> retrieved info is nonsense
3. LLM often gets stuck 

### Expected behavior

mcp either skips over content it can't parse or parses properly non-HTML content

### Transport mode

HTTP (MCP_HTTP_PORT set)

### How are you running mcp-searxng?

[Read the thread](https://github.com/ihor-sokoliuk/mcp-searxng/issues/133) · 2026-06-28 · closed · external user · 1 comment

### HTTP mode behind reverse proxy triggers express-rate-limit trust proxy validation error

## Summary

When `mcp-searxng` runs in HTTP mode behind a reverse proxy, requests include `X-Forwarded-For`, but Express is started with the default `trust proxy = false`. Because `express-rate-limit` is enabled, this causes repeated validation errors like:

```text
ValidationError: The 'X-Forwarded-For' header is set but the Express 'trust proxy' setting is false (default).
This could indicate a misconfiguration which would prevent express-rate-limit from accurately identifying users.
code: 'ER

[Read the thread](https://github.com/ihor-sokoliuk/mcp-searxng/issues/132) · 2026-06-24 · closed · external user · 1 comment

### Docker container runs as root

### What problem does this solve?

I was trying to deploy this to my cluster with maximum security settings, which includes the security context `runAsNonRoot` set to true. Kubernetes blocked the deployment since the application runs as root in the container.

### Proposed solution

Add a dedicated user to the container that has a high UID (1000+) and run as that user.

### Alternatives considered

_No response_

### Anything else?

_No response_

[Read the thread](https://github.com/ihor-sokoliuk/mcp-searxng/issues/122) · 2026-06-20 · closed · external user · 1 comment

### Latest release breaks the application

### What happened?

I just updated to the latest release, when running from docker with http transport enabled the mcp server doesn't seem to work.

### Steps to reproduce

1. Run the server with docker (docker compose in my case, with the settings below)

2. try to curl http://localhost:3099/health returns the error:   curl: (52) Empty reply from server

It was working perfectly in the previous release.

### Expected behavior

I would expect the mcp server to work like in the previous release

[Read the thread](https://github.com/ihor-sokoliuk/mcp-searxng/issues/93) · 2026-06-09 · closed · external user · 1 comment

The remaining reports are on [the project's issue tracker](https://github.com/ihor-sokoliuk/mcp-searxng/issues).
