Skip to main content
Glama
deeprave

search-mcp

by deeprave
README.md
# search-mcp: Minimal Web Search MCP Server

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).

## Features

- **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 `mcp` and `requests`
- **Proper MCP protocol** - correct stdio transport implementation

## Installation

```bash
cd ~/Code/search-mcp
pip install -e .
```

Or with uv:

```bash
cd ~/Code/search-mcp
uv pip install -e .
```

## Usage

### Direct Testing

```bash
python search_mcp.py
```

Then send JSON-RPC requests via stdin:

```json
{"jsonrpc": "2.0", "method": "tools/list", "id": 1}
```

### Amazon Q Configuration

Add to your `~/.config/cursor/mcp.json` or Kiro-CLI config:

```json
{
  "mcpServers": {
    "WebSearch": {
      "type": "stdio",
      "command": "python3",
      "args": ["/Users/USERNAME/Code/search-mcp/search_mcp.py"],
      "timeout": 120000,
      "disabled": false
    }
  }
}
```

## Tool: `web_search`

**Parameters:**
- `query` (string, required): The search query
- `max_results` (integer, optional): Max results to return (default: 5)

**Example:**
```python
await client.call_tool("web_search", {"query": "Python async programming", "max_results": 3})
```

## Why This Works

1. **Correct MCP protocol** - properly implements stdio transport with persistent connection
2. **Timeout handling** - 10-second timeout on requests to prevent Amazon Q hangs
3. **Error handling** - gracefully handles network errors and timeouts
4. **Simple codebase** - ~150 lines, easy to debug or modify
5. **No external service** - uses DuckDuckGo's free API, no rate limiting issues

## Troubleshooting

### Module not found errors

Make sure you installed with `pip install -e .`:

```bash
python3 venv .venv
source .venv/bin/activate
pip install -e .
```

### Server not responding

Check that the Python path is correct in your config:

```bash
which python3
python3 search_mcp.py
```

### Timeout issues

The 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

## License

MIT