# Local Websearch

> A local DuckDuckGo web search MCP server. Exposes two tools via the MCP stdio protocol. Attempts to self rate-limit.

- **Type:** MCP server
- **Install:** `agentstack add mcp-bennmann-local-websearch`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [bennmann](https://agentstack.voostack.com/s/bennmann)
- **Installs:** 0
- **Category:** [Search](https://agentstack.voostack.com/c/search)
- **Latest version:** 0.1.0
- **License:** Apache-2.0
- **Upstream author:** [bennmann](https://github.com/bennmann)
- **Source:** https://github.com/bennmann/local-websearch

## Install

```sh
agentstack add mcp-bennmann-local-websearch
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# local-websearch

A local DuckDuckGo web search MCP server in less than 150 lines of code. Exposes two tools via the MCP stdio protocol.

The server rate-limits search requests to approximately 30 per minute (2-second minimum interval) to be respectful to DuckDuckGo's infrastructure. Page content fetching is unthrottled but respects standard web etiquette (reasonable User-Agent, 10-second timeout, content truncation to ~15k characters).

## Tools

- **`search(query, max_results)`** — Searches DuckDuckGo and returns titles, URLs, and snippets.
- **`fetch_page_content(url, max_length)`** — Retrieves and cleans the main text content from a URL. Default `max_length` is 15000 characters. (Reference: Wikipedia articles average 10k-20k chars; short articles 3k-5k; long articles 50k+.)

## Installation

```bash
pip install -e .
```

## Vibe Setup

Add to your Vibe configuration:

```toml
[[mcp_servers]]
name = "local-websearch"
transport = "stdio"
command = ["python3", "/path/to/mcp-local-websearch/server.py"]
```

## Generic MCP Client Setup

For any MCP client using stdio transport:

```json
{
  "mcpServers": {
    "local-websearch": {
      "command": "python3",
      "args": ["/path/to/mcp-local-websearch/server.py"]
    }
  }
}
```

## Dependencies

- mcp==1.26.0
- ddgs==9.13.0
- httpx==0.28.1
- beautifulsoup4==4.14.3

## License

Licensed under [Apache 2.0](LICENSE).

Dependencies use permissive licenses (MIT or BSD-3-Clause) compatible with Apache 2.0:

| Dependency | License |
|------------|---------|
| mcp | MIT |
| ddgs | MIT |
| httpx | BSD-3-Clause |
| beautifulsoup4 | MIT |
| lxml (transitive) | BSD-3-Clause |
| primp (transitive) | MIT |
| click (transitive) | BSD-3-Clause |

## AI Usage Disclosure

This project was developed with assistance from AI models: **Mistral Vibe** and **Qwen3 27B** (various Unsloth quants).

## Source & license

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

- **Author:** [bennmann](https://github.com/bennmann)
- **Source:** [bennmann/local-websearch](https://github.com/bennmann/local-websearch)
- **License:** Apache-2.0

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

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** yes
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/mcp-bennmann-local-websearch
- Seller: https://agentstack.voostack.com/s/bennmann
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
