fast-web-search-mcp
Provides web and news search capabilities using DuckDuckGo as the primary search engine, with Bing fallback for resilience.
Supports reference lookup via Wikipedia, integrated into web search results for enhanced context.
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., "@fast-web-search-mcpsearch for the latest developments in AI"
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.
Why fast-web-search-mcp?
Most MCP search servers require paid API keys, Docker containers, or headless browsers. fast-web-search-mcp provides free, fast, local web search with zero external dependencies beyond Node.js.
Capability | fast-web-search-mcp | Paid APIs | Headless Browser |
Free to use | ✅ | ❌ | ✅ |
No API key | ✅ | ❌ | ✅ |
No Docker | ✅ | ✅ | ❌ |
Sub-second response | ✅ | ✅ | ❌ |
SSRF protection | ✅ | N/A | ❌ |
Result caching | ✅ | ❌ | ❌ |
Multiple providers | ✅ | ❌ | ❌ |
Works on Windows | ✅ | ✅ | ⚠️ |
Related MCP server: evo-scry
Features
Web Search — DuckDuckGo primary with Bing fallback and Wikipedia reference lookup
News Search — Date-sensitive news results with publication metadata
Page Fetching — Readability extraction with Markdown or plain text output
Combined Research — Search, rank, and fetch top results in one call
Intelligent Caching — In-memory LRU cache with configurable TTL
Request Coalescing — Deduplicates concurrent identical searches
Rate Limiting — Per-provider throttling with exponential backoff
Result Deduplication — URL canonicalization and title similarity matching
SSRF Protection — Blocks private IPs, localhost, cloud metadata endpoints
Provider Fallback — Automatic failover when a provider is unavailable
Zero Runtime Dependencies — No Python, no Docker, no browser engine
Quick Start
Install
# Global install (recommended)
npm install -g fast-web-search-mcp
# Or run directly without installing
npx -y fast-web-search-mcpRequirements
Dependency | Version |
Node.js | ≥ 22.0 |
npm | ≥ 10.0 |
Verify Installation
# Confirm the binary is available
fast-web-search-mcp --version
# Or run directly
npx fast-web-search-mcp --versionIntegration
Add fast-web-search-mcp to your AI coding assistant. Select your platform below:
Project scope — add to .claude/settings.json in your project root:
{
"mcpServers": {
"fast-web-search": {
"command": "fast-web-search-mcp",
"env": {
"FWSMCP_LOG_LEVEL": "warn",
"FWSMCP_REDACT_QUERIES": "true"
}
}
}
}User scope — add to ~/.claude/settings.json for global availability:
{
"mcpServers": {
"fast-web-search": {
"command": "fast-web-search-mcp",
"env": {
"FWSMCP_DEFAULT_REGION": "us-en",
"FWSMCP_DEFAULT_LANGUAGE": "en",
"FWSMCP_REDACT_QUERIES": "true"
}
}
}
}Or use the CLI:
claude mcp add fast-web-search -- fast-web-search-mcpWindows users: Wrap the command with
cmd /c:claude mcp add fast-web-search -- cmd /c fast-web-search-mcp
Add to your configuration file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"fast-web-search": {
"command": "fast-web-search-mcp",
"env": {
"FWSMCP_LOG_LEVEL": "warn",
"FWSMCP_DEFAULT_REGION": "us-en",
"FWSMCP_DEFAULT_LANGUAGE": "en"
}
}
}
}Restart Claude Desktop after saving.
Add to ~/.codex/config.toml (global) or .codex/config.toml (project):
[mcp_servers.fast-web-search]
command = "fast-web-search-mcp"
env = { FWSMCP_LOG_LEVEL = "warn", FWSMCP_REDACT_QUERIES = "true" }Or use the CLI:
codex mcp add fast-web-search -- fast-web-search-mcpAdd to ~/.config/opencode/opencode.json:
{
"mcp": {
"fast-web-search": {
"type": "local",
"command": ["fast-web-search-mcp"],
"enabled": true,
"environment": {
"FWSMCP_DEFAULT_REGION": "us-en",
"FWSMCP_DEFAULT_LANGUAGE": "en",
"FWSMCP_REDACT_QUERIES": "true",
"FWSMCP_SAFE_SEARCH": "moderate"
}
}
}
}Antigravity IDE:
Click ... in the agent side panel → MCP Servers → Manage MCP Servers → View raw config
Add the server to the opened
mcp_config.jsonfile
Antigravity CLI:
Type /mcp in the prompt panel to open the interactive MCP Manager.
Configuration file:
Global:
~/.gemini/config/mcp_config.jsonProject:
.agents/mcp_config.json
{
"mcpServers": {
"fast-web-search": {
"command": "fast-web-search-mcp",
"args": [],
"env": {
"FWSMCP_LOG_LEVEL": "warn",
"FWSMCP_REDACT_QUERIES": "true"
}
}
}
}Add to ~/.cursor/mcp.json:
{
"mcpServers": {
"fast-web-search": {
"command": "fast-web-search-mcp",
"env": {
"FWSMCP_LOG_LEVEL": "warn"
}
}
}
}Add to .vscode/mcp.json in your workspace:
{
"servers": {
"fast-web-search": {
"command": "fast-web-search-mcp",
"env": {
"FWSMCP_LOG_LEVEL": "warn"
}
}
}
}MCP Tools
Tool | Description | Use Case |
| Search the general web via DuckDuckGo + Bing fallback | General research, fact-finding |
| Search for recent news articles with publication dates | Current events, monitoring |
| Fetch a URL and extract clean Markdown or plain text | Article reading, documentation |
| Combined search + fetch workflow with character budget | Deep research, analysis |
| Return non-sensitive server diagnostics | Troubleshooting (disabled by default) |
Tool Parameters
Parameter | Type | Default | Description |
| string | required | Search query (1-500 characters) |
| integer | 10 | Maximum results to return (1-25) |
| string |
| Provider strategy: |
| string |
| Region code for localized results |
| string |
| Language code |
| string |
| Time filter: |
| string |
| Content filter: |
| array | — | Restrict results to these domains |
| array | — | Exclude results from these domains |
| boolean |
| Remove duplicate results by URL |
| integer | — | Operation timeout (1000-60000 ms) |
Parameter | Type | Default | Description |
| string | required | News search query (1-500 characters) |
| integer | 10 | Maximum results (1-25) |
| string |
| Time filter: |
| string |
| Region code |
| string |
| Language code |
| array | — | Restrict to these domains |
| array | — | Exclude these domains |
Parameter | Type | Default | Description |
| string | required | HTTP/HTTPS URL to fetch |
| string |
| Output format: |
| integer | 20000 | Maximum characters (100-100000) |
| boolean |
| Include page metadata |
| boolean |
| Include extracted links |
| integer | — | Fetch timeout (1000-60000 ms) |
Parameter | Type | Default | Description |
| string | required | Search query (1-500 characters) |
| integer | 8 | Number of results to consider (1-20) |
| integer | 3 | Number of pages to fetch (1-5) |
| integer | 20000 | Character limit per page |
| integer | 100000 | Total character budget |
| integer | — | Total timeout (5000-120000 ms) |
Configuration
All configuration is environment-based. No config files required.
Variable | Default | Description |
|
| Log verbosity: |
|
| Log format: |
|
| Redact search queries in logs |
|
| Default region for searches |
|
| Default language for searches |
|
| Safe search level: |
|
| Comma-separated provider list |
|
| Strategy: |
|
| Search operation timeout (ms) |
|
| Per-provider timeout (ms) |
|
| Page fetch timeout (ms) |
|
| search_and_fetch total timeout (ms) |
|
| Maximum results per search |
|
| Maximum characters per fetch |
|
| Enable in-memory result cache |
|
| Maximum cache entries |
|
| Search cache TTL (15 min) |
|
| News cache TTL (5 min) |
|
| Page cache TTL (30 min) |
| — | Optional SearXNG instance URL |
|
| Enable diagnostics tool |
| — | Comma-separated domains to always exclude |
| — | Path to optional JSON config file |
Optional JSON Configuration
For complex setups, point FWSMCP_CONFIG_FILE to a JSON file:
{
"defaults": {
"region": "us-en",
"language": "en",
"safeSearch": "moderate"
},
"providers": {
"order": ["duckduckgo", "bing", "wikipedia"],
"strategy": "fallback"
},
"cache": {
"enabled": true,
"maxEntries": 250,
"searchTtlMs": 900000
},
"limits": {
"maxSearchResults": 25,
"maxFetchCharacters": 100000
},
"privacy": {
"redactQueriesInLogs": true
}
}Priority: Environment variables > JSON config file > defaults.
Architecture
┌─────────────────────────────────────────────────────────┐
│ MCP Client │
│ (Claude Code / Codex / OpenCode) │
└─────────────────────┬───────────────────────────────────┘
│ stdio (JSON-RPC)
▼
┌─────────────────────────────────────────────────────────┐
│ fast-web-search-mcp │
│ │
│ ┌─────────┐ ┌──────────┐ ┌───────────┐ ┌────────┐ │
│ │ Tools │ │ Cache │ │ Coalescer │ │ Limiter│ │
│ │ 5 tools │ │ LRU+TTL │ │ Dedup │ │ Per- │ │
│ │ │ │ │ │ inflight │ │ provider│ │
│ └────┬─────┘ └──────────┘ └───────────┘ └────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ Orchestrator Pipeline │ │
│ │ Validate → Cache → Coalesce → Select → Execute │ │
│ │ → Normalize → Filter → Dedup → Rank → Return │ │
│ └─────────────────────┬───────────────────────────┘ │
│ │ │
│ ┌────────────────┼────────────────┐ │
│ ▼ ▼ ▼ │
│ ┌─────────┐ ┌──────────┐ ┌────────────┐ │
│ │ DuckDuck │ │ Bing │ │ Wikipedia │ │
│ │ Go │ │ │ │ REST API │ │
│ │ (HTML) │ │ (HTML) │ │ │ │
│ └─────────┘ └──────────┘ └────────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ HTTP Client (Node fetch) │ │
│ │ Timeout · Body Limit · Redirect · SSRF Block │ │
│ └─────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘Security
Protections
Threat | Mitigation |
SSRF / private network access | Blocks localhost, RFC1918, link-local, cloud metadata IPs |
Credential leakage | Rejects URLs with embedded username/password |
Query exposure | Logs redact queries by default ( |
Prompt injection via fetched content | Includes untrusted content warning in all fetch results |
Uncontrolled resource consumption | Body size limits, timeout enforcement, character budgets |
Process isolation | stdio transport only — no network listener, no HTTP endpoint |
Disabled by Default
Diagnostics tool — must be explicitly enabled via
FWSMCP_DIAGNOSTICS_ENABLED=trueSearXNG integration — requires explicit
FWSMCP_SEARXNG_URLconfiguration
See docs/SECURITY.md for the full threat model.
Development
git clone https://github.com/your-org/fast-web-search-mcp.git
cd fast-web-search-mcp
npm ci
npm run build
npm testAvailable Scripts
Script | Description |
| Production build with tsup |
| Development mode with tsx |
| Run full test suite (183 tests) |
| Unit tests only |
| Security tests only |
| TypeScript type checking |
| ESLint |
| Prettier formatting |
Project Structure
fast-web-search-mcp/
├── src/
│ ├── cache/ # LRU cache, cache key generation
│ ├── config/ # Defaults, env parsing, config loader
│ ├── fetch/ # URL validation, content extraction, Markdown
│ ├── http/ # HTTP client, errors, headers
│ ├── observability/ # Structured stderr logger
│ ├── providers/ # DuckDuckGo, Bing, Wikipedia, SearXNG
│ ├── schemas/ # Zod validation schemas
│ ├── search/ # Orchestrator, coalescer, rate limiter, dedup
│ ├── server/ # MCP server factory, tool registration
│ ├── tools/ # 5 MCP tool implementations
│ ├── utils/ # Domain, text, date, async utilities
│ └── index.ts # Entry point
├── test/
│ ├── fixtures/ # HTML fixtures for parser tests
│ └── unit/ # Unit tests (183 tests)
├── docs/ # Documentation and ADRs
└── examples/ # Config examplesDocumentation
Document | Description |
All environment variables and options | |
Provider details, strategy, and SearXNG setup | |
Threat model and protections | |
Common issues and debugging | |
OpenCode-specific setup guide | |
Version history |
Roadmap
SQLite persistent cache
Brave Search provider
Image search support
Streamable HTTP transport
Result scoring customization
Contributing
Fork the repository
Create a feature branch (
git checkout -b feature/amazing)Commit changes (
git commit -m 'feat: add amazing feature')Push to branch (
git push origin feature/amazing)Open a Pull Request
License
MIT License. See LICENSE for details.
Available Tools
4 toolsfetch_urlA
Fetch a public HTTP(S) URL and return extracted content as clean Markdown or plain text.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | HTTP or HTTPS URL to fetch | |
| output | No | Output format | markdown |
| timeout_ms | No | Fetch timeout in milliseconds | |
| include_links | No | Include extracted links | |
| max_characters | No | Maximum characters to return | |
| include_metadata | No | Include page metadata |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that only public URLs are supported and that output can be Markdown or text, but it doesn't cover redirects, error handling, content extraction specifics, or rate limits. It provides basic context but lacks richer behavioral detail.
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 a single, front-loaded sentence that captures the core functionality and output options without redundancy or irrelevant details.
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 the tool's simplicity and comprehensive schema descriptions, the description is complete enough. It adds the key distinction of 'public' URLs and the output format, which is sufficient for an agent to invoke it correctly.
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?
Schema description coverage is 100%, so the description doesn't need to elaborate on parameters. It adds some semantic meaning by noting 'clean Markdown' which aligns with the output parameter, but the schema already describes all parameters sufficiently.
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 fetches a URL and returns extracted content as Markdown or plain text, using a specific verb and resource. It distinguishes itself from sibling search tools by focusing on direct URL retrieval.
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 use for directly retrieving a known public URL rather than searching, but it doesn't explicitly mention when not to use it or point to alternatives like web_search. This is implied by the sibling tool names and the word 'public'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
news_searchA
Search for recent news articles. Returns date-sensitive results with publisher and publication time.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | News search query | |
| region | No | Region code | us-en |
| language | No | Language code | en |
| providers | No | Preferred providers | |
| time_range | No | Time range filter | week |
| timeout_ms | No | Timeout in ms | |
| max_results | No | Maximum number of results | |
| exclude_domains | No | Exclude these domains | |
| include_domains | No | Only include these domains |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses that results are date-sensitive and include publisher/publication time, which adds value beyond the schema. However, it does not mention other behaviors such as sorting, pagination, or rate limits, leaving gaps in transparency.
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 two concise sentences, front-loaded with a clear action verb ('Search') and no redundant information. Every word contributes to understanding the tool's purpose and output, achieving excellent conciseness.
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?
Despite having 9 parameters and no output schema, the description only provides minimal output detail (publisher, publication time). It lacks context on result structure, pagination, or how parameters interact, leaving significant ambiguity for a tool of this complexity.
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?
Schema description coverage is 100%, so the baseline is 3. The description's mention of 'recent' loosely aligns with the time_range parameter but does not add substantive meaning beyond what the schema already provides for each parameter.
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's function with a specific verb ('Search') and resource ('recent news articles'), effectively distinguishing it from siblings like web_search and fetch_url. The second sentence adds output details (publisher, publication time), reinforcing its niche as a news-specific search tool.
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 for finding recent news articles but does not explicitly state when to use it instead of alternatives like web_search or fetch_url. There are no exclusions or preference cues beyond the 'news' focus, leaving the decision to the agent's interpretation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_and_fetchB
Search the web and fetch the best results. One call for research: search, rank, and fetch the best few pages.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query | |
| region | No | us-en | |
| language | No | en | |
| strategy | No | fallback | |
| providers | No | Preferred providers | |
| time_range | No | any | |
| timeout_ms | No | ||
| fetch_results | No | Number of pages to fetch | |
| search_results | No | Number of search results to consider | |
| exclude_domains | No | ||
| include_domains | No | ||
| total_character_budget | No | ||
| max_characters_per_page | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose that the tool searches, ranks, and fetches pages, adding some context over the bare name. However, it omits ranking logic, output format, error behavior, rate limits, or authentication needs, leaving significant transparency gaps for a non-trivial tool.
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 extremely concise and front-loaded: two short clauses deliver the core purpose without filler or repetition. Every phrase adds value, and the structure makes the combined search-and-fetch intent immediately clear.
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 tool with 13 parameters, no output schema, and no annotations, this description is incomplete. It gives no indication of expected return values, how strategy affects behavior, how the tool interacts with sibling tools, or what 'best' means in ranking. It leaves an agent with insufficient context to use the tool effectively beyond the most basic query.
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?
Schema description coverage is low (~31%, only 4 of 13 parameters have descriptions). The description does not elaborate on any parameters; the high-level phrasing ('search, rank, and fetch') only loosely maps to search_results and fetch_results but offers no semantic detail for region, language, strategy, providers, time_range, or domain filters. With low schema coverage, the description must compensate, and it does not.
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's combined action ('Search the web and fetch the best results') and introduces a distinct research-oriented workflow ('One call for research: search, rank, and fetch the best few pages'). It distinguishes from siblings only through the combined nature, without explicitly naming them or contrasting with web_search/fetch_url.
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 phrase 'One call for research' implies a use case where both search and fetch are needed, but there is no explicit when-not guidance or alternative tool references. Sibling tools like web_search and fetch_url are not mentioned, leaving the agent to infer when to use this composite tool versus separate calls.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web_searchC
Search the general web and return normalized results.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query, 1-500 characters | |
| region | No | Region code | us-en |
| language | No | Language code | en |
| strategy | No | Provider strategy: fallback tries providers in order, merge combines top 2 | fallback |
| providers | No | Preferred providers in priority order | |
| time_range | No | Time range filter | any |
| timeout_ms | No | Operation timeout in milliseconds | |
| deduplicate | No | Deduplicate results by URL | |
| max_results | No | Maximum number of results (1-25) | |
| safe_search | No | Safe search level | moderate |
| exclude_domains | No | Exclude results from these domains | |
| include_domains | No | Only include results from these domains |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only mentions 'search' and 'normalized results'. It does not disclose provider strategy, fallback/merge behavior, result limits, or any side effects, leaving the agent without critical 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 a single, direct sentence that communicates the core action and result format. There is no wasted text or redundancy, making it highly concise and well-structured.
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?
Despite a detailed input schema, the tool has no output schema and no annotations, and the description does not explain result semantics, provider behavior, or usage constraints. For a 12-parameter search tool with several configurable options, this is too sparse to be fully actionable.
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 input schema provides descriptions for all 12 parameters (100% coverage), so the description does not need to explain them. It adds no extra meaning beyond the schema, but the baseline of 3 is appropriate given the schema's thoroughness.
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 identifies the action (search) and resource (general web), and notes that results are normalized. It does not explicitly distinguish from sibling tools, but 'general web' provides a useful scope hint compared to news_search or search_and_fetch.
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 is provided on when to use this tool versus alternatives like news_search or fetch_url. The phrase 'general web' weakly implies broad search, but there are no explicit use cases, exclusions, or alternative recommendations.
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.
4 tool updates
v0.1.1- First observed
fetch_url - First observed
news_search - First observed
search_and_fetch - First observed
web_search
TDQS
Each tool has a clear primary purpose: fetch a specific URL, general search, combined search-and-fetch, and news-specific search. There is minor overlap between web_search and search_and_fetch, but the descriptions clarify that one returns results and the other also fetches the top pages.
The names mix verb-first (fetch_url), noun-first (web_search, news_search), and a combined form (search_and_fetch). The use of 'and' in search_and_fetch breaks the otherwise consistent underscore-separated pattern, making the naming slightly unpredictable.
Four tools is an appropriate scope for a search-and-fetch server. Each tool serves a distinct workflow step, and the count is neither too thin nor overburdened.
The tool set covers the full search-and-fetch lifecycle: searching, fetching a specific URL, combining both for efficiency, and filtering to news. No obvious missing operations for the stated domain.
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
MCP server for Google search results via SERP API
Docs: https://docs.keenable.ai/mcp-server Keenable is a free, remote MCP server that gives agents access to the web index. Search the web with ranked results and date/site filters, then fetch any indexed page as clean markdown. Works out of the box with no account or API key.
SERP + haber + içerik çıkarımı MCP sunucusu — web araması (Brave/SerpApi BYOK), anahtarsız haber…
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceMCP server for web search and content extraction using DuckDuckGo or SearXNG, with Playwright-based fetching and LLM-powered data extraction.139MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for internet search via direct Google and DuckDuckGo HTML scraping with AI-powered result normalization and optional summarization, requiring no API keys for search.MIT
- AlicenseNot gradedqualityDmaintenanceFree web search MCP server using SearXNG, supporting web search, news search, and search summaries.MIT
- AlicenseNot gradedqualityBmaintenanceA lightweight MCP server providing web search via DuckDuckGo and page content extraction in multiple formats.2MIT
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/iPraBhu/fast-web-search-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server