Large Language ModelsGenerate imagesGenerate videos

Local MCP Server for Web Search: Free Options for Claude

A local MCP server gives Claude fresh web results without a monthly bill. This article compares DuckDuckGo, SearXNG, Brave and Tavily setups, shows the exact configs for Claude Desktop and Claude Code, lists each free limit, and fixes the errors that usually appear.

Local MCP Server for Web Search: Free Options for Claude
Cristian Da Conceicao
Founder of Picasso IA

Claude can refactor a module, explain a research paper and draft a migration plan, but it cannot open a browser on its own. Ask about a library released last week and it answers from memory or admits it does not know. A local MCP server for web search closes that gap. It is a small program on your own machine that Claude calls whenever it needs fresh pages, and several versions cost nothing to run. Below are the free options for Claude that work today, from a two-line DuckDuckGo setup to a private SearXNG instance, with the real limits of each one spelled out before you hit them.

Why Claude Needs a Search Tool

Claude's knowledge stops at its training cutoff. Package releases, API changes, pricing pages and the error message you got this morning all sit outside it. A search tool lets the model look things up instead of guessing, and it lets you check any answer against a real URL.

What a Local Server Actually Does

The Model Context Protocol (MCP) is the open standard that lets an AI client call outside tools. A local MCP server is a process your client starts on your own computer, usually over stdio. Claude Desktop or Claude Code runs the command from your config, asks the server which tools it offers, and calls them when a task needs them.

For web search you usually get two tools: one returns a list of results, the other fetches a page and hands back readable text. Nothing is hosted for you. The server sends your query to a search backend, which might be DuckDuckGo, your own SearXNG instance or an API with a free allowance, and passes the results back to Claude.

Close-up of a developer's hands typing on a laptop in warm window light

When Built-In Search Is Enough

Claude Code ships with its own web search and fetch tools, and the Claude apps offer search on some plans. Availability depends on your plan and region, so check what your client already includes before you add anything. A local server earns its place when:

  • Built-in search is missing on your plan or in your region
  • You want a specific engine, or your own instance, for privacy
  • You want the same search in several MCP clients at once
  • You want to control rate limits and read your own logs

💡 Tip: If you already know the page, fetch the URL directly. A fetch is cheaper than a search. Keep searches for questions where you don't know the source.

The Free Options at a Glance

Four setups handle most needs. The first two run entirely on your hardware. The last two keep the server local but call a hosted search API that gives a monthly allowance.

OptionSearch backendFree allowanceAccount neededWeak spot
DuckDuckGo MCPDuckDuckGo HTML endpointNo published quota, 30 searches a minute by defaultNoUnofficial scraping, can return empty results
SearXNG MCPYour own SearXNG instanceLimited only by your hardwareNoYou maintain the instance
Brave SearchHosted API$5 in monthly credits, about 1,000 queriesYes, card requiredNo longer a true free plan
TavilyHosted API1,000 credits a monthYes, no cardDeeper searches use credits twice as fast

Aerial view of a tidy desk with a notebook, mini PC and router

What "Free" Really Means

The word hides three different deals:

  • Free in money, paid in setup. SearXNG has no quota, but you install it, update it and watch it.
  • Free with a ceiling. Tavily gives 1,000 credits a month and stops requests when they run out instead of billing you. Brave gives $5 of monthly credits, roughly 1,000 searches.
  • Free with no promises. DuckDuckGo has no published quota and no contract. It works until the endpoint changes.

Brave retired its old plan of 2,000 free queries a month in early 2026 and moved to metered credits. It asks for a card as an anti-fraud check even when you stay inside the free credit, so check your usage dashboard after the first week. Two more hosted names show up in roundups: Firecrawl offers 1,000 credits a month with a free token, and Jina gives a one-time grant of 10 million tokens that does not refill, so treat it as a trial.

Option 1: DuckDuckGo With Zero Accounts

The fastest route is the community server duckduckgo-mcp-server, an MIT-licensed Python project by nickclyde. It needs no token, no signup and no card.

Install in Two Minutes

You need uv installed, because uvx runs Python tools without a manual install. Open the Claude Desktop config file. On Windows it lives at %APPDATA%\Claude\claude_desktop_config.json, on macOS at ~/Library/Application Support/Claude/claude_desktop_config.json. Add this block:

{
  "mcpServers": {
    "ddg-search": {
      "command": "uvx",
      "args": ["duckduckgo-mcp-server"]
    }
  }
}

Quit Claude Desktop fully and reopen it so it reads the file. In Claude Code, one command does the same job:

claude mcp add ddg-search -- uvx duckduckgo-mcp-server
claude mcp list

The server exposes a search tool and a content fetching tool, so Claude can search, pick a link and read the page.

Limits and Quirks

The project's README is honest about its guardrails:

  • Search is throttled to 30 requests per minute by default, and page fetching to 20 per minute globally
  • HTTP 429 responses are honored, with the wait capped at 30 seconds
  • Some sites block the default HTTP client through TLS fingerprinting, and an optional browser extra impersonates Chrome to get past that
  • Long URLs are swapped for short ref:// tokens to save context window space
  • Requests to private and loopback addresses are blocked by default (SSRF protection)

Roundups also report that Cloudflare filtering can make the HTML endpoint return empty results now and then.

💡 Tip: If a search comes back empty, wait a minute and ask again before touching your config. Throttling looks a lot like a broken install.

A woman developer on a grey sofa with a laptop on her knees in morning light

This setup suits a personal laptop, light research and quick lookups. It is a weak base for a team, or for an automated job that fires hundreds of queries.

Option 2: SearXNG on Your Own Hardware

SearXNG is a self-hosted metasearch engine. It forwards your query to many engines, merges the results and does not track you. Pair it with the mcp-searxng server and Claude gets a private search backend with no quota beyond what your machine can handle.

Run the Container

Docker is the shortest path. Bind the port to localhost so the instance is not exposed to your network:

docker run -d --name searxng -p 127.0.0.1:8080:8080 -v "$PWD/searxng:/etc/searxng" searxng/searxng

On the first start the container writes its default settings.yml into the mounted folder. Open that file and allow JSON output, because the MCP server asks for it:

search:
  formats:
    - html
    - json

Restart with docker restart searxng, then test the endpoint:

curl 'http://localhost:8080/search?q=test&format=json'

If JSON comes back, the backend is ready. The machine can be your laptop, a mini PC or a single-board computer on a shelf.

Macro shot of a single-board computer in a black case with an ethernet cable

Connect It to Claude

You need Node.js for npx. Add this to the Claude Desktop config:

{
  "mcpServers": {
    "searxng": {
      "command": "npx",
      "args": ["-y", "mcp-searxng"],
      "env": {
        "SEARXNG_URL": "http://localhost:8080"
      }
    }
  }
}

In Claude Code, the same thing is one line:

claude mcp add searxng -e SEARXNG_URL=http://localhost:8080 -- npx -y mcp-searxng

The server offers four tools: searxng_web_search (paginated, with filters), searxng_search_suggestions, searxng_instance_info and web_url_read, which fetches a URL and converts it to markdown. If your instance still refuses JSON, the README describes an optional HTML fallback switch, SEARXNG_HTML_FALLBACK=true.

The trade-off is upkeep. Upstream engines sometimes throttle a home IP, so an engine may drop out of the results for a while. Update the container now and then, and watch it closely during the first week.

An ethernet cable being plugged into a grey network switch

💡 Tip: A wired connection is worth it if the instance lives on a shelf. Latency adds up when Claude chains five lookups inside one task.

Option 3: Hosted APIs With Free Credits

These servers still run on your machine, but the search backend is a hosted API. You get cleaner ranking and no scraping, in exchange for an account.

Brave Search Credit

Brave publishes an official server, @brave/brave-search-mcp-server, started with npx -y @brave/brave-search-mcp-server. Its tools include web, news, image and video search plus an AI summarizer. Create an account, add a card, generate an access token and place it in the env block of your config, following the README for the exact variable name. The $5 monthly credit buys about 1,000 searches, which is plenty for one person and thin for an agent loop.

Tavily Free Tier

Tavily's free plan gives 1,000 credits a month with no card. A basic search costs 1 credit and a deeper one costs 2, so you get either 1,000 basic searches or 500 deeper ones. The server tavily-mcp runs with npx -y tavily-mcp@latest and exposes tavily-search and tavily-extract. Tavily stops requests when the credits run out instead of charging you, which makes it the safest hosted pick for a first month.

A researcher pulling a hardback book from a tall wooden library shelf

Make Search Results Useful

A search tool alone returns snippets. The rest of the work is getting Claude to read the right pages and report back honestly.

Pair Search With a Page Fetcher

Snippets rarely hold the full answer. Add a fetch tool so Claude can open the winning link. The official fetch server runs with uvx mcp-server-fetch, converts HTML to markdown and returns 5,000 characters by default, with a start_index argument to read long pages in chunks. For pages that need JavaScript, a browser tool such as Playwright MCP handles the rendering, at the cost of more memory.

Two colleagues reviewing a laptop together at a standing desk

Write Prompts That Trigger Search

Claude does not always reach for a tool on its own. Tell it when to search and what to bring back:

  • "Search the web for the latest release notes of this library and quote the version number."
  • "Use search for anything newer than last year, and list the URLs you read."
  • "Fetch the top two results and compare them before you answer."

💡 Tip: Ask for sources every time. A reply with URLs is easy to verify. A reply without them is just memory again.

Fix the Usual Failures

SymptomLikely causeFix
Server missing in Claude DesktopConfig not reloaded, or invalid JSONValidate the JSON, quit the app fully, reopen
Command not founduvx or npx is not on the PATH the app usesInstall uv or Node.js, or put the full path in the config
SearXNG returns an error on searchJSON format not enabledAdd json to search.formats, restart the container
Empty results from DuckDuckGoThrottling or Cloudflare filteringWait a minute and lower the query volume
Hosted API stops answeringFree credits used upCheck the dashboard, switch backend until the month resets

In Claude Code, claude mcp list shows whether each server connected.

A man in a flannel shirt at a cafe table looking at a laptop

Using Claude Sonnet 5 on PicassoIA

Your local server serves the Claude client on your machine, and a browser-based model cannot reach it. A hosted model is still handy for writing and debugging the setup around it. Claude Sonnet 5 on PicassoIA reads plain English requests, stack traces and screenshots, which fits the config problems above.

Open the Model Page

  1. Open the Claude Sonnet 5 page on PicassoIA.
  2. Paste your config file or the error log into the Prompt input.
  3. Attach a screenshot in the optional Image input if the error sits inside an app window.
  4. Run it and read the answer, then paste the fix into your config and restart the client.

Set Effort and Output Length

SettingDefaultWhen to change it
EffortlowLow turns thinking off for fast, cheap answers. Use medium or high for configs that touch several files, xhigh or max for the hardest bugs
Max tokens8,192Caps the reply length. The default suits a full config file with notes
System promptemptySet a role once and reuse it across the session
Max image resolution0.5 megapixelsRaise it if small text in a screenshot gets lost, since the image is scaled down to save time and cost

Prompts That Debug Your Config

Set the system prompt once: "You are a careful DevOps assistant. Answer for Windows 11 and Claude Desktop. Always show the full corrected JSON." Then send something specific: "Here is my config file and the log line after restart. Why does the searxng server not appear in the tool list?"

For harder coding problems, Claude Fable 5 is also available on PicassoIA.

💡 Tip: Remove every token and password before you paste a config into any chat window, hosted or not.

A handwritten checklist on a clipboard beside a small mini PC on a workshop bench

Your Next Build With Picasso IA

Search is only one MCP server, and Claude can run several at once. A search server can sit beside tools that make visuals. PicassoIA offers its own API and MCP connection for image and video generation. The details are on the API page, so check which plan includes it before you build around it.

Here is a short plan for today:

  1. Pick one option. DuckDuckGo if you want to finish in ten minutes, SearXNG if privacy matters, Tavily if ranking quality matters most.
  2. Test it with a question whose answer changed recently. A release date or a price works well.
  3. Ask for URLs and open two of them yourself.

Then make something visual. Open Picasso IA, write a photo prompt for the header image of your own project, change one detail such as the lens, the light or the room, and render it again. Two or three rounds of small edits teach you more about prompting than any list of rules. Start with your first image today and keep experimenting with the platform.

Share this article