Borrowing it
Nothing to install: this file belongs to joohyukjung/duckduckgo-mcp. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/joohyukjung/duckduckgo-mcp/main/CLAUDE.mdgit clone --depth 1 https://github.com/joohyukjung/duckduckgo-mcpWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/instructions/joohyukjung/duckduckgo-mcp/claude-md)<a href="https://agentmods.dev/instructions/joohyukjung/duckduckgo-mcp/claude-md"><img src="https://agentmods.dev/badge/instructions/joohyukjung/duckduckgo-mcp/claude-md/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/instructions/joohyukjung/duckduckgo-mcp/claude-md"><img src="https://agentmods.dev/badge/instructions/joohyukjung/duckduckgo-mcp/claude-md.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.01478 | $0.01478 |
| Opus 5 | $0.00739 | $0.00739 |
| Sonnet 5 | $0.00296 | $0.00296 |
| Haiku 4.5 | $0.00148 | $0.00148 |
Grade A, and why
duckduckgo-mcp CLAUDE.md scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 11d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
- `DDG_SEARCH_BACKEND`: `auto` (default) | `httpx` | `curl` — HTTP backend for the search tool. `auto` falls back to curl_cffi Chrome TLS impersonation when DuckDuckGo returns a fingerprint block (HTTP 202/403); `curl`/f How it starts
The opening of the file, as written. The whole thing — 81 lines — stays where its author put it; the contents beside it link to each section on GitHub.
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project Overview
A Model Context Protocol (MCP) server providing DuckDuckGo web search and webpage content fetching. Built with Python using the FastMCP framework. Published to PyPI as duckduckgo-mcp-server.
Commands
# Install dependencies
uv sync
# Run the server
uv run duckduckgo-mcp-server
# Run with MCP Inspector (for interactive testing)
mcp dev src/duckduckgo_mcp_server/server.py
# Run all tests (unit + e2e)
uv run python -m pytest src/duckduckgo_mcp_server/ -v
# Run only unit tests
uv run python -m pytest src/duckduckgo_mcp_server/test_server.py -v
# Run only e2e MCP protocol tests
uv run python -m pytest src/duckduckgo_mcp_server/test_e2e.py -v
# Run a single test
uv run python -m pytest src/duckduckgo_mcp_server/test_server.py::TestRateLimiter::test_acquire_removes_expired_entries
# Build package
uv build
# Lint (ruff) — matches the CI `quality` job
uv run ruff check .
# Audit dependencies for known vulnerabilities (informational)
uv run --with pip-audit pip-audit --desc
Architecture
Single-module server in src/duckduckgo_mcp_server/server.py with three main classes:
DuckDuckGoSearcher— Scrapes DuckDuckGo's HTML endpoint (html.duckduckgo.com/html) via POST requests. Parses results with BeautifulSoup. Handles SafeSearch (kpparam) and region (klparam) configuration.WebContentFetcher— Fetches arbitrary URLs, strips non-content elements (script, style, nav, header, footer), and returns cleaned text truncated to 8000 chars.RateLimiter— Sliding-window rate limiter (30 req/min for search, 20 req/min for content fetching).
Two MCP tools are exposed: search and fetch_content.
Configuration
Environment variables read at startup (not per-request):
DDG_SAFE_SEARCH:STRICT|MODERATE(default) |OFFDDG_REGION: Region code likeus-en,cn-zh,jp-ja,wt-wtDDG_ALLOW_PRIVATE_URLS:1/trueto letfetch_contentreach loopback/private/link-local/metadata addresses (default off — SSRF guard). Also settable via--allow-private-urls.DDG_SEARCH_BACKEND:auto(default) |httpx|curl— HTTP backend for the search tool.autofalls back to curl_cffi Chrome TLS impersonation when DuckDuckGo returns a fingerprint block (HTTP 202/403);curl/fallback need the[browser]extra. Also settable via--search-backend.DDG_ALLOWED_HOSTS/DDG_ALLOWED_ORIGINS: comma-separated Host/Origin allow-lists for the HTTP transports (DNS-rebinding protection). Needed behind a reverse proxy / in Docker to avoid421 Misdirected Request. Values must include the port if the client sends one (host:*accepts any port); there is no bare*— use--disable-dns-rebinding-protection(DDG_DISABLE_DNS_REBINDING_PROTECTION) to accept any host._build_transport_security()merges the SDK's localhost patterns into whatever is configured, since passing explicit settings to FastMCP otherwise replaces its localhost default wholesale. Also--allowed-hosts/--allowed-origins.TRANSPORT/HOST/PORT: fallbacks for--transport/--host/--port, for container platforms (Rancher, k8s) where Arguments are hard to set. Deliberately notDDG_-prefixed.TRANSPORTaccepts a single value or a comma-separated list (sse,streamable-http); an invalid value errors at startup. Resolved inmain()afterparse_args(), so a CLI flag always wins andHOST/PORTalone never breaksstdiomode.DDG_JSON_RESPONSE:1/truemakes streamable-http POST replies a singleapplication/jsonbody instead of an SSE stream (--json-response). Set viamcp.settings.json_responsebeforemcp.streamable_http_app()— FastMCP caches the session manager on first call. For blocking HTTP clients that cannot read chunked multi-event streams.DDG_DISABLE_PROGRESS_NOTIFICATIONS:1/trueroutesctx.info/ctx.errorto the module logger instead of the MCP wire, via the_log_info()/_log_error()helpers that wrap all 20 call sites. Read per call, so tests toggle it withpatch.dict(os.environ, ...).DDG_CA_CERTS: path to a PEM CA bundle for verifying TLS on outbound requests (needed behind TLS-intercepting proxies — httpx no longer readsSSL_CERT_FILE).DDG_SSL_VERIFY=0disables verification entirely (discouraged). Also--ca-certs/--no-ssl-verify. Applies to all four client sites (httpx + curl_cffi, search + fetch).
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 11d ago First seen · 81 lines · 1,478 tokens per session scan A c99cbebdf7b5
duckduckgo-mcp CLAUDE.md is an instructions file published in the GitHub repository joohyukjung/duckduckgo-mcp (0 stars, last pushed 17d ago), licensed MIT. It adds 1,478 tokens to every session, about $0.0074 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other instructions, from other repositories
spec-kit AGENTS.md
AGENTS.md instructions for github/spec-kit, covering agents.md, about spec kit and specify, quickstart — add a new integration in 5 steps, integration architecture and integrationmanifest — file tracking.
next.js AGENTS.md
AGENTS.md instructions for vercel/next.js, covering next.js development guide, codebase structure, monorepo overview, core package: packages/next and other important packages.
codex AGENTS.md
AGENTS.md instructions for openai/codex, covering rust/codex-rs, the codex-core crate, code review rules, crate api surface and model visible context.
vscode buildNext.instructions.md
Working notes and architecture documentation for the new esbuild-based build system in build/next. Use when making changes to the new build pipeline (transpile/bundle commands, NLS plugin, source-map handling, resource copying, or self-hosting watch tasks).
langchain AGENTS.md
AGENTS.md instructions for langchain-ai/langchain, covering global development guidelines for the langchain monorepo, corridor security analysis, project architecture and context, monorepo structure and development tools & commands.
vscode oss-third-party-notices.instructions.md
Instructions for microsoft/vscode, covering vs code oss third-party-notices pipeline, architecture, pipeline flow in ci, applying the notice (cutover) and fallback chain (never fail the build).