duck-poacher-mcp
by lars-dreier
README.md
# duck-poacher-mcp
A [Model Context Protocol](https://modelcontextprotocol.io) server that exposes
DuckDuckGo web and image search to MCP clients (Claude Desktop, Claude Code, and
others). It wraps the [`duck-poacher`](https://github.com/lars-dreier/duck-poacher)
scraper.
## Tools
| Tool | Arguments | Returns |
|------|-----------|---------|
| `web_search` | `query` | JSON array of `{ title, url, description }` |
| `image_search` | `query`, optional `time` / `size` / `color` / `type` / `layout` / `license` / `safeSearch` | JSON array of `{ thumbnailUrl, imageUrl }` |
Both tools return their results as a JSON string. A failed
scrape (token/URL could not be read, upstream HTTP error) comes back as a tool
result with `isError: true` and the message.
## Use with an MCP client
Run the published binary over stdio. With Claude Code:
```sh
claude mcp add duck-poacher -- npx -y duck-poacher-mcp
```
Or configure it directly (e.g. Claude Desktop's `claude_desktop_config.json`):
```json
{
"mcpServers": {
"duck-poacher": {
"command": "npx",
"args": ["-y", "duck-poacher-mcp"]
}
}
}
```
### LM Studio
Edit LM Studio's `mcp.json` (Program tab → **Edit mcp.json**) and add the same entry:
```json
{
"mcpServers": {
"duck-poacher": {
"command": "npx",
"args": ["-y", "duck-poacher-mcp"]
}
}
}
```
## Develop
```sh
npm install
npm test # live integration specs — hit DuckDuckGo, need network
npm run build # bundle to dist/ (ESM), bin → dist/cli.mjs
```
Inspect the tools interactively with the MCP Inspector:
```sh
npm run build
npx @modelcontextprotocol/inspector node dist/cli.mjs
```
See [`.claude/documentation/`](.claude/documentation/index.md) for the code-style
and testing conventions this project follows.
## License
ISC © Lars Dreier
TDQS
A4.2/5.0
Scored across 2 tools
Disambiguation5/5
The two tools are clearly distinct: one returns text results, the other returns image results. There is no overlap in purpose or output.
Naming Consistency5/5
Both tools follow a consistent verb_noun pattern (web_search, image_search), making their actions and targets immediately clear.
Tool Count3/5
With only two tools covering web and image search, the count is minimal but not unreasonable for a focused search server. It feels slightly thin but not extreme.
Completeness3/5
The tool set covers basic text and image search, but lacks common search types like news or video. The absence of these creates notable gaps for a general-purpose search server.
Maintenance
ActivityStale
ResponsivenessNo issues