Skip to main content
Glama
OEvortex

DuckDuckGo Search MCP

by OEvortex

Quick Start

# Search from the command line
npx -y @oevortex/ddg_search@latest "your search query"

# Or install globally
npm install -g @oevortex/ddg_search
ddg "your search query"

Related MCP server: webmcp

Usage

CLI

# Basic web search (DuckDuckGo)
ddg "quantum computing"

# Get more results
ddg "latest news" -n 10

# AI-generated answer (IAsk)
ddg "explain recursion" -m ai

# AI-generated answer (Monica)
ddg "hello world" -m ai -b monica

# IAsk with options
ddg "gravity" -m ai --iask-mode academic --detail-level comprehensive

Flags

Flag

Description

Default

-m, --mode

web or ai

web

-b, --backend

iask or monica (AI mode only)

iask

-n, --num-results

Number of results (1-20, web mode)

3

--iask-mode

question, academic, forums, wiki, thinking

thinking

--detail-level

concise, detailed, comprehensive

-h, --help

Show help

-v, --version

Show version

MCP Server

Start the MCP server for use with Claude Desktop, OpenCode, or other MCP clients:

ddg --server

Claude Desktop config:

{
  "mcpServers": {
    "ddg-search": {
      "command": "npx",
      "args": ["-y", "@oevortex/ddg_search@latest"]
    }
  }
}

Global install config:

{
  "mcpServers": {
    "ddg-search": {
      "command": "ddg"
    }
  }
}

Programmatic API

import { searchDuckDuckGo } from '@oevortex/ddg_search/src/utils/search.js';
import { searchIAsk } from '@oevortex/ddg_search/src/utils/search_iask.js';
import { searchMonica } from '@oevortex/ddg_search/src/utils/search_monica.js';

// DuckDuckGo
const results = await searchDuckDuckGo("query", 5);

// IAsk AI
const answer = await searchIAsk("query", "thinking", null);

// Monica AI
const answer = await searchMonica("query");

MCP Tool Schema

Single unified tool web-search:

Parameter

Type

Default

Description

query

string

required

Search query

mode

"web" | "ai"

"web"

DuckDuckGo results or AI answer

backend

"iask" | "monica"

"iask"

AI backend (mode=ai only)

numResults

integer

3

Results count (web mode, 1-20)

iaskMode

string

"thinking"

IAsk mode (backend=iask only)

detailLevel

string

IAsk detail level (backend=iask only)

Agent Prompt

Add this to your agent's system prompt to enable web search:

When you need to search the web or find current information, use the DDG Search CLI:

  npx -y @oevortex/ddg_search@latest "<query>" -m ai

This runs an AI-powered web search via IAsk. For standard DuckDuckGo results (titles + URLs + snippets), use mode "web" instead:

  npx -y @oevortex/ddg_search@latest "<query>" -m web -n 5

For a different AI backend (Monica), add -b monica. Use this for any research, fact-checking, or current events task.

Proxy Support

Respects HTTP_PROXY, HTTPS_PROXY, and NO_PROXY environment variables automatically.

HTTPS_PROXY=http://proxy:8080 ddg "search query"

Install

npm install -g @oevortex/ddg_search

Or use npx without installing.

Project Structure

bin/cli.js              CLI entry point
src/
  index.ts              MCP server
  tools/
    searchTool.js       Unified search tool
  utils/
    search.js           DuckDuckGo scraper
    search_iask.js      IAsk AI client
    search_monica.js    Monica AI client
    user_agents.js      User agent rotation
skills/
  ddg-search/           Agent skill for marketplace

Contributing

Pull requests welcome. Open an issue for bugs or feature requests.

License

Apache 2.0


Available Tools

1 tool

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 3 tool updatesv1.4.0
    • Removediask-search
    • Removedmonica-search
    • Changedweb-search8 fields changed
      • addedInput schema / properties / backend
        Added value: +{
        +  "default": "iask",
        +  "description": "AI backend when mode=\"ai\": \"iask\" or \"monica\". Ignored in web mode.",
        +  "enum": [
        +    "iask",
        +    "monica"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / detailLevel
        Added value: +{
        +  "description": "IAsk detail level when backend=\"iask\": \"concise\", \"detailed\", or \"comprehensive\".",
        +  "enum": [
        +    "concise",
        +    "detailed",
        +    "comprehensive"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / iaskMode
        Added value: +{
        +  "default": "thinking",
        +  "description": "IAsk mode when backend=\"iask\": \"question\", \"academic\", \"forums\", \"wiki\", or \"thinking\". Default: \"thinking\".",
        +  "enum": [
        +    "question",
        +    "academic",
        +    "forums",
        +    "wiki",
        +    "thinking"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / mode / default
        Previous value: -"short"New value: +"web"
      • changedInput schema / properties / mode / description
        Previous value: -"Choose 'short' for basic results (no Description) or 'detailed' for full results (includes Description)."New value: +"Search mode. \"web\" returns DuckDuckGo search results. \"ai\" returns an AI-generated answer."
      • changedInput schema / properties / mode / enum
        Previous value: -[
        -  "short",
        -  "detailed"
        -]New value: +[
        +  "web",
        +  "ai"
        +]
      • changedInput schema / properties / numResults / description
        Previous value: -"Specify how many results to display (default: 3, maximum: 20)."New value: +"Number of web results (1-20). Web mode only. Default: 3."
      • changedInput schema / properties / query / description
        Previous value: -"Enter your search query to find the most relevant web pages."New value: +"The search query or question."
  2. 6 tool updatesv1.0.0
    • Removedfelo-search
    • Removedfetch-url
    • Addediask-search
    • Addedmonica-search
    • Removedurl-metadata
    • Changedweb-search5 fields changed
      • addedInput schema / properties / mode
        Added value: +{
        +  "default": "short",
        +  "description": "Choose 'short' for basic results (no Description) or 'detailed' for full results (includes Description).",
        +  "enum": [
        +    "short",
        +    "detailed"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / numResults / default
        Previous value: -10New value: +3
      • changedInput schema / properties / numResults / description
        Previous value: -"Number of results to return (default: 10)"New value: +"Specify how many results to display (default: 3, maximum: 20)."
      • removedInput schema / properties / page
        Removed value: -{
        -  "default": 1,
        -  "description": "Page number (default: 1)",
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • changedInput schema / properties / query / description
        Previous value: -"The search query"New value: +"Enter your search query to find the most relevant web pages."
  3. 4 tool updates
    • First observedfelo-search
    • First observedfetch-url
    • First observedurl-metadata
    • First observedweb-search

TDQS

A4/5.0
Disambiguation5/5

Only one tool exists, so there is no possibility of confusion between tools. The two modes are clearly described within the single tool.

Naming Consistency5/5

With a single tool named 'web-search', the naming is self-consistent and follows a clear verb-noun pattern.

Tool Count2/5

A search server with only one tool feels too thin for the domain. Typically, separate tools for different search types (web, images, news, etc.) would be expected.

Completeness2/5

The single tool covers web and AI search but misses common search categories like images, news, and video, leaving notable gaps for typical search use cases.

Maintenance

ActivitySlowing
ResponsivenessSlow

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for web search and content extraction using DuckDuckGo or SearXNG, with Playwright-based fetching and LLM-powered data extraction.
    139
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for internet search via direct Google and DuckDuckGo HTML scraping with AI-powered result normalization and optional summarization, requiring no API keys for search.
    MIT
  • F
    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
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/OEvortex/ddg_search'

If you have feedback or need assistance with the MCP directory API, please join our Discord server