Skip to content
mratsimPublic

About

Search more, hallucinate less - a suite of MCP servers and CLI tools to supercharge your LLM skillset

Resources

Stars

6 stars

Watchers

1 watching

Forks

Repository files navigation

Delulu - A suite of MCP tools to supercharge your LLM skillset

Tip

More knowing. Less guessing.

Delulu provides a suite of CLI tools and MCP (Model Context Protocol) servers to help your LLM search, crawl, and extract high-quality information from the web and academic sources.

Available Tools

App CLI Binary MCP Server Description
webfetch delulu-fetch delulu-webfetch-mcp Web content fetching, HTML→Markdown, PDF/DOCX extraction
websearch delulu-websearch delulu-websearch-mcp Multi-engine web search (DuckDuckGo, Brave)
paper-search-arxiv delulu-arxiv delulu-arxiv-mcp arXiv paper search & full-text retrieval
paper-search-iacr delulu-iacr delulu-iacr-mcp IACR ePrint (cryptography) paper search & PDF retrieval
paper-search-pubmed delulu-pubmed delulu-pubmed-mcp PubMed biomedical paper search
travel-search delulu-flights, delulu-hotels delulu-travel-mcp Google Flights & Hotels search
mcpify delulu-mcpify β€” Convert OpenAPI specs into MCP servers
all-mcp delulu-all-mcp delulu-all-mcp Unified MCP server re-exporting the 21-tool union across all apps

Motivation

Tip

One chat UI to rule them all
One MCP to find them
One query to bring them all
And by the LLM bind them

Screenshots

delulu-flights-search.png delulu-hotels-search.png

Features

  • πŸͺ„ MCP Server: Works with stdio transport (Claude Desktop) and HTTP transport
  • πŸ’» CLI Tools: Direct flights and hotels commands
  • 🚦 Rate Limiting: Let's be good citizens.
  • πŸͺ Cookie Management: Let's be crafty citizens.
  • πŸ“¦ Prebuilt Binary: delulu-all-mcp for Windows/macOS/Linux Γ— x86-64/arm64, for those allergic to Docker
  • 🐳 Container Ready: Docker, Podman and Docker-Compose support with prebuilt image
  • πŸš€ High Performance: Built with Rust, Axum, and Tokio
  • ☁️ Lightweight: No browser, Selenium, or Playwright - direct queries via reverse-engineered Protobuf

Prebuilt release: v0.2.0 ships a single prebuilt binary, delulu-all-mcp, which bundles all 21 tools (travel, webfetch, websearch, arXiv/IACR/PubMed papers, mcpify). The individual apps are built from source with cargo β€” see Building from source.

Installation

πŸ“¦ Option 1: Prebuilt Binary

A single delulu-all-mcp binary is published for Windows, macOS and Linux (x86-64 and arm64). It bundles all 21 tools; the individual apps are built from source (Option 2 below).

The archives below are published with the v0.2.0 release (see Releases); until that tag exists, build from source.

  1. Quick Install - Platform-specific one-liners:
Windows (x86-64 i.e. AMD or Intel)
Invoke-WebRequest -Uri "https://github.com/mratsim/delulu/releases/latest/download/delulu-all-mcp-windows-x86_64.zip" -OutFile "delulu.zip"; Expand-Archive -Path "delulu.zip" -DestinationPath "."; Remove-Item "delulu.zip"
Windows ARM64
Invoke-WebRequest -Uri "https://github.com/mratsim/delulu/releases/latest/download/delulu-all-mcp-windows-arm64.zip" -OutFile "delulu.zip"; Expand-Archive -Path "delulu.zip" -DestinationPath "."; Remove-Item "delulu.zip"
macOS (Apple Silicon only)
curl -sL "https://github.com/mratsim/delulu/releases/latest/download/delulu-all-mcp-macos-arm64.tar.gz" | tar -xz
Linux (x86-64 i.e. AMD or Intel)
curl -sL "https://github.com/mratsim/delulu/releases/latest/download/delulu-all-mcp-linux-x86_64.tar.gz" | tar -xz
Linux (Arm64 like Raspberry Pi)
curl -sL "https://github.com/mratsim/delulu/releases/latest/download/delulu-all-mcp-linux-arm64.tar.gz" | tar -xz
  1. Manual Download - Visit the GitHub Releases page and download the archive for your platform and architecture, then extract it (it contains the delulu-all-mcp binary β€” .exe on Windows).

  2. Set up your MCP client - see Usage below for the stdio/HTTP transports and Claude Desktop config.

Why only one binary? Building every app for x86-64/arm64 Γ— Windows/macOS/Linux would produce dozens of artifacts that confuse more than they help. The individual apps are one cargo build away (Option 2) and delulu-all-mcp gives you all 21 tools from a single binary.

πŸ¦€ Option 2: Cargo (Rust Users)

Every app is a normal Cargo package in this workspace. cargo install puts the binary in ~/.cargo/bin/; cargo build --release leaves it in ./target/release/.

git clone https://github.com/mratsim/delulu
cd delulu

# Build everything (all apps, all binaries):
cargo build --release

# Or install one app β€” e.g. the unified all-mcp server (all 21 tools):
cargo install --path delulu-apps/all-mcp --features mcp

Individual apps:

App Package (-p) Binaries
Unified all-mcp server delulu-all-mcp delulu-all-mcp (MCP stdio/HTTP)
Travel search delulu-travel-search delulu-flights, delulu-hotels (CLI), delulu-travel-mcp
Web fetch & markdown delulu-webfetch delulu-fetch (CLI), delulu-webfetch-mcp
Web search (DuckDuckGo/Brave) delulu-websearch delulu-websearch (CLI), delulu-websearch-mcp
arXiv papers delulu-paper-search-arxiv delulu-arxiv (CLI), delulu-arxiv-mcp
IACR papers delulu-paper-search-iacr delulu-iacr (CLI), delulu-iacr-mcp
PubMed papers delulu-paper-search-pubmed delulu-pubmed (CLI), delulu-pubmed-mcp
LLM-aware HTTP→MCP bridge delulu-mcpify delulu-mcpify

For one app (e.g. the travel MCP server):

cargo install --path delulu-apps/travel-search --features mcp
# binaries: ~/.cargo/bin/delulu-travel-mcp (plus delulu-flights / delulu-hotels)

--features mcp builds the MCP server binary; the CLI-only binaries are built by default when the feature is omitted. The default mcp feature set works on Linux, macOS and Windows.

🐳 Option 3: Docker / Podman

A prebuilt OCI image is published on GitHub Container Registry (GHCR):

  • ghcr.io/mratsim/delulu/all-mcp (unified all-mcp server, all 21 tools)
# HTTP transport (for remote clients) β€” NO built-in authentication!
# Put it behind a TLS-terminating reverse proxy that enforces auth
# (mTLS or bearer token), or restrict the port with a firewall.
docker run -p 8080:8080 \
  --env RUST_LOG=info \
  ghcr.io/mratsim/delulu/all-mcp:latest \
  http --host 0.0.0.0 --port 8080
# Stdio transport (for Claude Desktop) - requires interactive mode `docker run -i --rm`
docker run -i --rm ghcr.io/mratsim/delulu/all-mcp:latest stdio

To build the image from source:

docker build --target delulu-all-mcp-runtime -t delulu-all-mcp .
docker run -i --rm delulu-all-mcp stdio

🐳 Option 4: Docker Compose

There is a sample docker-compose.yml that builds and runs the travel MCP server from source over HTTP. delulu-all-mcp is not in the compose file β€” it ships as a standalone binary or OCI image (Options 1/3).

git clone https://github.com/mratsim/delulu
cd delulu
docker-compose up -d
# The compose server listens on http://localhost:8080/mcp

Usage / Tool reference

Available tools (21)

All MCP servers share the same client-facing tool names; delulu-all-mcp re-exports the full union:

webfetch:        webfetch, webfetch_raw, fetch_doc
websearch:       web_search, web_search_next_page
travel:          search_flights, search_hotels
arxiv:           arxiv_search_papers, arxiv_get_papers_by_id, arxiv_get_paper
iacr:            iacr_list_recent_papers, iacr_get_paper_details, iacr_paper_pdf_url, iacr_get_paper
pubmed:          pubmed_search, pubmed_get_summaries, pubmed_fetch_abstracts, pubmed_find_related, pubmed_get_database_info, pubmed_match_citation, pubmed_get_paper

That is 21 tools. Every paper tool is namespaced by repository prefix (arxiv_*, iacr_*, pubmed_*) because the three paper servers are separate repositories with overlapping vocabulary (papers, ids, details, abstracts, citations) β€” the name alone tells the caller which repository it talks to. The standalone per-package binaries keep their unprefixed names.

CLI transport

delulu-* binaries run two transports β€” stdio (Claude Desktop) and HTTP:

# CLI transport (Claude Desktop-friendly):
delulu-all-mcp stdio

# HTTP transport (for remote clients) β€” NO built-in authentication!
# Put it behind a TLS-terminating reverse proxy with auth, or a firewall.
delulu-all-mcp http --host 0.0.0.0 --port 8080

The same two transports apply to every individual delulu-* binary built from source (e.g. delulu-travel-mcp stdio).

For delulu-all-mcp the same flags apply plus the rate/API-base overrides (see below).

delulu-all-mcp β€” unified 21-tool MCP server

delulu-all-mcp is a single binary that hosts all 21 tools from every app behind one shared RateLimitedCrawler. A single GCRA bucket per domain is shared across webfetch, websearch, travel, and the three paper apps, so one app hammering a host limits every other app that touches the same host.

Merged CLI flags

  • --qps <u32> β€” queries per second for the shared crawler (default 1, 1..=10000)
  • --burst <u32> β€” burst size for the shared crawler (default 1)
  • --max-resp-size-mb <u32> β€” per-response size cap in MB (default 50, 1..=1024)
  • --arxiv-api-base-url <url> β€” override the arXiv API base URL (default https://export.arxiv.org/api/query)
  • --iacr-api-base-url <url> β€” override the IACR eprint API base URL (default https://eprint.iacr.org)
  • --pubmed-api-base-url <url> β€” override the PubMed E-utilities base URL
  • --expose-local-networks β€” allow webfetch tools to reach local/private networks (default off)

--expose-local-networks affects ONLY the webfetch tools (webfetch, webfetch_raw, fetch_doc). The paper-search and websearch tools do not use it.

Rate policy (full delta table)

Because all-mcp merges six apps behind one crawler, the per-domain rate policy is shared; here is the full standalone-vs-all-mcp delta (qps, burst, timeout, cap, HTTP/2, redirects): The default is qps=1 / burst=1 β€” a conservative single-DOMAIN-at-a-time throttle that costs latency but is the least likely to get your IP throttled. See the deltas below.

app (engine) standalone qps / burst all-mcp qps / burst standalone timeout all-mcp timeout standalone cap all-mcp cap http2 redirects
webfetch 2 / 1 1 / 1 30 s 30 s 50 MB 50 MB (lib-fixed) gains http2 5
websearch ddg 1 / 1 1 / 1 10 s 30 s 5 MB 50 MB yes (both) 5
websearch brave 2 / 1 1 / 1 10 s 30 s 5 MB 50 MB gains http2 5
travel (flights/hotels) 2 / 1 1 / 1 5 s 30 s unlimited 50 MB gains http2 10 β†’ 5
arxiv 1 / 1 1 / 1 30 s 30 s unlimited 50 MB gains http2 5
iacr 3 / 1 1 / 1 30 s 30 s unlimited 50 MB gains http2 5
pubmed 3 / 1 1 / 1 30 s 30 s unlimited 50 MB gains http2 5

Caution (tradeoff sentences, read before pointing an LLM at this):

  1. per-domain qps is reduced for 5 of 7 engine configs (webfetch/brave/travel/iacr/pubmed 2/2/2/3/3 β†’ 1) in exchange for one per-domain bucket shared across all tools;
  2. timeouts are relaxed for travel (5 s β†’ 30 s) and websearch (10 s β†’ 30 s) β€” a hung upstream now delays up to 30 s;
  3. body caps: search 5 MB β†’ 50 MB (oversized responses that errored standalone now succeed β€” different error semantics), travel/papers gain a 50 MB cap; enforcement caveat: the cap is enforced via Content-Length pre-check plus per-tool streaming caps where they exist; chunked responses without Content-Length are not hard-capped; webfetch tools are fixed at the lib's 50 MB regardless of the --max-resp-size-mb flag;
  4. the domain cache is an LRU with max_domains = 128 keyed on host only (port/scheme ignored); eviction resets the evicted domain's GCRA state to a fresh burst, and the 128-slot cache is now shared across 6 apps β€” roughly 6Γ— shorter per-domain state lifetime;
  5. --burst=1 therefore serializes concurrent calls to the same host at qps spacing;
  6. the GCRA queue wait is unbounded and sits outside the 30 s request timeout; worst case at qps=1 a retrying call can stall a host for tens of seconds;
  7. --qps, --burst, --max-resp-size-mb overrides exist if you want to relax or tighten the shared policy;
  8. HTTP/2 requests are sent on the shared crawler (where the engine supports it) β€” see the http2 column;
  9. travel redirect delta: travel tools follow max 5 redirects in all-mcp, vs 10 standalone β€” this is documented, not "fixed", to avoid creating a webfetch/paper mismatch;
  10. the session cache is shared across all clients (512 sessions / 10 min) β€” heavy concurrent pagination may evict other sessions early.

Claude Desktop configuration (stdio)

Add the block to your claude_desktop_config.json β€” stdio, exactly:

{
  "mcpServers": {
    "delulu-all-mcp": {
      "command": "delulu-all-mcp",
      "args": ["--qps", "1", "--burst", "1", "--max-resp-size-mb", "50", "stdio"]
    }
  }
}

Do not add --expose-local-networks unless your documents are on the same machine/private network. It silently widens the SSRF surface for the webfetch tools.

For the HTTP transport (no auth built-in):

delulu-all-mcp http --host 127.0.0.1 --port 8080
# NO authentication β€” bind to 127.0.0.1 (or a firewall) and do not expose the port publicly.

Docker Compose: delulu-all-mcp is not yet wired into docker-compose.yml β€” run it from the binary or OCI image directly for now.

License

Licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

See LICENSE or http://www.gnu.org/licenses/ for details.

About

Search more, hallucinate less - a suite of MCP servers and CLI tools to supercharge your LLM skillset

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages