A simple, reliable MCP server for web search using DuckDuckGo. No API keys required. Totally vibe-coded in ~25 minutes. Don't trust this app (even if it works for me).
- Single tool:
web_search- search the web via DuckDuckGo - No API keys needed - uses free DuckDuckGo API
- Timeout handling - 10-second timeout per request to prevent hanging
- Minimal dependencies - only
mcpandrequests - Proper MCP protocol - correct stdio transport implementation
cd ~/Code/search-mcp
pip install -e .Or with uv:
cd ~/Code/search-mcp
uv pip install -e .python search_mcp.pyThen send JSON-RPC requests via stdin:
{"jsonrpc": "2.0", "method": "tools/list", "id": 1}Add to your ~/.config/cursor/mcp.json or Kiro-CLI config:
{
"mcpServers": {
"WebSearch": {
"type": "stdio",
"command": "python3",
"args": ["/Users/USERNAME/Code/search-mcp/search_mcp.py"],
"timeout": 120000,
"disabled": false
}
}
}Parameters:
query(string, required): The search querymax_results(integer, optional): Max results to return (default: 5)
Example:
await client.call_tool("web_search", {"query": "Python async programming", "max_results": 3})- Correct MCP protocol - properly implements stdio transport with persistent connection
- Timeout handling - 10-second timeout on requests to prevent Amazon Q hangs
- Error handling - gracefully handles network errors and timeouts
- Simple codebase - ~150 lines, easy to debug or modify
- No external service - uses DuckDuckGo's free API, no rate limiting issues
Make sure you installed with pip install -e .:
python3 venv .venv
source .venv/bin/activate
pip install -e .Check that the Python path is correct in your config:
which python3
python3 search_mcp.pyThe server has a 10-second timeout per request. If searches are timing out:
- Check your internet connection
- Verify DuckDuckGo is accessible
- Try simpler/shorter search queries
MIT