Skip to main content
Glama
rockindahizzy

open-search-mcp

open-search-mcp

Web search, page fetching, and research from the terminal or any MCP client — no API key required.

Built on DuckDuckGo for search and Trafilatura for content extraction.

Install

Homebrew (macOS/Linux)

brew install rockindahizzy/tap/open-search-mcp

pipx / uv

# One-shot (no install)
uvx open-search-mcp search "your query"

# Permanent install
uv tool install open-search-mcp
# or
pipx install open-search-mcp

pip

pip install open-search-mcp

Related MCP server: Oxylabs Web API MCP Server

CLI Usage

# Search the web
open-search search "python async tutorial"
open-search search "react native" -n 5 -t w
open-search search "security CVE" -s github.com

# Fetch a page and extract readable content
open-search fetch https://example.com/article
open-search fetch https://news.ycombinator.com -m 5000

# Research: search + auto-fetch top results
open-search research "philosophy of mind AI"
open-search research "rust vs go 2025" -f 5 -v

# JSON output (pipe to jq, etc.)
open-search search "AI agents" --json
open-search research "MCP protocol" --json | jq '.results[0].content'

Commands

Command

Description

search

Search the web via DuckDuckGo

fetch

Fetch a URL → clean readable text

research

Search + auto-fetch top N results

Query Tips

  • Exact phrases: "financial literacy"

  • Exclude terms: -pinterest

  • Site filter: -s github.com or site:stackoverflow.com in query

  • Time range: -t d (day), -t w (week), -t m (month), -t y (year)

  • Combine: "react native" expo -reddit

MCP Server Usage

The package also runs as an MCP server for AI assistants and agents.

As stdio server

open-search-mcp

With Claude Desktop / MCP clients

{
  "mcpServers": {
    "open-search": {
      "command": "uvx",
      "args": ["open-search-mcp"]
    }
  }
}

MCP Tools

  • search — Web search with filters (region, time, site)

  • fetch — URL → clean text extraction

  • research — Search + auto-fetch combined

Dependencies

  • click — CLI framework

  • ddgs — DuckDuckGo search

  • httpx — HTTP client

  • trafilatura — Web content extraction

  • mcp — Model Context Protocol SDK

License

MIT

Available Tools

3 tools
fetchB

Fetch a URL and extract readable content (HTML → clean text).

Args: url: The URL to fetch max_chars: Max characters to return (default 20000, truncates if exceeded)

NameRequiredDescriptionDefault
urlYes
max_charsNo

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full disclosure burden. It does reveal two real behavioral traits: content is transformed to clean text, and output is truncated at max_chars (default 20000). It says nothing about network/error behavior, timeouts, redirects, or size/auth limits, so disclosure is partial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very compact and front-loaded: the purpose sentence comes first, followed by a short Args block. The Args formatting is slightly redundant with the schema, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool with an output schema, the description covers purpose and parameters adequately, so return values needn't be explained. It is still thin on when-to-use guidance relative to its siblings and on failure/limit behavior, leaving real gaps for an agent deciding between fetch, search, and research.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description compensates by documenting both parameters: url is 'the URL to fetch' and max_chars is a character cap with a stated default and truncation semantics. This adds meaningful detail beyond the bare schema; only URL format requirements (scheme, absolute vs relative) are unstated.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (fetch a URL) and the transformation performed (HTML → clean text), so the agent knows exactly what comes back. It does not, however, differentiate itself from the siblings search and research, which are also retrieval tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No indication of when to use fetch versus search or research, and no exclusions or prerequisites. The agent must infer that fetch is for a known URL while the siblings are for querying.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

researchA

Combined search + fetch: searches, then fetches the top N result pages. Returns search results with full extracted content for the top hits.

Use advanced query techniques — don't just pass raw user questions. Reformulate into precise search operators.

Args: query: Search query (use operators for precision) max_results: Total search results to return (default 5) fetch_top: How many top results to auto-fetch content from (default 3) max_chars_per_page: Max chars per fetched page (default 10000) region: Region code time_range: d=day, w=week, m=month, y=year site: Limit to domain

NameRequiredDescriptionDefault
siteNo
queryYes
regionNowt-wt
fetch_topNo
time_rangeNo
max_resultsNo
max_chars_per_pageNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the meaningful two-phase behavior (search then auto-fetch top N pages) and that content is extracted and returned, which is genuinely useful. But it omits failure modes, latency implications of fetching multiple pages, and truncation/error behavior, so coverage is adequate rather than rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with what the tool does, then usage advice, then a compact Args list — logical and easy to scan. The Args block partially overlaps the schema titles, but each line adds meaning, so nearly every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter tool with no annotations, the description plus the available output schema are close to sufficient: the pipeline behavior, parameters, and even the time_range domain are covered. Remaining gaps are edge behavior and relative positioning versus the separate search/fetch tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it largely does: every one of the 7 args is given meaning, defaults are restated for max_results/fetch_top/max_chars_per_page, and time_range even supplies enum semantics (d/w/m/y) absent from the schema. 'region: Region code' remains vague, keeping it short of a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific composite verb+resource: "searches, then fetches the top N result pages" and specifies what is returned ("full extracted content for the top hits"). This clearly distinguishes it from the plain sibling tools fetch and search, though it never names those siblings as the alternatives it subsumes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It offers real guidance on query construction — "don't just pass raw user questions. Reformulate into precise search operators" — which is actionable. However, it gives no when-to-use/when-not guidance relative to the siblings search and fetch, or when the separate tools would be preferable; usage of the tool itself is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updatesv0.1.0
    • First observedfetch
    • First observedresearch
    • First observedsearch

TDQS

A3.8/5.0

Scored across 3 tools

Disambiguation4/5

fetch, search, and research target distinct inputs (URL vs query vs combined workflow), but research is a composite of search+fetch and could be over-selected when simpler tools suffice. Descriptions clarify the boundaries well, so misselection risk is minor.

Naming Consistency5/5

All three tool names are single lowercase verbs (fetch, search, research), forming a consistent action-oriented pattern with no deviations. This makes the set predictable and easy to scan.

Tool Count5/5

Three tools is lean but perfectly scoped for a web search and content extraction server. Each tool earns its place: one for URL fetching, one for search queries, and one for combined research.

Completeness4/5

Core operations (search, fetch, combined research) are well covered, with no dead ends for typical workflows. Minor gaps include no batch fetch for a list of known URLs and no pagination beyond max_results for deeper search.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that provides web search scraping from DuckDuckGo (with Mojeek fallback) and URL content fetching as markdown/text or raw HTML.
    1
    ISC
  • A
    license
    A
    quality
    C
    maintenance
    Gives MCP-capable agents live web access: search the web, scrape pages into Markdown (including JavaScript-heavy and bot-protected sites), and extract named fields as JSON, with job polling, token-aware content offloading, and built-in research guidance. Ships as a self-hostable stdio or HTTP service with spend caps and per-request key support.
    7
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables MCP clients to search the web and fetch individual pages through two stdio tools, returning ranked results or extracted page content, titles and outbound links. It wraps a hosted, API-key-authenticated service (or a local daemon) with zero runtime dependencies.
    8 npm
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables any MCP client to run keyless multi-engine web searches with RRF fusion, fetch pages and documents as Markdown, and full-text search a local SQLite index. It keeps queries and cached content on the user's machine, degrading gracefully across engine tiers when providers are blocked or rate-limited.
    8
    MIT