MCP.Market

Web2md MCP server

online · 100% uptime
by web2md.org·org.web2md/web2md·v0.14.1

MCP Server for Web2MD — convert URLs to Markdown from Claude Desktop, Cursor, etc.

B77/100grade B
What users say
No reviews yet
Be the first
Safety scan
B77/100

not scanned yet

Adoption
New

0 stars38 downloads/wk

Reviews

Write one

Nobody has reviewed Web2md yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

Web2md tools

Tool list not cached yet. `describe` through the gateway fetches it live.

Not scanned yet. New listings are scanned within a day or two of arriving.

How Web2md compares

Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.

Safety score
77/100
higher than 50% of 48,255 servers
Response time
123 ms
faster than 79% of 30,031 servers
Downloads a week
38
more than 29% of 12,191 servers with a package

Release history: 2 versions in the registry since 2026-09-03, latest 2026-11-03, typically one every 61 days.

Install Web2md in Claude Code, Cursor or VS Code

claude mcp add --transport http web2md https://web2md.org/api/mcp
Add to Cursor

What the publisher says

From the Web2md repository's README, as published. We do not edit it. Read it on GitHub

web2md-core

Turn messy HTML into clean, LLM-ready Markdown.

This is the extraction and conversion engine behind Web2MD. It is a pure library — give it an HTML string, get Markdown back. No network calls, no API key, no account. Nothing in this package talks to a server.

npm install web2md-core

Why convert at all

Feeding raw HTML to a language model wastes most of your context window on markup, navigation, and ads. Converting first cuts that down and gives the model a document it can actually follow.

The library reports both numbers so you can see the difference:

import { convertToMarkdown } from 'web2md-core'

const result = convertToMarkdown(html, { url: 'https://example.com/post' })

console.log(result.markdown)
console.log(result.metadata.originalTokenCount, '→', result.metadata.tokenCount)
// e.g. 417 → 281

convertToMarkdown returns null when it cannot find a main content block — check for that rather than assuming a result.

What it does

and footers, keeping the content a reader came for.

  • Finds the actual article. Strips navigation, sidebars, ads, cookie banners,

the round trip — that structure is what lets a model answer questions about one specific section.

  • Preserves structure. Headings, lists, tables, and fenced code blocks survive

Markdown, plus helpers to split or trim for a target context window.

  • Reports tokens. Estimated counts for both the original HTML and the cleaned

for parsing, so it works in Node without a browser.

  • Runs anywhere. Uses linkedom

API

convertToMarkdown(html, options?)

The main entry point. Note the signature takes two arguments — the URL goes inside options, not as a positional parameter:

convertToMarkdown(html, { url: 'https://example.com/post' })

includeLinks and includeImages default to off. That is deliberate — the primary use case is feeding an LLM, where both are usually noise. Turn them on when you are archiving rather than summarising.

Other exports

quickConvert(html, url?)        // same result, but with links, images and
                                // metadata turned ON — the "archive it" preset
extractContent(html, url?)      // main content element, before conversion
htmlToMarkdown(html, options?)  // low-level conversion, no extraction
countTokens(text)               // token estimate
splitByTokens(md, limit)        // chunk for RAG ingestion
optimizeForContextWindow(md, model)
htmlLooksLikeLoginWall(html)    // detect login walls so you can fail loudly
MODEL_CONTEXT_LIMITS            // context sizes for common models

Markdown → sanitized HTML (via DOMPurify), for previewing output:

renderMarkdownSync(md)
renderMarkdownFull(md)          // async; includes syntax highlighting
renderMarkdownWithFormulas(md)  // KaTeX math

getPageHTML() and getSelectionHTML() read document directly and therefore only work in a browser. They throw in Node — that boundary is intentional.

Site-specific extraction

Generic extraction handles most pages. When a site needs special treatment, pass a rule:

Shortened. The full README is on GitHub.

Nothing above is checked by us. What we check is on the safety report.

Web2md: common questions

Is Web2md MCP server safe?
Mostly: it is graded B (77/100). Read the Web2md safety report
How do I install Web2md?
It runs remotely at web2md.org. Add it to Claude Code, Cursor, VS Code or Claude Desktop with the snippets above, or call it through the mcp.market gateway without installing anything.
Does Web2md need an API key?
Yes. The registry entry asks for WEB2MD_API_KEY.
Is Web2md maintained?
The last commit was 62 days ago (2026-09-03). The latest release is v0.14.1.
Is Web2md up?
100% of our last 2 checks got an answer. We check remote servers about four times a day.
How does Web2md compare with other MCP servers?
safety score 77/100 (higher than 50% of 48,255 servers); response time 123 ms (faster than 79% of 30,031 servers); downloads a week 38 (more than 29% of 12,191 servers with a package). Full comparison.