web-tool-mcp
Provides web search through Brave as one of the server's search backends, returning result titles, URLs, and snippets.
Provides web search through DuckDuckGo as one of the server's search backends, returning result titles, URLs, and snippets.
Click on "Deploy 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., "@web-tool-mcpSearch for the latest Node.js LTS release notes and extract the official page."
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.
# web-tool-mcp
A stdio MCP server derived from web-search-mcp that separates lightweight discovery from on-demand page reading.
Tools
web_search
Searches through the inherited Bing → Brave → DuckDuckGo backend and returns only titles, URLs, and search snippets (five results by default). It does not fetch result pages. Query syntax is passed to the backend; operators such as site:, filetype:, intitle:, exclusions, and exact phrases work when supported by the selected engine.
web_extract
Fetches one to five supplied HTTP(S) URLs and returns cleaned page text with headings and links. It uses an inline character budget of 15,000 per page by default. Longer pages return a head-and-tail window and save the complete extracted text under the OS temporary directory (WEB_EXTRACT_SAVE_DIR can override it), with a path and a read_file paging hint. Images appear as [IMAGE: alt] placeholders with image links where available. HTML extraction tries HTTP first and the inherited browser extractor as a fallback. PDF URLs are recognized but PDF text extraction is not implemented in this build. Pages requiring JavaScript, login, or interaction may still need a browser tool.
Related MCP server: Web Search MCP Server
Run
Requires Node.js 18+.
npm install
npx playwright install
npm run build
# Test
npx @modelcontextprotocol/inspector node dist/index.jsExample MCP configuration:
{
"mcpServers": {
"web-tool": {
"command": "node",
"args": ["/path/to/web-tool-mcp/dist/index.js"]
}
}
}Useful environment settings inherited from the base project include DEFAULT_TIMEOUT, BROWSER_HEADLESS, BROWSER_TYPES, BROWSER_FALLBACK_THRESHOLD, ENABLE_RELEVANCE_CHECKING, and FORCE_MULTI_ENGINE_SEARCH.
Available Tools
2 toolsweb_extractA
Extract readable page content from one or more web page URLs. Returns cleaned Markdown/text directly without LLM summarization. Pages within the character budget (15,000 by default) are returned whole; longer pages return a head-and-tail window and save the complete text to a local file, with a path and read_file instructions for paging through the omitted middle. PDF URLs are accepted as inputs, but PDF text extraction requires a PDF reader dependency not included in this build. Inline images are represented as [IMAGE: alt] and linked image URLs are preserved. If a page fails, times out, or requires JavaScript, login, or clicks, use a browser tool instead.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | One to five page URLs to extract. | |
| head_chars | No | Head window size for oversized pages (defaults to half the character budget). | |
| char_budget | No | Maximum inline characters per page (default 15000). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full load and does so well: it discloses the 15,000 char default budget, head-and-tail windowing for long pages, the side effect of writing full text to a local file plus read_file paging instructions, the missing PDF dependency, and inline image representation. An agent knows the return shape, truncation behavior, and failure modes before calling.
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?
Four sentences, front-loaded with the core action and output format, then budget behavior, then edge cases (PDFs, images, failures). Every sentence contributes distinct, actionable information with no filler.
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?
No output schema and no annotations, yet the description covers return format, truncation and file-save behavior, image representation, and failure fallback. For a 3-param read tool, nothing an agent needs to invoke it correctly is missing.
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 coverage is 100%, so the schema already documents all three parameters, setting a baseline of 3. The description adds real meaning the schema lacks: the char_budget default of 15,000 and, crucially, the behavioral consequence of exceeding it (head-and-tail window, saved file, paging path).
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 states a specific verb and resource ('Extract readable page content from URLs') and clarifies the output form (cleaned Markdown/text, no LLM summarization). It does not explicitly name the sibling web_search as the contrast, so the search-vs-extract distinction is left implicit rather than spelled out.
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?
It gives clear when-not guidance: 'If a page fails, times out, or requires JavaScript, login, or clicks, use a browser tool instead.' It also notes PDFs are accepted but fail without a dependency. It never mentions the web_search sibling or when to prefer it, so this is strong context without full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web_searchA
Search the web and return concise results with titles, URLs, and search snippets (5 by default). Use web_extract to read a result in detail. The query is passed through to the configured search backend, so operators such as site:domain, filetype:pdf, intitle:word, -term, and quoted phrases may work when supported by the backend.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of search results (1–10, default 5). | |
| query | Yes | Search query, including optional backend-supported operators. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the load and does disclose real behavioral facts: results are concise, contain titles/URLs/snippets, default to 5, and the query is passed through to a configurable backend so operator support is backend-dependent rather than guaranteed. It does not mention rate limits, auth, caching, or result ordering, which keeps it from a 5.
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?
Three sentences, front-loaded with the action and return shape, then the sibling routing, then the query caveat. Every sentence carries distinct information with no restatement of the schema's min/max bounds.
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?
There is no output schema, and the description compensates by describing exactly what comes back (titles, URLs, snippets). With only two parameters, full schema coverage, and a stated default count, an agent has everything needed to invoke this 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 coverage is 100%, so the baseline is 3, but the description adds genuine meaning beyond the schema by naming concrete operators (site:, filetype:, intitle:, -term, quotes) and flagging that support depends on the backend. That operator vocabulary is not present in the schema and directly affects how an agent should phrase a query.
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?
States a specific verb and resource ("Search the web") plus the return shape (titles, URLs, snippets) and default result count. It also names the sibling it is not ("Use web_extract to read a result in detail"), so an agent can route between the two without opening either schema.
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 explicitly routes detail-reading to web_extract, which gives clear conditional guidance for the one sibling that exists. It stops short of stating exclusions such as when searching is inappropriate or how to handle zero-result or rate-limited situations, so it falls short of a full 5.
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.
2 tool updates
v1.0.0- First observed
web_extract - First observed
web_search
TDQS
Scored across 2 tools
web_search and web_extract have clearly distinct roles: discovery vs. full-page reading. The descriptions explicitly cross-reference each other, telling the agent to use web_search first and web_extract for detail.
Both tools follow a strict web_verb pattern (web_search, web_extract) with snake_case throughout. The convention is predictable and easy to extend.
Two tools form a coherent minimal pair but feel thin for a web utility server, lacking follow-up operations like opening/crawling many links or handling JS-heavy pages. It is borderline under-scoped rather than inappropriate.
The core search-then-extract workflow is complete, including pagination guidance for long pages. Minor gaps exist around JavaScript/login-protected pages and PDF extraction, though the descriptions explicitly point to external browser tools for those cases.
Maintenance
Related MCP Connectors
Search the web and extract clean, readable text from webpages. Process multiple URLs at once to sp…
Clean web data for agents: any URL to Markdown or JSON, plus search, crawls and company brand data.
LLM-ready web search + instant answers + URL-to-clean-text fetch for agents and RAG.
Search + read the web for $0.002/page; failed URLs free; per-URL errors never fail the call.
Related MCP Servers
- FlicenseBqualityCmaintenanceProvides web search and page fetch tools for LLM assistants, extracting content and enabling text search within fetched pages.3-
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to perform web searches, extract webpage content, and conduct end-to-end search-and-extract operations using multiple search providers and content extraction methods.-
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to perform live web searches with ranked results and extracted page passages, plus clean markdown extraction of any URL.MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to perform LLM-optimized web searches, retrieve recent news articles with full text, and extract clean readable content from URLs. It returns synthesized answers, ranked cited sources, and page text suitable for grounding RAG workflows.28 npmMIT