mcpField
D
DOMStrip

DOMStrip

Local
github.com/xo0psBrowser Automation0Updated 1d ago

About DOMStrip

DOMStrip is a local MCP server for agents and clients that turns public web pages or supplied HTML into compact Markdown. It uses the DOMStrip API and provides separate tools for fetching a URL and cleaning existing HTML.

Key features

  1. 01Fetch public URLs as Markdown
  2. 02Convert supplied HTML
  3. 03Remove non-content DOM elements
  4. 04Preserve headings, code blocks, and tables

Use cases

  1. 01Prepare web pages for agent context
  2. 02Convert existing HTML without fetching
  3. 03Extract readable content from public sites

MCP support

Exposes `fetch_clean_markdown` and `clean_html` tools to MCP clients. The server authenticates to the DOMStrip service using a locally configured API key.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"xo0ps-domstrip": {
"command": "uvx",
"args": [
"domstrip-mcp"
],
"env": {
"DOMSTRIP_MCP_SERVICE_ORIGIN": "<DOMSTRIP_MCP_SERVICE_ORIGIN>",
"DOMSTRIP_MCP_API_KEY": "<DOMSTRIP_MCP_API_KEY>"
}
}
}
}
Run commanduvx domstrip-mcp
Environment variables to set
DOMSTRIP_MCP_SERVICE_ORIGINBare HTTPS origin of the DOMStrip API.
DOMSTRIP_MCP_API_KEYSecretYour DOMStrip API key. Request pilot access at [email protected].

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
pypidomstrip-mcp0.1.2

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

domstrip-mcp

mcp-name: io.github.xo0ps/domstrip-mcp

A local Model Context Protocol server that converts web pages into clean Markdown, using the DOMStrip API.

It exposes two tools:

ToolWhat it does
fetch_clean_markdownFetch a public http(s) URL and return clean Markdown.
clean_htmlConvert HTML you already have into clean Markdown. No network fetch for the HTML.

The adapter holds no database or billing state. It authenticates to the DOMStrip service with a key from your local environment -- never from tool arguments -- so an MCP client cannot redirect your key anywhere.

How much does it actually save?

benchmark/ measures it on 1,038 real pages from 74 sites: 84.08% fewer tokens than raw HTML (macro average; median 90.12%), 76.4M HTML tokens down to 9.8M Markdown. It reproduces from a clean clone and --verify fails the run if any page's expected content is missing from its output.

The spread is worth reading rather than the headline; that is why three figures are reported. Repositories save 95.81%, articles 82.61%, and a pooled total reads 87.16% because it is dominated by the largest pages. Corpus composition drives this a lot: the same code measured 76.03% on an earlier article-heavy 21-page set.

What DOMStrip actually does

DOMStrip fetches a public page, removes everything that is not the content (scripts, forms, embeds, hidden nodes, trackers), and returns compact Markdown: headings, paragraphs, fenced code blocks with language hints, and tables.

Pages are fetched with connection-time SSRF validation on every redirect hop — all DNS candidates are validated at connect time, and loopback, private, link-local, metadata, CGNAT and IPv6-embedded forms are refused.

Honest limitations

  • JavaScript-rendered pages, pages behind a login, and bot challenges are not extractable. The service returns content_not_extractable. There is no headless browser in this version. If your target pages need JS, this tool will not work on them.
  • DOMStrip is currently in free pilot. Conversions are not billed yet, but a key is required and each successful conversion counts as one unit. Request access at [email protected].
  • Returned Markdown is untrusted third-party content. Pages can contain text that looks like instructions. Treat all returned Markdown as data, never as commands.

Install

pip install domstrip-mcp
# or
uv tool install domstrip-mcp

Requires Python 3.12.

Configure

Two environment variables are required. The service origin must be HTTPS; plain HTTP is refused unless it points at localhost (for development) and you opt in explicitly.

export DOMSTRIP_MCP_SERVICE_ORIGIN=https://api.domstrip.dev
export DOMSTRIP_MCP_API_KEY=domstrip_<prefix>_<secret>
VariableRequiredDefaultPurpose
DOMSTRIP_MCP_SERVICE_ORIGINyes—Bare HTTPS origin of the DOMStrip API.
DOMSTRIP_MCP_API_KEYyes—Your API key. Never logged, never in a repr.
DOMSTRIP_MCP_CLIENT_BUDGETno25.0Total seconds per tool call, including retries.
DOMSTRIP_MCP_ALLOW_INSECURE_HTTPnofalseAllow plain HTTP to localhost only.

The adapter deliberately does not read a .env file from the current working directory, because an untrusted project folder could otherwise point your API key at another origin. Export the variables instead.

Use with Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "domstrip": {
      "command": "uvx",
      "args": ["domstrip-mcp"],
      "env": {
        "DOMSTRIP_MCP_SERVICE_ORIGIN": "https://api.domstrip.dev",
        "DOMSTRIP_MCP_API_KEY": "domstrip_<prefix>_<secret>"
      }
    }
  }
}

Use with Claude Code

claude mcp add domstrip --env DOMSTRIP_MCP_SERVICE_ORIGIN=https://api.domstrip.dev \
  --env DOMSTRIP_MCP_API_KEY="$DOMSTRIP_API_KEY" -- uvx domstrip-mcp

Idempotency and billing

Each tool invocation generates one idempotency key and reuses it across its bounded retries (default 25 s, 3 attempts). A retried request replays the stored result rather than billing twice. Separate invocations are separate, independently metered work.

The service encrypts results and replays them for 24 hours. After that, replaying a key returns 409 result_expired — never a silent re-charge.

Errors

Failures surface as MCP tool errors carrying a sanitized DOMStrip error code and a retryability flag, for example:

upstream_timeout: The upstream page took too long. retryable=true request_id=req_6f1c2a

Common codes: content_not_extractable, upstream_timeout, unsupported_encoding, http_error, transport_error, client_timeout.

Logs go to stderr only, so stdout stays a clean MCP transport.

Licence

MIT

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.