Web Search MCP
## Web Search MCP
[](https://github.com/sponsors/guhcostan)
Minimal MCP server that can search the web and extract readable page content, similar to Cursor's built-in web context.
### Features
- **search_web**: Query the web (DuckDuckGo HTML) and return result URLs and titles
- **fetch_page**: Fetch any URL and extract readable content using Mozilla Readability + JSDOM
### Requirements
- Node.js 20+ (recommended: 20.18.1+)
### Install
```bash
npm install
```
### Run (stdio)
```bash
npm start
```
### Install globally
```bash
npm i -g @guhcostan/web-search-mcp
```
Then reference the binary `web-search-mcp`.
### Integrate with Cursor (MCP)
Add to your Cursor MCP settings:
```json
{
"mcpServers": {
"web-search-mcp": { "command": "web-search-mcp" }
}
}
```
Alternatively, without global install, use npx:
```json
{
"mcpServers": {
"web-search-mcp": {
"command": "npx",
"args": ["-y", "@guhcostan/web-search-mcp@latest"]
}
}
}
```
### Tools
- **search_web**
- input:
- `query` (string, required)
- `limit` (number, optional, 1–10, default 5)
- output: array of `{ url: string; title?: string; snippet?: string }`
- **fetch_page**
- input:
- `url` (string URL, required)
- output: `{ url: string; title?: string; content: string }`
### Development
Type-check, lint and tests:
```bash
npm run check
```
Run individually:
```bash
npm run build
npm run lint
npm test
```
### Notes
- Web search uses DuckDuckGo HTML; results may vary and are HTML-scraped (no API key required)
- Be mindful of target site terms of use and robots policies when fetching pages
### License
MIT
TDQS
Scored across 2 tools
The two tools have clearly distinct purposes: fetch_page retrieves and extracts content from a specific URL, while search_web performs a general web search to find relevant URLs. There is no overlap or ambiguity between them, as one is for accessing known pages and the other is for discovering new ones.
Both tools follow a consistent verb_noun naming pattern (fetch_page and search_web), using clear, descriptive verbs that align with their functions. The naming is uniform and predictable across the set.
With only two tools, the server feels thin for a web search domain, as it lacks operations like advanced search filtering, result pagination, or handling different search engines. While the tools cover basic fetch and search, the count is borderline minimal for the apparent scope.
The tools provide core search and fetch capabilities, but there are notable gaps: no ability to refine searches (e.g., by date or site), manage search history, or handle errors like rate limits. This could lead to agent workarounds for more complex tasks.