Daedra
Daedra is a high-performance DuckDuckGo-powered web search and research Model Context Protocol (MCP) server written in Rust. It provides web search and page fetching capabilities that can be used with AI assistants like Claude.
Installation
npx daedraAsk AI about Daedra
Powered by Claude Β· Grounded in docs
I know everything about Daedra. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
Daedra
Self-contained web search MCP server. Rust. 7 backends. Works from any IP.
Single binary. Automatic backend fallback. Zero configuration for basic search.
Daedra is a self-contained web search MCP server written in Rust. Multiple search backends with automatic fallback. Works from any IP β datacenter, VPS, residential. No API keys required for basic search.
Why Daedra?
Every major search engine (Google, Bing, DuckDuckGo, Brave) blocks datacenter/VPS IPs with CAPTCHAs since 2025. Daedra solves this with a multi-backend fallback chain that automatically finds a backend that works:
Serper (API) β Tavily (API) β Bing β Wikipedia β StackOverflow β GitHub β DuckDuckGo
Pure Rust. If one backend is blocked or rate-limited, the next one takes over automatically.
Install
cargo install daedra
Search backends
| Backend | Type | API Key | Works from VPS? |
|---|---|---|---|
| Serper.dev | Google JSON API | SERPER_API_KEY | Yes |
| Tavily | AI-optimized API | TAVILY_API_KEY | Yes |
| Bing | HTML scraping | None | Sometimes (CAPTCHA risk) |
| Wikipedia | OpenSearch API | None | Always |
| StackExchange | Public API | None | Always |
| GitHub | Public API | None / GITHUB_TOKEN | Always |
| DuckDuckGo | HTML scraping | None | Rarely (blocked since mid-2025) |
Backends are tried in order. First one that returns results wins.
Usage
MCP Server (for Claude, Cursor, pawan, etc.)
{
"mcpServers": {
"daedra": {
"command": "daedra",
"args": ["serve", "--transport", "stdio", "--quiet"]
}
}
}
CLI
# Search
daedra search "rust async runtime" --num-results 5
# Fetch a webpage as Markdown
daedra fetch https://rust-lang.org
# Check backend health
daedra check
# Server info
daedra info
As a Rust library
use daedra::tools::SearchProvider;
use daedra::types::SearchArgs;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let provider = SearchProvider::auto();
let args = SearchArgs {
query: "rust programming".to_string(),
options: None,
};
let results = provider.search(&args).await?;
for r in &results.data {
println!("{} β {}", r.title, r.url);
}
Ok(())
}
MCP Tools
web_search
Search the web with automatic backend fallback.
{
"query": "search terms",
"options": {
"region": "wt-wt",
"safe_search": "MODERATE",
"num_results": 10,
"time_range": "w"
}
}
Aliases: search_duckduckgo (backward compat)
visit_page
Fetch and extract web page content as Markdown.
{
"url": "https://example.com",
"selector": "article.main",
"include_images": false
}
Architecture
Daedra
βββ SearchProvider (fallback chain)
β βββ SerperBackend (Google via API)
β βββ TavilyBackend (AI-optimized API)
β βββ BingBackend (HTML scraping)
β βββ WikipediaBackend (OpenSearch API)
β βββ StackExchangeBackend (Public API)
β βββ GitHubBackend (Public API)
β βββ SearchClient (DuckDuckGo HTML)
βββ FetchClient (HTML β Markdown)
βββ SearchCache (moka async cache)
βββ MCP Server
β βββ STDIO transport (JSON-RPC)
β βββ SSE transport (Axum HTTP)
βββ CLI (clap)
Configuration
# Optional API keys (improves result quality)
export SERPER_API_KEY=... # Google results via Serper
export TAVILY_API_KEY=... # AI-optimized search
export GITHUB_TOKEN=... # Higher GitHub API rate limit
# Logging
export RUST_LOG=daedra=info
Ecosystem
| Project | What |
|---|---|
| pawan | CLI coding agent that uses daedra for web search via MCP |
| ares | Agentic retrieval-enhanced server |
| eruka | Context intelligence engine |
Built by DIRMACS.
License
MIT
