mcp-web-search
Provides web search and site content access via DuckDuckGo, allowing AI agents to search the web and retrieve page content.
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., "@mcp-web-searchsearch for latest AI news"
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.
mcp-web-search
A local MCP server that gives Claude or IBM Bob or other Agents web search and page-fetching capabilities. Built to work around:
the network restrictions that Claude organisation accounts operate under.
no built-in "web search" capabilities.
Why this exists
Claude.ai organisation accounts restrict outbound network access to a fixed domain allowlist. General web search and browsing are blocked and regular members cannot change that. Personal accounts have built-in web search and don't have this problem.
This server runs locally on your machine — where the internet is unrestricted — and proxies web requests back to Claude via the MCP protocol. If you've ever hit host_not_allowed with no way to fix it, this is for you.
IBM Bob does not have built-in web-browsing or internet capability due.
Related MCP server: DuckDuckGo MCP Server
What it does
Two tools, nothing more:
Tool | Description |
| Search the web via DuckDuckGo and return up to 10 ranked results |
| Fetch any URL, follow redirects, and return its content as plain text |
Tech stack
Component | Technology | Version |
Language | Python | ≥ 3.12 |
MCP framework | FastMCP ( | ≥ 1.28.1 |
Search backend | DuckDuckGo ( | ≥ 9.14.4 |
Package manager | uv | any recent |
Architecture
graph TD
AIAgent[AI Agent] -->|MCP stdio / HTTP| Server[mcp-web-search<br/>FastMCP server]
Server -->|HTTPS| DDG[DuckDuckGo API]
Server -->|HTTPS| Web[Any public URL]AI agent calls one of the two tools over MCP. The server makes the outbound request from the local machine (bypassing Claude and/or IBM Bob's network restrictions) and returns structured JSON.
Key design decisions
No authentication on the server
Decision: The server accepts all requests without any auth token or API key.
Why: It only binds to 127.0.0.1 by default and is intended as a personal local tool — adding auth would be friction with no real security benefit in that context.
Do not change because: adding auth here would also require changes to every Claude Desktop config that uses this server.
Raw urllib instead of httpx / requests
Decision: access_site uses the stdlib urllib.request only.
Why: Avoids an extra dependency for a single HTTP call. ddgs already handles the search transport.
Do not change because: it keeps the dependency surface minimal; only revisit if redirect handling or TLS behaviour becomes a problem.
Setup & contributing
See CONTRIBUTING.md.
Available Tools
2 toolsaccess_siteA
Fetch the contents of a URL, following redirects, and return as plain text.
Args: url: The URL to fetch
Returns: JSON with the page content and metadata
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose all behavioral traits. It mentions redirect-following and return format (plain text, JSON with metadata) but omits error handling, size limits, authentication needs, or whether it modifies anything. The description is adequate but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: one sentence for the main action, followed by structured Args and Returns sections. No extraneous information, and the core action is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low complexity (one parameter) and the presence of an output schema (which likely details the return format), the description covers the essential: tool purpose, parameter, and high-level return. Minor omissions (error handling, restrictions) are acceptable for this simple fetch tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. It restates 'url: The URL to fetch' which adds minimal meaning beyond the schema's property name. No format constraints, examples, or further clarification are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Fetch the contents of a URL'), the resource ('URL'), and details like following redirects and returning plain text. This distinctly differentiates from the sibling tool 'search_list', which likely searches rather than fetches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (fetch a URL) but provides no explicit guidance on when to use versus alternatives like 'search_list' or when not to use. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_listB
Search the web using DuckDuckGo and return ranked results.
Args: query: The search query string
Returns: JSON with results including rank, title, url, and snippet
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It mentions using DuckDuckGo and returning ranked results, but lacks details on rate limits, query limitations, result count, or error handling. Minimal behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the main action. It uses a structured Args/Returns format, but the Args section is redundant with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with one parameter and an output schema, the description provides the search engine and return fields. However, it omits potential issues like pagination, result limits, or authentication, which are relevant for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description only repeats the schema's parameter name and type ('query' as a string). With 0% schema description coverage, it does not compensate by adding syntax, examples, or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches the web using DuckDuckGo and returns ranked results. It distinguishes itself from the sibling tool 'access_site' which likely accesses a site, not search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus the sibling 'access_site'. No exclusions or context provided, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
2 tool updates
v0.1.0- First observed
access_site - First observed
search_list
TDQS
The two tools have clearly distinct purposes: search_list handles web searches returning ranked results, while access_site fetches the content of a specific URL. There is no overlap or ambiguity.
Both tools follow a consistent verb_noun pattern (access_site, search_list), using clear verbs and nouns. Strong naming convention.
With 2 tools, the set is minimal but appropriately scoped for a web search server. It covers the core actions (searching and fetching) without unnecessary redundancy, though slightly thin.
The tool surface covers the essential web search workflow: searching and retrieving page content. Missing advanced features like cached results or filtering, but no critical gaps for basic use.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
LLM-ready web search + instant answers + URL-to-clean-text fetch for agents and RAG.
Web search, URL content extraction to Markdown, site mapping, and recursive web crawler.
Provides AI assistants with access to Seltz's powerful Web Search capabilities.
Web search, fetch, extract, and research for AI agents. Markdown output + AI-synthesized answers.
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides web search functionality via DuckDuckGo for Claude Code and MCP-compatible clients, featuring advanced content exploration, navigation across search results, and detailed webpage analysis.316MIT
- FlicenseNot gradedqualityCmaintenanceEnables web searching through DuckDuckGo and fetching content from webpages. Provides search capabilities with configurable result limits and webpage content extraction for AI assistants.-
- FlicenseDqualityDmaintenanceProvides web connectivity tools for searching the web via DuckDuckGo or SerpAPI, fetching URL content, and extracting readable text from web pages.32-
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to perform real-time web searches, fetch webpage content, and get search suggestions using DuckDuckGo's privacy-focused search engine.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/nacho4d/mcp-web-search'
If you have feedback or need assistance with the MCP directory API, please join our Discord server