Websearch MCP Server
Provides web search functionality powered by DuckDuckGo, allowing users to perform searches and retrieve results without requiring an API key.
Converts web pages from HTML into clean Markdown, reducing token consumption for language models by optimizing content structure and removing boilerplate.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Websearch MCP Serversearch for the latest news on AI regulations and summarize the top results"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Websearch MCP Server
An MCP server for web search and page fetching. Converts HTML to clean markdown using html-to-markdown (Rust-based, ~200 MB/s), cutting token usage by ~60% when LLMs consume web content.
No API keys required — search is powered by DuckDuckGo.
Token Savings
Run uv run python benchmark.py to reproduce. Results from fetching real pages:
Page | HTML tokens | MD tokens | Saved |
GitHub Blog | 90,829 | 50,733 | 44% |
Hacker News | 11,884 | 4,381 | 63% |
MDN — JavaScript | 51,862 | 23,326 | 55% |
BBC News | 123,997 | 28,918 | 77% |
Go pkg — net/http | 119,994 | 60,344 | 50% |
Python docs — asyncio | 6,686 | 2,405 | 64% |
Rust Lang | 5,107 | 1,515 | 70% |
Total | 410,359 | 171,622 | 58% |
At Sonnet pricing ($3/M input tokens), that's $0.72 saved per batch of 7 pages.
Tools
Tool | Description |
| Search the web via DuckDuckGo |
| Fetch a URL and return content as markdown |
| Search + fetch top results in one call |
websearch_search
Parameter | Type | Default | Description |
| str | required | Search query |
| int |
| Number of results (1–20) |
| str |
| Region code ( |
websearch_fetch_page
Parameter | Type | Default | Description |
| str | required | URL to fetch |
| int |
| Truncate output (1,000–100,000) |
| bool |
| Include YAML frontmatter (title, meta tags) |
| str |
|
|
websearch_search_and_fetch
Parameter | Type | Default | Description |
| str | required | Search query |
| int |
| Pages to fetch (1–5) |
| int |
| Max characters per page (1,000–50,000) |
Setup
Requires uv.
uv syncUsage
MCP Inspector (dev)
uv run mcp dev server.pyClaude Code
claude mcp add websearch -- uv run --directory /path/to/mcp-websearch-server python server.pyClaude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"websearch": {
"command": "uv",
"args": ["run", "--directory", "/path/to/mcp-websearch-server", "python", "server.py"]
}
}
}Benchmark
uv run python benchmark.pyFetches a set of real pages, counts tokens with tiktoken (cl100k_base), and reports HTML vs markdown savings with cost estimates for Sonnet and Opus pricing.
Dependencies
mcp — FastMCP framework
httpx — async HTTP client
html-to-markdown — Rust-based HTML-to-Markdown converter
ddgs — DuckDuckGo search (no API key)
truststore — system certificate store for SSL
tiktoken — token counting (dev dependency, for benchmark)
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/micaelmalta/websearch-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server