mcp-web-search
by doranobik
README.md
# MCP Web Search
A Model Context Protocol (MCP) server for web search using DuckDuckGo. **No API key required.**
## Features
- **Web Search** - Search the web via DuckDuckGo's static HTML interface
- **Content Extraction** - Fetch and extract readable content from any webpage using Mozilla's Readability
- **Zero Configuration** - No API keys, no signup, works out of the box
- **Lightweight** - Uses Node.js native `fetch`, no heavy browser automation
## Tools
| Tool | Description |
|------|-------------|
| `webSearch` | Search the web with DuckDuckGo. Returns title, URL, and snippet for each result. |
| `fetchWebContent` | Extract main text content from a webpage URL. Removes ads, navigation, and noise. |
## Usage
### Local installation
```bash
git clone https://github.com/doranobik/mcp-web-search.git
cd mcp-web-search
npm install
npm run build
node dist/index.js
```
> **Note:** This package is not published to npm. The `mcp-web-search` name on npm belongs to an unrelated project, so install from this repository instead.
### Docker
```bash
docker build -t mcp-web-search .
docker run -i mcp-web-search
```
### MCP Client Configuration
**Claude Desktop** (`claude_desktop_config.json`):
```json
{
"mcpServers": {
"web-search": {
"command": "node",
"args": ["/path/to/mcp-web-search/dist/index.js"]
}
}
}
```
**LM Studio** (`mcp.json`):
```json
{
"mcpServers": {
"web-search": {
"command": "node",
"args": ["/path/to/mcp-web-search/dist/index.js"]
}
}
}
```
## Tool Parameters
### webSearch
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `query` | string | Yes | - | Search query |
| `maxResults` | number | No | 10 | Max results (1-20) |
| `region` | string | No | - | Region code (e.g., `jp-ja`, `us-en`, `wt-wt`) |
### fetchWebContent
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `url` | string | Yes | - | URL to fetch |
| `maxChars` | number | No | 5000 | Max characters to return (100-200000) |
## Disclaimer
This server searches the web by parsing DuckDuckGo's HTML interface, not an official API. It may break if DuckDuckGo changes its markup, and heavy automated use may violate DuckDuckGo's terms of service or lead to rate limiting. Use it responsibly and at your own risk.
## License
MIT — see [LICENSE](LICENSE) for details.
TDQS
A4.5/5.0
Scored across 2 tools
Disambiguation5/5
The two tools have clearly distinct purposes: webSearch for querying the web and fetchWebContent for retrieving page content. There is no overlap or ambiguity between them.
Naming Consistency5/5
Both tool names follow a consistent camelCase verb-noun pattern (webSearch, fetchWebContent), making them predictable and easy to understand.
Tool Count4/5
With only 2 tools, the server is minimal but well-scoped for its stated purpose of web search and content fetching. While the typical range is 3-15, this lean set is appropriate for the narrow domain.
Completeness5/5
The server covers the essential workflow of searching the web and then fetching full content from selected URLs. No critical operations are missing for its intended use case.
Maintenance
ActivityMaintained
ResponsivenessNo issues