Go to Content
RUEN中文

Development18 min of readingAuthor: The SystemsLab command

How can I give Claude Code a free search without API keys?

Your SearXNG remains the most reliable free search for Claude Code: no keys, no quotas, no intermediary. We analyze its setup and trap with JSON, DuckDuckGo server, 12 projects with GitHub and local research stacks.

Небольшой сервер в стойке в офисе, на передней панели светятся индикаторы работающих контейнеров

Briefly

  • As of September 2026, the most reliable free search for Claude Code is your SearXNG in Docker and the MCP—mcp-searxng server. Keys and quotas are not needed, and there is no intermediary between you and search engines.
  • The main trap of SearXNG: by default, it returns only HTML, and 403 Forbidden responds to a request in JSON. Enable search.formats: [html, json] in settings.yml.
  • If you don't want to install a server, DuckDuckGo-nickclyde server/duckduckgo-mcp-server will do: one team, limit 30 searches per minute. In June 2026, he silently returned zero results until they added a backup backend to curl_cffi.
  • We counted 12 live search projects on GitHub, nine of them work without keys, including agent-search-mcp with Yandex. Scrapers parse the HTML of search engines and therefore break down when changing the layout and run into captchas.
  • Stars and the date of the last commit filter out projects better than getting into the awesome list: there are 237 search entries in the largest list, and many of them are paid services.

This is the third article of five in the series "Free Internet Search for Claude Code". In the series: built-in WebSearch/WebFetch and MCP connection; services with API and free tariff; search without keys and on your server (this article); browsers, scrapers and services that have stopped working; search from Russia, security, quality, token consumption and cheat sheet "what to choose". All data was verified on 09/17/2026.

Which free search for Claude Code works without API keys?

There are three types of solutions that work without keys: your own SearXNG meta search engine, a server for DuckDuckGo, and multi-engine servers with GitHub. Aggregators stand alone: they do not cancel keys, but collect free quotas of several paid services for one tool.

The MCP server is a small program that, using the Model Context Protocol, gives the AI agent new tools, for example, " search the Internet " or "read the page". Claude Code connects such servers with the claude mcp add command and then calls them along with the built-in WebSearch and WebFetch.

Self-hosted is an option in which the service runs on your computer or server, and not from the provider. For search, this means: there is no monthly limit, there is no agreement with a third-party API, and there is no third party that sees your requests. In return, you are responsible for updates and for ensuring that search engines do not block your IP.

How to connect SearXNG to Claude Code?

You need to raise SearXNG in Docker, allow JSON responses in its settings, and connect the mcp-searxng server to Claude Code. The entire setup fits into two commands and four configuration lines.

SearXNG is an open meta search engine: it sends your query to dozens of search engines and combines their answers into one issue. The project is distributed under the AGPL-3.0 license, it has about 37 thousand stars on GitHub (the SearXNG repository). The most mature MCP bridge to it is ihor-sokoliuk/mcp-searxng.

ihor-sokoliuk/mcp-searxng — without a key

The server can scroll through the output pages and filter the results, read HTML and PDF (web_url_read tool), switch between several SearXNG instances, cache the results, work through a proxy and over Streamable HTTP with authorization. Streamable HTTP is an MCP network mode in which the server runs as a separate service, rather than being run by the client as a child process. The project is in the GitHub MCP Registry. To run, you need a Node.js 22+ or Docker. The SearXNG server itself does not install: it needs to be raised separately (project README; GitHub API; npm statistics).

Key figures: 1242 stars; version 2.3.0 from 09/15/2026; about 58 thousand downloads from npm per month; cache stores results for 24 hours.

Step 1. Launch SearXNG

SearXNG developers recommend installing it via docker compose from the repository. One container is enough for a quick sample (SearXNG documentation: Docker):

docker run --name searxng -d -p 8888:8080 -v "./config/:/etc/searxng/" -v "./data/:/var/cache/searxng/" docker.io/searxng/searxng:latest

Port 8888 is taken from the SearXNG example. After launching, the search opens in the browser at http://localhost:8888 .

Step 2. Connect the MCP server in Claude Code

Via npx, if there is a Node on the machine.js 22+:

claude mcp add --scope user --env SEARXNG_URL=http://localhost:8888 --transport stdio searxng -- npx -y mcp-searxng

Via Docker, if Node.I don't want to install js:

# Docker Desktop (Windows, macOS)
claude mcp add --scope user --env SEARXNG_URL=http://host.docker.internal:8888 --transport stdio searxng-docker -- docker run -i --rm -e SEARXNG_URL isokoliuk/mcp-searxng:latest
# Linux with Docker Engine
claude mcp add --scope user --env SEARXNG_URL=http://host.docker.internal:8888 --transport stdio searxng-docker -- docker run -i --rm --add-host=host.docker.internal:host-gateway -e SEARXNG_URL isokoliuk/mcp-searxng:latest

The --scope user flag makes the server available in all your projects, and --transport stdio means that Claude Code starts the server itself and communicates with it via standard input and output. In the mcp-searxng documentation, there is an example address in both commands https://search.example.com (client-configurations.md ). It also says that the -d and -t flags cannot be added to docker run: the client needs " raw " input and output of the container.

Step 3. Allow responses in JSON

The authors of mcp-searxng recommend minimal settings.yml (self-hosted SearXNG guide):

  • use_default_settings: true — take all other default settings;
  • search.formats: [html, json] — allow responses in JSON;
  • server.secret_key — set your instance secret key;
  • server.limiter: true and address Valkey — enable request limiter.

Limiter is a limiter built into SearXNG that cuts off bots. Valkey is an open "key—value" repository compatible with Redis; the limiter counts requests in it. Protection is needed because the search engines themselves also take SearXNG for a bot and respond with a captcha. The SearXNG documentation even has a separate page on how to solve a captcha from an IP server (SearXNG: limiter).

Where to place a SearXNG

A container on a working laptop is enough for one developer. It is more convenient for the team to have one instance on the server in the office or in the cloud: all agents go to the same point, settings and cache are shared, and one IP looks out, which is easier to control. We place such a server in the customer's server room along with other internal services.

Is it possible to use public instances of SearXNG?

It is possible, but be careful: many of them have disabled JSON, and all of them are not designed for the flow of requests from agents. The authors of mcp-searxng ask you to specify one URL without fan mailing, not to go through instances in parallel, not to bypass the captcha and not to disguise automation for the browser. They call the searx.space directory a "search tool, not a recommendation" (guide to public instances).

There is a minimalistic alternative in Python — SecretiveShell/MCP-searxng, launched by the uvx mcp-searxng command. It has the same package name as the npm version, but it is a different project (README of the project). If mcp-searxng is found in the instructions, check which package manager you are talking about: npx or uvx.

From Russian-language materials, it is worth reading the article on Habré "SearXNG + Claude Code: free web search instead of $10 per 1000 queries" (March 2026). The author formulates the main advantage as follows: "The request goes to localhost → your IP → search engines. Anthropic is not involved". His example includes Google, DuckDuckGo, Brave and Wikipedia (Habr).

Инженер за консолью настраивает сервер
Your SearXNG is deployed by a single Docker container. The main thing when setting up is to allow JSON responses in settings.yml and enable limiter, otherwise the agent will receive a 403, and search engines will start responding with a…

Is it possible to do DuckDuckGo without its server?

It is possible: the nickclyde/duckduckgo-mcp-server server is installed by one team and does not require any infrastructure. But it parses DuckDuckGo HTML pages and was already breaking down when the search engine changed the behavior.

nickclyde/duckduckgo-mcp-server — without a key

To run, you need Python 3.10+ and a uv package manager for Python that can run utilities without a separate installation via uvx (project README; GitHub API).

Key figures: 1492 stars; version 0.7.0 from 09/04/2026; up to 30 searches and up to 20 page downloads per minute.

The history of this server shows how fragile scraping is — automatic parsing of other people's web pages. In June 2026 html.duckduckgo.com I started responding with an empty HTTP 202 to the HTTPS fingerprint of the httpx client, and the search silently returned zero results (issue #46). The TLS fingerprint is a set of parameters with which the client establishes a secure connection; by it, the site distinguishes the browser from the script.

The fix (PR#50) added a backup backend on curl_cffi that mimics Chrome's TLS handshake. It works only if an additional set of dependencies [browser] is installed. Therefore, it is better to put the server like this:

claude mcp add ddg-search -- uvx --with "duckduckgo-mcp-server[browser]" duckduckgo-mcp-server

The command is compiled from two lines of the README: the basic claude mcp add ddg-search uvx duckduckgo-mcp-server and the recommended launch from [browser]. If the agent suddenly stops finding something without an obvious error, first of all check if this set is installed.

What kind of multi-slide MCP servers without keys are on GitHub?

As of 09/17/2026, we counted 12 live projects, nine of them work without keys: from local search on 18 engines to servers with Yandex and Tor. Kindly Web Search and fastCRW require you to set up a search provider, and mcp-omnisearch is an aggregator of paid APIs with keys. They distribute the risk of blocking between several search engines, but all parse HTML, so they suffer from layout changes and captchas.

Stars and activity dates are taken from the GitHub API and repository pages as of 09/17/2026. Descriptions are based on the projects' README, they were not checked by independent tests. Wigolo and fastCRW benchmarks are published by the authors themselves.

The projectWhat he can do (according to the project's README)InstallationStars, activity, license
KnockOutEZ/wigolo, without keyLocal search on 18 engines with output fusion (rank fusion), loading, crawling and extracting pages. Takes about 1.5 GB: browser and local modelsnpx wigolo init --agents=claude-code (Node 20+)5276; 09/17/2026; AGPL-3.0 (by README)
anysearch-ai/anysearch-mcp-server, without a keyHosting service, anonymous access with reduced limitsclaude mcp add --transport http anysearch https://api.anysearch.com/mcp ...1851; 17.09.2026; Apache-2.0
Aas-ee/open-webSearch, without a keyBing (by default), DuckDuckGo, Brave, Startpage, Baidu, Sogou, CSDN and others; Google is in the plansnpx open-websearch@latest, only JSON configs in the README1809; 13.09.2026; Apache-2.0
us/crw (fastCRW)An analogue of Firecrawl and Tavily on Rust; the crw setup command is needed to searchcurl -fsSL https://fastcrw.com/install | sh (macOS, Linux)1040; 16.09.2026; AGPL-3.0
Kindly Web SearchNeed a search provider, free of charge — with your own SearXNG. Full text of pages via headless Chromiumclaude mcp add --transport stdio kindly-web-search ...387; 16.09.2026; MIT
spences10/mcp-omnisearch, free provider ratesAggregator: Tavily, Brave, Kagi, Exa, Linkup, Firecrawl; providers without a key are skippednpx mcpick add --name mcp-omnisearch --command npx --args=-y,mcp-omnisearch349; 14.09.2026; MIT
yokingma/one-search-mcp, without a keyLocal mode (via browser: Bing, Google, Baidu), DuckDuckGo, SearXNGclaude mcp add one-search-mcp -- npx -y one-search-mcp140; 31.07.2026; MIT
pinkpixel-dev/web-scout-mcp, without a keyDuckDuckGo and text extraction from pagesnpm install -g @pinkpixel/web-scout-mcp134; 21.07.2026; Apache-2.0
damionrashford/RivalSearchMCP, without a keyDuckDuckGo, Bing, Yahoo, Mojeek, Wikipedia, as well as social networks, news and scientific databases; there is hosting for 100 requests per minuteSee the note below128; 17.09.2026; MIT
lennney/agent-search-mcp, without a key8 free engines, including Yandex; no browser and Pythonclaude mcp add agent-search -- npx -y agent-search-mcp110; 16.09.2026; Apache-2.0
brcrusoe72/agent-search, without a keySearXNG in docker compose, at the request of Tor, its own MCP packagedocker compose up -d79; 14.09.2026; MIT
sweetcornna/free-search-mcp, without a key49 engines in the registry, by default DuckDuckGo, Mojeek, Google News, Bing; the research() function produces a report with quotesclaude mcp add search -- uvx free-search-mcp (Python 3.11+)75; 30.08.2026; MIT

What is important to know about some projects

  • anysearch-mcp-server is not a local tool, but a commercial service: requests go to its server. README instructs the agent to register the user himself via the API with his real email (README anysearch). It is better to leave the decision on registration and transfer of the address to the person.
  • open-webSearch in the README is marked as "for personal use only", that is, only for personal use. The advertising block of the seller of resident proxies is also placed there.
  • mcp-omnisearch allows you to add free quotas of several services (for example, Tavily, Exa and Brave) for one web_search tool (README mcp-omnisearch). The keys to these services are still needed; their tariffs are discussed in the previous article of the series.
  • RivalSearchMCP in the README offers the command claude mcp add RivalSearchMCP --url https://RivalSearchMCP .fastmcp.app/mcp. The standard syntax of Claude Code for a remote server is different: claude mcp add --transport http <name> <url>, but there is no --url flag in the Claude Code documentation. The command from the README may not work; it is more reliable to connect hosting with the standard claude mcp add --transport http RivalSearchMCP command https://RivalSearchMCP .fastmcp.app/mcp (our conclusion is based on the syntax of Claude Code, the authors of the project do not provide it).
  • free-search-mcp fundamentally does not bypass the proof-of-work captchas of Bing and Brave, referring to the terms of use of search engines. Proof-of-work-captcha forces the client to perform a computational task before giving away the page.

Any of these servers brings text from other people's pages into the agent context, and therefore possible hidden instructions for the model. Such an attack is called prompt injection. Before installing, see who the author is, what permissions the server gets, and where requests go; when connecting agents in the company, we analyze this as part of an information security audit. More about the risks — in the fifth article of the series.

Which search MCP servers are better not to install?

You should not put abandoned projects: at the first change of the layout of the search engine, no one will fix them. As of 09/17/2026, these include four servers (GitHub API: pskov; GitHub API: mrkrsl):

The projectStatusLast update
pskill9/web-searchAbandoned; Google scraper without license30.12.2024
mrkrsl/web-search-mcpAbandoned08.08.2025
zhsama/duckduckgo-mcp-serverAbandoned04.04.2025
jae-jae/searxng-mul-mcpAbandoned25.08.2025

You should not blindly trust awesome lists either. The largest of them, punkpeye/awesome-mcp-servers, contains 237 entries in the "Search & Data Extraction" section, and many of them are small pay—per-call services. Therefore, the stars and the date of the last commit weed out projects better than getting into the list (punkpeye/awesome-mcp-servers). GitHub MCP Registry for the request "search" so far shows mainly vendor servers and mcp-searxng (directory github.com/mcp ).

Are there free local stacks for deep research?

There are, but with the MCP server for Claude Code, only local-deep-research is documented from them. The rest of the notable projects are separate applications, not tools for the agent.

Deep research is a mode in which the system itself performs a series of searches, reads what it finds and writes a summary report with links. A regular search server gives the agent a list of results, and the research stack does part of the agent's work itself.

LearningCircuit/local-deep-research

The most notable project for multi-step deep research. He has a documented MCP server (docs/mcp-server.md) and he works with local models and search engines (repository).

Key figures: 9099 stars; the project is actively developing.

Vane (formerly Perplexica) and Morphic

Both projects are shipped with SearXNG, but there is no MCP server in their README. These are independent search applications with their own interface, and not tools for Claude Code (Vane; Morphic).

Key figures: Vane — 36.9 thousand stars; Morphic — 9.1 thousand stars.

Ollama Web search — free rate

Ollama is a popular program for running language models on your computer. Her web search is free, but requires an account and an OLLAMA_API_KEY key, that is, this is no longer an "without keys" option. The MCP server exists only as an example script, numerical limits have not been published (Ollama documentation).

Stacks with an external model

If the report is written by an external model, the stack is free only when the model itself is free. For example, gigaxity-deep-research uses models through OpenRouter and costs nothing only with a free or local model (repository).

What to choose: SearXNG, DuckDuckGo or a multi-move server?

For permanent work, choose your SearXNG with mcp-searxng, for a quick test — DuckDuckGo server, and multi—engine servers - when you need specific engines like Yandex or local search without a separate service. The summary table below is based on the facts from this article.

OptionWhat you needStrong sideThe weak point
Your SearXNG + mcp-searxngDocker, Node.js 22+ or Docker for the MCP server, edit settings.ymlThere are no keys and quotas, requests come from your IP without an intermediary, cache for 24 hoursSearch engine captchas, limiter and JSON configuration, server maintenance
DuckDuckGo serverPython 3.10+, uv, set [browser]One team, no infrastructure30 searches per minute, depending on the behavior of one search engine
Multi-slide serversNode.js or Python, sometimes a browser and 1.5 GB on diskThere are many engines, including Yandex; the risk of blocking is distributedHTML parsing breaks down when changing the layout, descriptions only by README
MCP-omnisearch AggregatorKeys Tavily, Exa, Brave and othersFree quotas of several services for one toolThis is not a search without keys, the limits are set by providers

If agents work for a company, search is just one of their tools. We connect AI agents to the customer's data and services so that search, rights and logs are configured together.

How we do it

  1. Audit of tasks and restrictions

    We find out what tasks agents need to search for, which model provider you use, whether you have access to foreign services from Russia, and what data can be included in requests.

    List of tasks and search requirements

  2. Search Selection

    We compare cloud APIs with free tariffs and our SearXNG by quotas, cost, quality of output and who sees your requests. We check the options based on your real requests.

    The selected search scheme for your tasks

  3. Deployment on your server

    We raise the SearXNG and MCP server in Docker on the customer's server, enable JSON, limiter and Valkey, connect Claude Code and other agents.

    Working search without keys inside your network

  4. Rights and protection against prompt injection

    We check the origin of the MCP servers, restrict their permissions, configure logs and rules that prevent the agent from following instructions from the found pages.

    Agents search the internet with understandable risks

  5. Support

    We update SearXNG and servers, monitor captchas and empty output, change engines when search engines change behavior.

    The search continues to work after changes in search engines

Discuss the task

We will deploy SearXNG on your server

Tell us where the service will work and how many agents will connect to it. Configure Docker, JSON responses, request limiter, and MCP server.

What will happen after the application

  1. We will respond within a working day
  2. Let's clarify the task and limitations
  3. We will offer a solution and pilot terms

Is it more convenient in the messenger?

+79262103289Employees respond from 9:00 to 23:00 Moscow time, every day

We will answer where it is more convenient for you

Diagram, photo, or technical specification — up to 10 MB

We use contacts only to respond to a request

Frequent questions

How to connect SearXNG to Claude Code?

Raise SearXNG in Docker, include the search.formats: [html, json] parameter in settings.yml, and add the MCP server with the command claude mcp add --scope user --env SEARXNG_URL=http://localhost:8888 --transport stdio searxng -- npx -y mcp-searxng. The npx option requires a Node.js 22+. If the MCP server is running in Docker, specify host.docker.internal instead of localhost (to clarify, it is not in the mcp-searxng documentation); on Linux without Docker Desktop, add the --add-host=host.docker.internal:host-gateway flag to docker run.

Why does SearXNG respond 403 Forbidden to requests from the MCP server?

By default, SearXNG returns results only in HTML, and the MCP server requests JSON. Add json to the search.formats list in settings.yml and restart the container. Many public JSON instances have been disabled, so the error will be repeated with them.

Is it possible to use a public SearXNG instance instead of your own?

It is possible, but it is unreliable: many public instances have disabled JSON and are not designed for the flow of requests from agents. The authors of mcp-searxng ask you to specify one address, not to go through instances in parallel and not bypass the captcha. For permanent work, it is better to raise your SearXNG.

Why does DuckDuckGo MCP server return empty results?

In June 2026 html.duckduckgo.com I began to respond with an empty HTTP 202 to the TLS fingerprint of the httpx client. nickclyde/duckduckgo-mcp-server has added a backup backend to curl_cffi, but it only works with the [browser] dependency set. Install the server with the command claude mcp add ddg-search -- uvx --with "duckduckgo-mcp-server[browser]" duckduckgo-mcp-server.

Is there an MCP search server with Yandex without a key?

Yes, lennney/agent-search-mcp uses 8 free engines, including Yandex, and does not require a browser and Python. Installed by the claude mcp add agent-search -- npx -y agent-search-mcp command. The description is taken from the README of the project, it has not been tested independently; like all scraping servers, it depends on the layout of search engines.

Do I need a separate server for SearXNG?

A container on a working computer is enough for one developer. It is more convenient for the team to have one instance on a server in the office or in the cloud: general settings and cache, one external IP and one control point. SearXNG needs to be updated and monitored so that search engines do not start responding with a captcha.

Which search MCP servers are better not to install?

Abandoned: as of September 2026, these are Pskov 9/web-search (not updated since 12/30/2024), mrkrsl/web-search-mcp, zhsama/duckduckgo-mcp-server and jae-jae/searxng-mul-mcp. Be careful with servers that send requests to a commercial service or ask an agent to register with your email. Choose by stars and the date of the last commit, and not by getting into the awesome list.

Sources

  1. SearXNG, repository — github.com , verified on 09/17/2026
  2. mcp-searxng, README — github.com , verified on 09/17/2026
  3. mcp-searxng, repository data — api.github.com , verified on 09/17/2026
  4. mcp-searxng, monthly downloads — api.npmjs.org , verified on 09/17/2026
  5. SearXNG: installation in Docker — docs.searxng.org , verified on 09/17/2026
  6. mcp-searxng: customizing clients — github.com , verified on 09/17/2026
  7. SearXNG: Search API — docs.searxng.org , verified on 09/17/2026
  8. SearXNG: search settings — docs.searxng.org , verified on 09/17/2026
  9. mcp-searxng: A Guide to self-hosted SearXNG — github.com , verified on 09/17/2026
  10. SearXNG: limiter — docs.searxng.org , verified on 09/17/2026
  11. mcp-searxng: public instances — github.com , verified on 09/17/2026
  12. SecretiveShell/MCP-searxng, README — github.com , verified on 09/17/2026
  13. SearXNG + Claude Code: Free web search instead of $10 for 1000 queries — habr.com , verified on 09/17/2026
  14. duckduckgo-mcp-server, README — github.com , verified on 09/17/2026
  15. duckduckgo-mcp-server, repository data — api.github.com , verified on 09/17/2026
  16. duckduckgo-mcp-server, issue #46 — github.com , verified on 09/17/2026
  17. duckduckgo-mcp-server, PR #50 — github.com , verified on 09/17/2026
  18. wigolo — github.com , verified on 09/17/2026
  19. anysearch-mcp-server — github.com , verified on 09/17/2026
  20. anysearch-mcp-server, README — raw.githubusercontent.com , verified on 09/17/2026
  21. open-webSearch — github.com , verified on 09/17/2026
  22. fastCRW — github.com , verified on 09/17/2026
  23. Kindly Web Search — github.com , verified on 09/17/2026
  24. mcp-omnisearch — github.com , verified on 09/17/2026
  25. mcp-omnisearch, README — raw.githubusercontent.com , verified on 09/17/2026
  26. one-search-mcp — github.com , verified on 09/17/2026
  27. web-scout-mcp — github.com , verified on 09/17/2026
  28. RivalSearchMCP — github.com , verified on 09/17/2026
  29. agent-search-mcp — github.com , verified on 09/17/2026
  30. agent-search — github.com , verified on 09/17/2026
  31. free-search-mcp — github.com , verified on 09/17/2026
  32. pskov/web-search, repository data — api.github.com , verified on 09/17/2026
  33. mrkrsl/web-search-mcp, repository data — api.github.com , verified on 09/17/2026
  34. punkpeye/awesome-mcp-servers — raw.githubusercontent.com , verified on 09/17/2026
  35. GitHub MCP Registry, search "search" — github.com , verified on 09/17/2026
  36. local-deep-research — github.com , verified on 09/17/2026
  37. local-deep-research: MCP server — github.com , verified on 09/17/2026
  38. Vane — github.com , verified on 09/17/2026
  39. Morphic — github.com , verified on 09/17/2026
  40. Ollama: Web search — docs.ollama.com , verified on 09/17/2026
  41. gigaxity-deep-research — github.com , verified on 09/17/2026
  42. Docker: docker container run, --add-host — docs.docker.com , verified on 09/17/2026

Name the code in the first message

This way we will find your question faster and understand where you came from.