Skip to main content
Glama

# web-tool-mcp

A stdio MCP server derived from web-search-mcp that separates lightweight discovery from on-demand page reading.

Tools

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.js

Example 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 tools
web_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.

NameRequiredDescriptionDefault
urlsYesOne to five page URLs to extract.
head_charsNoHead window size for oversized pages (defaults to half the character budget).
char_budgetNoMaximum inline characters per page (default 15000).

TDQS

A4.4/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updatesv1.0.0
    • First observedweb_extract
    • First observedweb_search

TDQS

A4.4/5.0

Scored across 2 tools

Disambiguation5/5

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.

Naming Consistency5/5

Both tools follow a strict web_verb pattern (web_search, web_extract) with snake_case throughout. The convention is predictable and easy to extend.

Tool Count3/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    C
    maintenance
    Provides web search and page fetch tools for LLM assistants, extracting content and enabling text search within fetched pages.
    3
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables 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 npm
    MIT