AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
MCP verified MIT Self-run

Duckduckgo Mcp Server

mcp-ericthered926-duckduckgo-mcp-server · by ericthered926

an mcp server to access DuckDuckGo

No reviews yet
0 installs
37 views
0.0% view→install

Install

$ agentstack add mcp-ericthered926-duckduckgo-mcp-server

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/mcp-ericthered926-duckduckgo-mcp-server)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
9mo ago

Declared compatibility

Claude CodeClaude DesktopCursorWindsurf

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Duckduckgo Mcp Server? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

DuckDuckGo MCP Server

A Model Context Protocol (MCP) server that provides DuckDuckGo search functionality for AI assistants.

[](https://www.npmjs.com/package/@ericthered926/duckduckgo-mcp-server)

> Attribution: This project is a fork of zhsama/duckduckgo-mcp-server, originally created by zhsama. This fork adds English localization, news search, region support, time filtering, and modern tooling.

Features

  • Web Search - Search the web with region-specific and time-filtered results
  • News Search - Search recent news articles with source and date information
  • Token Optimization - Configurable result limits, snippet truncation, and formatting for low-VRAM LLMs
  • SafeSearch - Content filtering (strict, moderate, off)
  • Region Support - Localized results for different countries
  • Time Filtering - Filter results by day, week, month, year
  • Rate Limiting - Configurable rate limits to prevent abuse
  • Configurable Logging - Debug, info, warn, error, or none

Installation

Prerequisites

  • Node.js >= 18.0.0 (tested with Node 24)
  • npm

Install & Build

npm install
npm run build

Available Tools

duckduckgo_web_search

Performs a web search using DuckDuckGo.

| Parameter | Type | Required | Default | Description | | ------------ | ------ | -------- | --------------- | ------------------------------------------------- | | query | string | Yes | - | Search query (max 400 characters) | | limit | number | No | DDGMAXRESULTS | Override default result limit (1-20) | | count | number | No | DDGMAXRESULTS | [Deprecated: use limit] Number of results | | safeSearch | string | No | "moderate" | Filter: "strict", "moderate", or "off" | | region | string | No | "wt-wt" | Region code (e.g., "us-en", "uk-en", "de-de") | | time | string | No | "all" | Time range: "day", "week", "month", "year", "all" |

Example:

{
  "query": "TypeScript best practices",
  "count": 5,
  "region": "us-en",
  "time": "month"
}

duckduckgo_news_search

Search for recent news articles.

| Parameter | Type | Required | Default | Description | | ------------ | ------ | -------- | --------------- | ------------------------------------------------- | | query | string | Yes | - | News search query (max 400 characters) | | limit | number | No | DDGMAXRESULTS | Override default result limit (1-20) | | count | number | No | DDGMAXRESULTS | [Deprecated: use limit] Number of results | | safeSearch | string | No | "moderate" | Filter: "strict", "moderate", or "off" | | time | string | No | "all" | Time range: "day", "week", "month", "year", "all" |

Example:

{
  "query": "artificial intelligence",
  "count": 10,
  "time": "week"
}

Supported Regions

| Code | Region | | ------- | ---------------- | | wt-wt | Worldwide | | us-en | United States | | uk-en | United Kingdom | | ca-en | Canada (English) | | au-en | Australia | | de-de | Germany | | fr-fr | France | | es-es | Spain | | it-it | Italy | | jp-jp | Japan | | br-pt | Brazil | | mx-es | Mexico | | in-en | India |

Other region codes following the xx-xx format may also work.

Configuration

Environment Variables

Token Optimization (for low-VRAM LLMs)

| Variable | Default | Description | | ------------------------- | ------- | ----------------------------------------------- | | DDG_MAX_RESULTS | 3 | Default number of results returned | | DDG_MAX_SNIPPET_LENGTH | 150 | Max characters per snippet (truncated with ...) | | DDG_ENABLE_FULL_CONTENT | false | Set to "true" to disable truncation | | DDG_STRIP_EMOJI | false | Set to "true" to remove emojis from titles/text | | DDG_OUTPUT_FORMAT | "dense" | options: "dense", "json", "minimal" |

Rate Limiting

| Variable | Default | Description | | ----------------------- | ------- | --------------------------- | | RATE_LIMIT_PER_SECOND | 1 | Maximum requests per second | | RATE_LIMIT_PER_MONTH | 15000 | Maximum requests per month |

Logging

| Variable | Default | Description | | ----------- | ------- | --------------------------------------------- | | LOG_LEVEL | "info" | Logging level: debug, info, warn, error, none |

Examples

# Token-optimized for low VRAM (12GB RTX 5070)
DDG_MAX_RESULTS=3 DDG_MAX_SNIPPET_LENGTH=150 npm run start

# Full content for high-VRAM systems
DDG_MAX_RESULTS=10 DDG_MAX_SNIPPET_LENGTH=500 DDG_ENABLE_FULL_CONTENT=true npm run start

# Debug logging
LOG_LEVEL=debug npm run start

Integration

Claude Desktop

Add to your Claude Desktop config:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "duckduckgo": {
      "command": "npx",
      "args": ["-y", "@ericthered926/duckduckgo-mcp-server"]
    }
  }
}

MCPO (Open WebUI)

For MCPO integration:

{
  "mcpServers": {
    "duckduckgo": {
      "command": "npx",
      "args": ["-y", "@ericthered926/duckduckgo-mcp-server"],
      "env": {
        "DDG_MAX_RESULTS": "3",
        "DDG_MAX_SNIPPET_LENGTH": "150",
        "DDG_ENABLE_FULL_CONTENT": "false"
      }
    }
  }
}

Local Development

{
  "mcpServers": {
    "duckduckgo": {
      "command": "node",
      "args": ["/path/to/duckduckgo-mcp-server/build/index.js"],
      "env": {
        "LOG_LEVEL": "debug"
      }
    }
  }
}

Development

Scripts

| Command | Description | | ------------------- | ----------------------------- | | npm run build | Compile TypeScript | | npm run start | Run the server | | npm run dev | Watch mode for development | | npm run lint | Run ESLint + Prettier check | | npm run lint:fix | Auto-fix lint issues | | npm run format | Format code with Prettier | | npm run test | Run tests | | npm run typecheck | TypeScript type checking only |

Debugging

Use the MCP Inspector:

npx @modelcontextprotocol/inspector node build/index.js

Project Structure

duckduckgo-mcp-server/
├── src/
│   └── index.ts          # Main server (web + news search)
├── test/
│   └── server.test.js    # Smoke tests
├── build/                 # Compiled output
├── .husky/               # Pre-commit hooks
├── eslint.config.js      # ESLint 9.x flat config
├── tsconfig.json         # Strict TypeScript config
├── .prettierrc           # Prettier formatting
├── .editorconfig         # Editor settings
└── .nvmrc                # Node version (24)

Rate Limits

Default rate limits are conservative to avoid being blocked by DuckDuckGo:

  • 1 request per second - Prevents rate limiting
  • 15,000 requests per month - Reasonable monthly cap

Adjust via environment variables if needed for your use case.

Troubleshooting

Server won't start

  1. Check Node.js version: node --version (should be >= 18)
  2. Rebuild: npm run build
  3. Check for TypeScript errors in build output

Rate limit errors

  • Wait for the limit window to reset (1 second for per-second, or adjust limits)
  • Check if multiple instances are sharing the same counter

No results returned

  • Try a different query or remove time filters
  • Check if SafeSearch is blocking results
  • DuckDuckGo may return no results for very specific queries

Debug logging

Enable debug logs to see detailed request information:

LOG_LEVEL=debug npm run start

Credits

This project is a fork of zhsama/duckduckgo-mcp-server, originally created by zhsama.

What's New in This Fork

  • Token optimization - Configurable result limits & snippet truncation for low-VRAM LLMs
  • Dense output format - Single-line results to minimize token usage
  • URL cleaning - Strips tracking params (utm\_\*, fbclid, gclid, etc.)
  • limit parameter - LLM can override defaults when more context needed
  • English localization (all comments and output)
  • News search tool (duckduckgo_news_search)
  • Region/locale support for localized results
  • Time range filtering
  • Configurable logging via LOG_LEVEL
  • Modern ESLint 9.x flat config
  • Prettier formatting
  • Husky pre-commit hooks
  • Comprehensive test suite
  • Strict TypeScript configuration

License

MIT - See [LICENSE](LICENSE) for details.

Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.