← Back to directory
O

Open WebSearch

Community
Multi-engine web search and content retrieval without API keys
Category
Other
Stars
★ 1.9k Very popular
Transport
stdio (local process) · Streamable HTTP
Runtime
Node.js · Docker
Credentials
No credential needed
License
Apache-2.0
Last commit
Tools
6
51FMRS · D

open-websearch is a feature-rich multi-engine search MCP server with CLI and local daemon, requiring no API keys. It supports multiple search backends and content fetching. However, it relies on scraping and may be subject to blocking, suitable for personal development and small projects, not for high-reliability production use.

Strongest · Documentation 12/20 Weakest · Reliability 8/20

Reliability
8/20
Security and permissions
11/20
Maintenance
10/20
Documentation
12/20
Setup experience
10/20
Why each score
Reliability 8/20
Source inspection shows support for stdio/HTTP/SSE transports with a unified build/index.js entry derived from the build script. The six tools advertised in the README (search, fetchLinuxDoArticle, fetchCsdnArticle, fetchGithubReadme, fetchJuejinArticle, fetchWebContent) match implementations under src/tools, and their declared parameters (query/limit/engines/searchMode, url/maxChars) are reflected in the code. The repo includes a GitHub Actions CI workflow and committed tests covering the search path, which is direct evidence that key paths are reproducible. Deductions: static review cannot verify runtime behavior; multi-engine scraping is inherently fragile to target-site HTML changes; linux.do is marked temporarily unsupported in the README while related code paths remain; optional Playwright fallback adds runtime uncertainty unless browsers are installed; error handling around rate limits and HTML changes is only partially covered by tests.
Security and permissions 11/20
No signs of malware, credential theft, or covert exfiltration. The project is API-key-free scraping software with a small credential surface. Server examples bind to localhost:3000, and the code includes private-network DNS answer blocking plus FAKE_IP_CIDRS handling to reduce SSRF exposure; fetchWebContent has explicit internal-target blocking logic. USE_PROXY/PROXY_URL is an explicit proxy path, and the README states Axios no longer auto-reads environment proxies. Deductions: arbitrary-URL fetching tools have no authentication or confirmation by default; HTTP/SSE modes listen beyond localhost without auth if configured so; dangerous operations (intranet probing, bulk searches) lack confirmation; FETCH_WEB_INSECURE_TLS weakens TLS and README gives usage but little hardening guidance; the Docker example enables CORS with origin * which widens exposure.
Maintenance 10/20
The repo has an Apache-2.0 license, version tags, a Docker auto-build workflow, and a CI workflow. README shows recent release/changelog activity (Playwright made optional, proxy behavior changes), the project is not archived, and it has substantial adoption. Deductions: static evidence is thin for maintainer governance, dependency-update policy, and a security-response channel; there is no SECURITY.md or equivalent visible; README TODO items (e.g., Google engine) show incomplete feature coverage.
Documentation 12/20
The README provides layered docs: quick start (npx/Docker/local build), client config examples (Cherry Studio, VSCode, Claude Desktop, Windows), a full environment-variable table, TypeScript parameter and response examples for all six tools, proxy/TLS/Playwright notes, usage limitations (rate limiting, accuracy, legal terms), and a link to docs/http-api.md. It distinguishes install-time proxy from runtime proxy and covers Windows and Unix shells. Deductions: README is untrusted static evidence; cost information is absent; troubleshooting is scattered without a dedicated FAQ; response examples are inconsistent in shape (array vs object) and fetchLinuxDoArticle shows a .json URL that may confuse; parity between the Chinese and English READMEs cannot be confirmed statically.
Setup experience 10/20
Setup paths are clear and varied: npx open-websearch@latest one-liner, npm install/build flow, and a one-command Docker run. The README gives copy-paste MCP config snippets for streamableHttp, SSE, and stdio in multiple clients, plus Windows environment-variable instructions. The build script exists and build/index.js matches the local stdio example. Deductions: no executable install verification is present in static files; optional Playwright setup requires extra browser install or remote endpoints and can fail in restricted networks; HTTP mode requires understanding MODE/PORT/transport interactions, and the streamableHttp+SSE examples share port 3000, so misconfiguration can break connectivity; npx env-var examples differ across shells and are not fully equivalent.

Static review · not runListed 2026-08-07

Read the FMRS scoring method →

Fit and risk

What it can accessUses the networkControls a browser

Best for

  • Developers needing keyless multi-engine search.
  • Agent workflows integrated into MCP clients (Claude Desktop, Cursor).
  • Service scenarios requiring a local daemon with HTTP API.

Not for

  • Production-grade search services requiring high reliability and compliance.
  • Applications sensitive to search engine terms of service.
  • Scenarios requiring guaranteed real-time results, as scraping may be blocked.

Required permissions

  • Network access to perform searches and fetch content.
  • Local port 3000 when running in HTTP mode (configurable via PORT).
  • No API keys or authentication required.
  • Optional: Playwright browser automation (requires installing Chromium or connecting to a remote browser).

Risks and side effects

  • Search engines may block frequent requests, causing temporary unavailability.
  • Results depend on engine HTML structure, may fail when engines update.
  • Some pages may not expose readable content (e.g., JS-heavy landing pages).
  • Network compliance when using proxies or fake-IP CIDRs.

Setup

Before you start

Runtime:Node.js · Docker

Other optional settings (24)
ENABLE_CORS optional Enable CORS for the HTTP API, default false; no external credential needed.
CORS_ORIGIN optional CORS allowed origin, default *; any valid origin.
DEFAULT_SEARCH_ENGINE optional Default search engine, default bing; options include duckduckgo, exa, brave, baidu — no signup required.
USE_PROXY optional Enable HTTP proxy, default false; for restricted networks.
PROXY_URL optional Proxy server URL, default http://127.0.0.1:7890; point it at your local proxy client.
FAKE_IP_CIDRS optional Comma-separated CIDR list for Clash fake-ip/TUN setups (e.g. 198.18.0.0/15).
FETCH_WEB_INSECURE_TLS optional Disables TLS verification for fetchWebContent only, default false; use only for broken certificate chains.
MODE optional Server mode: both, http, or stdio; default both.
PORT optional HTTP server port, default 3000.
ALLOWED_SEARCH_ENGINES optional Comma-separated list of allowed engines; empty means all available.
SEARCH_MODE optional Search strategy request/auto/playwright; currently only affects Bing.
PLAYWRIGHT_PACKAGE optional Playwright client package for browser mode: playwright or playwright-core.
PLAYWRIGHT_MODULE_PATH optional Path to an existing Playwright package to reuse.
PLAYWRIGHT_EXECUTABLE_PATH optional Path to an existing Chromium/Chrome binary to avoid bundled browser installs.
PLAYWRIGHT_WS_ENDPOINT optional ws:// endpoint of a remote Playwright browser server.
PLAYWRIGHT_CDP_ENDPOINT optional CDP endpoint of an existing Chromium instance (e.g. http://127.0.0.1:9222).
PLAYWRIGHT_HEADLESS optional Whether Playwright Chromium runs headless, default true.
PLAYWRIGHT_NAVIGATION_TIMEOUT_MS optional Playwright navigation timeout in ms, default 20000.
MCP_TOOL_SEARCH_NAME optional Custom MCP tool name for the search tool.
MCP_TOOL_FETCH_LINUXDO_NAME optional Custom tool name for fetchLinuxDoArticle.
MCP_TOOL_FETCH_CSDN_NAME optional Custom tool name for fetchCsdnArticle.
MCP_TOOL_FETCH_GITHUB_NAME optional Custom tool name for fetchGithubReadme.
MCP_TOOL_FETCH_JUEJIN_NAME optional Custom tool name for fetchJuejinArticle.
MCP_TOOL_FETCH_WEB_NAME optional Custom tool name for fetchWebContent.
  1. Quick start with npx: npx open-websearch@latest, optionally with environment variables (e.g., DEFAULT_SEARCH_ENGINE=duckduckgo).
  2. For local installation, clone the repo, run npm install and npm run build.
  3. Configure your MCP client (e.g., Claude Desktop, Cherry Studio, Cursor) with either stdio or streamable-http transport.
  4. Optionally configure proxy (USE_PROXY=true, PROXY_URL) and Playwright for browser fallback.
claude_desktop_config.json
{
  "mcpServers": {
    "web-search": {
      "command": "npx",
      "args": [
        "open-websearch@latest"
      ],
      "env": {
        "MODE": "stdio",
        "DEFAULT_SEARCH_ENGINE": "duckduckgo",
        "ALLOWED_SEARCH_ENGINES": "duckduckgo,bing,exa"
      }
    }
  }
}

Shown for Claude Desktop. Other clients may use a different file or key (VS Code uses "servers") — the configurator below converts it.

.vscode/mcp.json
{
  "servers": {
    "web-search": {
      "command": "npx",
      "args": [
        "open-websearch@latest"
      ],
      "env": {
        "MODE": "stdio",
        "DEFAULT_SEARCH_ENGINE": "duckduckgo",
        "ALLOWED_SEARCH_ENGINES": "duckduckgo,bing,exa"
      }
    }
  }
}

Goes in your project's .vscode/mcp.json (VS Code uses a "servers" key).

Terminal
claude mcp add web-search -e MODE=stdio -e DEFAULT_SEARCH_ENGINE=duckduckgo -e ALLOWED_SEARCH_ENGINES=duckduckgo,bing,exa -- npx open-websearch@latest

Run it in a terminal; replace any <…> placeholders with your own values first.

Check that it works

After starting the server, the client tool list should show the six tools including search, fetchGithubReadme, and fetchWebContent; running a simple search query that returns structured results with titles and URLs confirms the install works.

Troubleshooting

  1. Check environment variables (e.g., `DEFAULT_SEARCH_ENGINE`, `USE_PROXY`, `PORT`) are set correctly.
  2. For streamable-http, ensure `baseUrl` points to `http://localhost:3000/mcp`.
  3. If encountering network restrictions, set `USE_PROXY=true` and `PROXY_URL`.
  4. If fetching certain sites fails, try Playwright mode (`SEARCH_MODE=auto`).

Things to try

Once connected, you can ask your AI assistant things like:

  • Search for 'open-websearch MCP' with duckduckgo and return the top 3 results
  • Search 'Node.js performance tuning' across bing, csdn, and exa engines
  • Fetch the README content of https://github.com/Aas-ee/open-webSearch
  • Retrieve the full text of the Juejin article https://juejin.cn/post/7520959840199360563

Tools 6

search read-only
Search the web across multiple engines and return structured results.
fetchLinuxDoArticle read-only
Fetch the full content of a Linux.do forum article.
fetchCsdnArticle read-only
Fetch the full content of a CSDN blog article.
fetchGithubReadme read-only
Fetch the README content of a GitHub repository.
fetchJuejinArticle read-only
Fetch the full content of a Juejin article.
fetchWebContent read-only
Fetch content from public HTTP(S) pages or Markdown files.

Use cases

Perform web searches across multiple engines without API keys.
Fetch articles from specific platforms (CSDN, Juejin, GitHub README) for deeper analysis.
Integrate search and fetch into automated scripts via CLI or daemon.

Supported clients

Claude Desktop
Cherry Studio
Cursor
VS Code

Listed from the project's documentation, not tested by this site.

Overview

open-websearch is an MCP server, CLI, and local daemon that provides multi-engine web search and content retrieval (Bing, Baidu, DuckDuckGo, Exa, Brave, CSDN, Juejin, Startpage, Sogou) without requiring API keys. It supports HTTP proxy configuration for accessing restricted resources and returns structured results with titles, URLs, and descriptions. It also supports fetching full article content from specific platforms (CSDN, Juejin, GitHub README) and generic web/Markdown pages. The project is licensed under Apache-2.0.

Similar servers

Telegram MCP server powered by Telethon to let MCP clients read chats, manage groups, and send/modify messages, media, contacts, and settings.

★ 1.8k · Tools 76 Compare with this →

Source revision fb11fd94df73 Data synced 2026-10-12 Read the FMRS scoring method