Skip to main content
Glama
OEvortex

DuckDuckGo Search MCP

by OEvortex
README.md
<div align="center">
  <a href="https://www.npmjs.com/package/@oevortex/ddg_search">
    <img src="https://img.shields.io/npm/v/@oevortex/ddg_search.svg" alt="npm version" />
  </a>
  <a href="https://github.com/OEvortex/ddg_search/blob/main/LICENSE">
    <img src="https://img.shields.io/badge/License-Apache%202.0-blue.svg" alt="License: Apache 2.0" />
  </a>
  <a href="https://youtube.com/@OEvortex">
    <img src="https://img.shields.io/badge/YouTube-%40OEvortex-red.svg" alt="YouTube Channel" />
  </a>
  <h1>DDG Search</h1>
  <p>
    <strong>Web search and AI-powered answers from the command line or MCP.</strong><br>
    DuckDuckGo, IAsk AI, and Monica AI. No API keys required.
  </p>
</div>

---

## Quick Start

```bash
# 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"
```

## Usage

### CLI

```bash
# 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:

```bash
ddg --server
```

**Claude Desktop config:**

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

**Global install config:**

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

### Programmatic API

```javascript
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.

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

## Install

```bash
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

---

<div align="center">
  <sub>Made by <a href="https://youtube.com/@OEvortex">@OEvortex</a></sub>
</div>

TDQS

A4/5.0

Scored across 1 tool

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

ActivityInactive
ResponsivenessSlow