Skip to main content
Glama
rog0x
by rog0x

MCP Web Tools

A powerful MCP (Model Context Protocol) server that gives AI agents web superpowers. Extract content, search the web, monitor sites, and convert HTML to markdown — all through a clean tool interface.

Tools

Tool

Description

web_extract

Extract structured content from any URL (title, headings, paragraphs, links, images, metadata)

web_search

Search the web via DuckDuckGo — no API key needed

web_monitor

Check if a site is up, measure response time, get HTTP headers

html_to_markdown

Convert any URL or HTML to clean markdown

web_multi_extract

Extract content from multiple URLs in parallel

Related MCP server: markfetch-mcp

Installation

For Claude Code

Add to your Claude Code MCP settings (~/.claude/settings.json):

{
  "mcpServers": {
    "web-tools": {
      "command": "npx",
      "args": ["@rog0x/mcp-web-tools"]
    }
  }
}

For Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "web-tools": {
      "command": "npx",
      "args": ["@rog0x/mcp-web-tools"]
    }
  }
}

Manual Installation

npm install -g @rog0x/mcp-web-tools
mcp-web-tools

Usage Examples

Extract content from a webpage

Use web_extract to get the main content from https://example.com

Search the web

Use web_search to find "best TypeScript frameworks 2026"

Monitor a website

Use web_monitor to check if https://api.example.com is responding

Convert page to markdown

Use html_to_markdown to convert https://docs.example.com/guide to readable markdown

Batch extraction

Use web_multi_extract to get content from these URLs: [url1, url2, url3]

Features

  • No API keys required — uses DuckDuckGo for search, direct HTTP for everything else

  • Fast — parallel extraction, 15s timeout per request

  • Clean output — strips scripts, styles, ads; extracts meaningful content

  • Lightweight — minimal dependencies, no headless browser needed

  • Production-ready — proper error handling, timeouts, input validation

Requirements

  • Node.js 18+

License

MIT — rog0x

Available Tools

5 tools
html_to_markdownA

Convert HTML content or a URL to clean, readable markdown. Removes scripts, styles, and navigation.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoURL to fetch and convert
htmlNoRaw HTML to convert (use instead of url)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits itself. It does mention that it fetches URLs, removes scripts/styles/navigation, and produces clean markdown. However, it omits information about rate limits, error handling, whether dynamic content is supported, or the exact format of the returned markdown. It provides some useful context but is not comprehensive.

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?

The description is a single, tightly written sentence that front-loads the primary action and includes all essential information without any filler. Every word contributes to understanding the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with only two optional parameters and no output schema, the description covers the core functionality well. It explains the input types, the conversion process, and the cleaning behavior. The absence of a statement of return value is minor since 'convert to markdown' implies the output is markdown. However, given the sibling web tools, a brief note on when to use this specific tool would improve completeness, but it is largely adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with both parameters having clear descriptions ('URL to fetch and convert' and 'Raw HTML to convert (use instead of url)'). The description adds no new meaning beyond this—it merely restates that it accepts HTML or a URL. The mutual exclusivity is already conveyed in the schema via 'use instead of url', so no additional value is added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Convert') plus the resource ('HTML content or a URL') and the output ('clean, readable markdown'). It also specifies what is removed (scripts, styles, navigation), making it clearly distinct from sibling web extraction tools which would not produce markdown.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is used when you have HTML or a URL and want markdown, but it does not explicitly contrast with sibling tools like web_extract or web_multi_extract. No guidance on when not to use it or which alternative is better for other purposes is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

web_extractB

Extract structured content from a URL: title, headings, paragraphs, links, images, and metadata

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL to extract content from

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must carry the full burden of behavioral disclosure. It does not mention whether the tool handles JavaScript-rendered pages, follows redirects, requires authentication, or what the structured output format looks like. For an extraction tool, these are significant gaps that could affect invocation expectations.

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?

The description is a single, efficient sentence that lists the exact content types extracted. It is front-loaded with the action and resource, with zero filler words, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that there is no output schema and no annotations, the description should explain what the return value looks like or any limitations (e.g., dynamic content handling, robots.txt restrictions). It merely lists extracted elements without indicating the structure or format, leaving the agent underinformed about the tool's actual behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers the single parameter 'url' with a description ('URL to extract content from'), so schema coverage is 100%. The description adds no additional semantic detail beyond what the schema already gives, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'extract' with a clear resource 'URL' and enumerates the content types (title, headings, paragraphs, links, images, metadata). This makes the tool's purpose unambiguous and differentiates it from siblings like web_search (searching) and html_to_markdown (format conversion), even without naming them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus alternatives such as web_multi_extract or web_search. The description states what the tool does but not in which scenarios it should be chosen, nor does it mention any exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

web_monitorA

Check if a website is up, measure response time, and get HTTP details

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL to monitor

TDQS

A3.7/5.0
Behavior3/5

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 mentions checking up, measuring response time, and getting HTTP details, but does not specify what constitutes 'HTTP details' (e.g., status code, headers, response time units) or any side effects. It is clear but superficial, lacking depth.

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?

The description is a single, efficiently worded sentence that front-loads the primary purpose ('Check if a website is up') followed by secondary details. Every phrase earns its place with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter) and no output schema, the description is adequate but incomplete. It does not explain what the output looks like (e.g., response time in milliseconds, HTTP status code) or clarify the meaning of 'HTTP details', which are crucial for an agent to interpret the result correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes the 'url' parameter as 'URL to monitor' with 100% coverage. The description adds 'website' context but no additional semantic meaning about format or constraints. This meets the baseline for high schema coverage but does not exceed it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states specific verbs ('check', 'measure', 'get') and a clear resource ('website', 'HTTP details'), which unambiguously defines the tool's purpose. It is easily distinguishable from siblings like web_extract (content extraction) and web_search (searching).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool (for uptime monitoring, response time, HTTP details) but provides no explicit guidance on when not to use it or alternatives. It lacks statements like 'use web_extract for content' or 'use web_search for search queries', leaving the selection to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

web_multi_extractA

Extract content from multiple URLs in parallel. Returns results for each URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsYesArray of URLs to extract content from

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions parallel execution, which is a meaningful trait, but omits other important behaviors such as error handling per URL, rate limits, authentication requirements, and the exact format of the returned results. The description is skeletal for a tool that could fail partially.

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?

The description is two short sentences with no redundant words. The core action and differentiator are front-loaded, and every sentence adds value. It is highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite being a batch operation, the description lacks crucial details: how failures are represented, whether output is raw HTML or extracted text, and any limits on parallelism or URL count. With no output schema and no annotations, the agent has little guidance on expected behavior beyond 'returns results,' leaving significant ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully describes the only parameter ('Array of URLs to extract content from') with 100% coverage. The description adds no additional meaning beyond what the schema provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Extract'), a resource ('content from multiple URLs'), and a distinguishing trait ('in parallel'). This clearly differentiates it from the sibling web_extract, which likely handles a single URL. The purpose is unambiguous.

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?

The phrase 'from multiple URLs' establishes clear context for when to use this tool (i.e., when there is more than one URL). However, it does not explicitly name the alternative web_extract for single-URL cases, nor provide explicit 'when not to use' guidance. It implies the use case well but stops short of explicit 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. Dates show when Glama detected each change.

  1. 5 tool updatesv1.0.0
    • First observedhtml_to_markdown
    • First observedweb_extract
    • First observedweb_monitor
    • First observedweb_multi_extract
    • First observedweb_search

TDQS

A3.7/5.0
Disambiguation3/5

web_extract and web_multi_extract are clearly related, with the latter being just a parallel variant, and html_to_markdown overlaps with web_extract for URL-to-content conversion. Search and monitor are clearly distinct, but the extraction/convert boundary could cause misselection.

Naming Consistency3/5

Most tools follow web_<action>, but html_to_markdown breaks the prefix pattern and uses a different target_to_target style. The pair web_extract/web_multi_extract is consistent, but overall naming conventions are mixed.

Tool Count5/5

Five tools is a well-scoped size for a web utility server, covering search, monitoring, extraction, and conversion without unnecessary bloat. Each tool earns its place, though the single vs. multi extract duplication is minor.

Completeness4/5

The toolkit covers core web operations: search, availability/response checking, single-URL and multi-URL extraction, and HTML-to-markdown conversion. Minor gaps exist (e.g., no URL validation or site traversal), but agents can accomplish common web tasks without dead ends.

Maintenance

ActivityInactive
ResponsivenessNo issues

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

Related MCP Servers

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/rog0x/mcp-web-tools'

If you have feedback or need assistance with the MCP directory API, please join our Discord server