Prototyp · Vorschau: alle Server aus der offiziellen Registry, alle 30 Minuten synchronisiert. Mit Google anmelden, um Bewertungen zu schreiben.
PopNx MCPMCP-Server für alle, die KI nutzen · in einfachen Worten erklärt

CleanPage

von IO31-WEBVersion 1.0.0i★ 0iLäuft in der Cloud
Name in der Registryio.github.IO31-WEB/cleanpage

So installierst du es

What it does

Turn any URL into clean, structured, agent-ready content. $0.02/call via x402 on Base.

  • Connects Läuft in der Cloud
  • Account or key No key needed
  • Category Sonstiges

Installation

Wähle die KI-App, die du nutzt, und kopiere die Einstellungen.

5/5 Prüfungen bestanden · Was du fragst, läuft über den Server des Anbieters (cleanpage-mcp.cleanpage-mcp.workers.dev)

Zuerst: Welche KI nutzt du?

Wähle deine App, dann erscheinen die Schritte unten.

Klappt mit Claude · etwa 2 Min.

Kein Schlüssel, nichts zu installieren · Einmal auf claude.ai oder in der Desktop-App einrichten, dann im Chat nutzen · kostenlose Konten können 1 hinzufügen · bei Team/Enterprise fügt ein Owner ihn hinzu

  1. Öffne die Connectors-Seite von Claude

    CustomizeConnectors

    CustomizeConnectors1+ Add2https://…3Add4
  2. Klicke „+ Add“ → „Add custom connector“ und fülle diese 2 Felder aus

    Kopiere jeden Wert in das gleichnamige Feld in Claude und klicke Continue

    Name · NameCleanPage
    Remote MCP server URL · Adressehttps://cleanpage-mcp.cleanpage-mcp.workers.dev/mcp

    Authentication so lassen, wie Claude es erkannt hat, dann Add klicken

  3. Im Chat einschalten

    +ConnectorsCleanPage

  4. Ausprobieren

    Nutze CleanPage und sag mir, was du für mich tun kannst; zeig mir dann eine Sache

    ✓ Wenn Claude sagt, dass es CleanPage nutzt, oder ein Werkzeug von CleanPage in der Antwort zeigt, bist du verbunden

Menünamen am 11. Nov. 2026 mit der Hilfe von Anthropic abgeglichen · dein Bildschirm kann je nach App-Version leicht abweichen

Klappt mit ChatGPT nur in Firmen-Tarifen

ChatGPT Business, Enterprise oder Edu im Web, hinzugefügt von Admin oder Inhaber des Workspace · Mit Free, Plus oder Pro: Dein ChatGPT-Tarif kann MCP noch nicht selbst verbinden

  1. In ChatGPT im Web die Seite zum Hinzufügen von MCP öffnen

    Plugins+Add custom MCP server

    ChatGPTPlugins1+2https://…3Create4
  2. Name und Adresse eintragen

    Namen eingeben, Adresse unter Connection einfügen, Risikohinweis abhaken und Create as a plugin klicken

    Name · NameCleanPage
    Connection · Adressehttps://cleanpage-mcp.cleanpage-mcp.workers.dev/mcp
  3. CleanPage im Chat auswählen

    Neuen Chat öffnen und vor dem Tippen CleanPage aus deinen Plugins wählen

  4. Ausprobieren

    Nutze CleanPage und sag mir, was du für mich tun kannst; zeig mir dann eine Sache

    ✓ Wenn ChatGPT sagt, dass es CleanPage nutzt, oder ein Werkzeug von CleanPage in der Antwort zeigt, bist du verbunden

Menünamen am 11. Nov. 2026 mit der Hilfe von OpenAI abgeglichen · dein Bildschirm kann je nach App-Version leicht abweichen

Klappt mit Claude Code · etwa 2 Min.

Kein Schlüssel, nichts zu installieren

  1. Terminal öffnen

    Mac: Command+Leertaste drücken und Terminal tippen · Windows: PowerShell öffnen

  2. Diesen Befehl einfügen und Enter drücken

    claude mcp add --transport http --scope user cleanpage https://cleanpage-mcp.cleanpage-mcp.workers.dev/mcp
  3. /mcp in Claude Code eingeben

    CleanPage sollte in der Liste als verbunden erscheinen

  4. Ausprobieren

    Nutze CleanPage und sag mir, was du für mich tun kannst; zeig mir dann eine Sache

    ✓ Wenn Claude Code sagt, dass es CleanPage nutzt, oder ein Werkzeug von CleanPage in der Antwort zeigt, bist du verbunden

Menünamen am 11. Nov. 2026 mit der Hilfe von Anthropic abgeglichen · dein Bildschirm kann je nach App-Version leicht abweichen

Klappt mit Cursor · etwa 2 Min.

Kein Schlüssel, nichts zu installieren

  1. Mit diesem Button Cursor öffnen

    In Cursor öffnen

    Cursor fragt nach einer Bestätigung; klicke Install

  2. KI-Chat in Cursor im Agent-Modus öffnen

  3. Ausprobieren

    Nutze CleanPage und sag mir, was du für mich tun kannst; zeig mir dann eine Sache

    ✓ Wenn Cursor sagt, dass es CleanPage nutzt, oder ein Werkzeug von CleanPage in der Antwort zeigt, bist du verbunden

Menünamen am 11. Nov. 2026 mit der Hilfe von Cursor abgeglichen · dein Bildschirm kann je nach App-Version leicht abweichen

Klappt mit VS Code · etwa 2 Min.

Kein Schlüssel, nichts zu installieren

  1. Mit diesem Button VS Code öffnen

    In VS Code öffnen

    VS Code fragt nach einer Bestätigung; klicke Install

  2. KI-Chat in VS Code im Agent-Modus öffnen

  3. Ausprobieren

    Nutze CleanPage und sag mir, was du für mich tun kannst; zeig mir dann eine Sache

    ✓ Wenn VS Code sagt, dass es CleanPage nutzt, oder ein Werkzeug von CleanPage in der Antwort zeigt, bist du verbunden

Menünamen am 11. Nov. 2026 mit der Hilfe von VS Code abgeglichen · dein Bildschirm kann je nach App-Version leicht abweichen

Andere Apps mit MCP, etwa Windsurf, Zed oder Gemini CLI, fügen Server unterschiedlich hinzu. Sieh in der App-Liste nach

Alle Apps mit MCP ansehen →

Adresse für Apps, die über das Web verbinden

Adressehttps://cleanpage-mcp.cleanpage-mcp.workers.dev/mcp

JSON-Einstellungen stehen unten unter „Für Entwickler“

Hängst du fest? Frag Leute, die CleanPage nutzen💬 Diskussion →
Für Entwickler: Terminal-Befehle und JSON-Einstellungen

Über das Web

Claude Code

claude mcp add --transport http --scope user cleanpage https://cleanpage-mcp.cleanpage-mcp.workers.dev/mcp

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "cleanpage": {
      "url": "https://cleanpage-mcp.cleanpage-mcp.workers.dev/mcp"
    }
  }
}

VS Code (mcp.json)

{
  "servers": {
    "cleanpage": {
      "type": "http",
      "url": "https://cleanpage-mcp.cleanpage-mcp.workers.dev/mcp"
    }
  }
}

Diese Einstellungen werden aus dem Registry-Eintrag des Entwicklers erzeugt. Wenn in der README etwas anderes steht, folge der README.

Auf einen Blick

Downloads pro Wochei
Nicht auf npm/PyPI
Verbindung
Läuft in der Cloud
Transport
streamable-http
Neueste Versioni
1.0.0
Kategoriei
Sonstiges
In der Registry veröffentlichti
18. Sept. 2026
Code zuletzt geänderti
19. Sept. 2026
Entwickler
IO31-WEB
Registry-Status
Aktiv

Welche Apps ihn nutzen können

Basierend darauf, wie sich dieser Server verbindet, und auf der eigenen Doku jeder App, geprüft am 10. Nov. 2026.

Verbinden sich über das Internet in

ClaudeChatGPTGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatOpen WebUIRaycast

Alle Apps, mit Vor- und Nachteilen →

Was er kann

Tool-Namen und -Beschreibungen genau so, wie der Server sie am 9. Nov. 2026 gemeldet hat. Geschrieben hat sie der Entwickler, nicht wir; wir zeigen sie als reinen Text.

  • clean_page

    Fetches a URL and returns clean, structured, agent-optimized content: readable markdown, plain text, metadata (author/date/site/word count), extracted links and images, an optional structured facts array, and a 0-100 quality score. Handles common failure modes (paywalls, bot-wall

  • health

    Free. Returns service status, version, and uptime signal. Use to check the service is reachable before paying for anything.

  • list_capabilities

    Free. Returns the full list of tools this server offers, including which are paid, their prices, and their input schemas — so an agent can decide what to call before spending anything.

  • pricing

    Free. Returns current pricing, accepted payment network/asset, and the x402 payment flow details for paid tools.

Basischecksi

Wir prüfen Informationen, die jeder sehen kann; den Code haben wir nicht gelesen. Checks, die nicht zutreffen, werden nicht mitgezählt. · Geprüft am 12. Nov. 2026

  • ✓ Bestanden

    Entwickler passt zum Repo

    Der Registry-Name wurde mit dem GitHub-Konto IO31-WEB bestätigt, dem das Repo gehört

  • ✓ Bestanden

    Wird noch gepflegt

    Code zuletzt geändert: vor 2 Monaten

  • ✓ Bestanden

    Hat eine Lizenz

    Nutzt MIT

  • ✓ Bestanden

    Endpunkt antwortet

    Antwort in 80 ms (HTTP 200)

  • – Nicht zutreffend

    Anmeldung mit OAuth

    Keine Anmeldung nötig

  • ✓ Bestanden

    Keine versteckten Anweisungen in Tool-Beschreibungen

    Wir haben 4 Tool-Beschreibungen gelesen und keine versteckten Anweisungen an die KI gefunden

Diskussion

Fragen, Tipps teilen oder melden, dass etwas nicht geht. Sortiert nach „hilfreich“.

Noch keine Beiträge. Stell die erste Frage oder teile einen Tipp.

Beiträge hier stammen von Nutzern, nicht vom PopNx-Team.

Mit Google anmelden, um zu posten

Nutzerbewertungen

Noch keine Bewertungen

Mit Google anmelden, um zu bewerten

Im Vergleich mit anderen in Sonstigesi

  • Mehr Sterne als 0 % der anderen 19308 Server in dieser Kategorie
  • Neuer in der Registry veröffentlicht als 45 % der anderen 19308 Server in dieser Kategorie
  • Basischecks gleich gut wie oder besser als bei 100 % der anderen 19308 Server in dieser Kategorie

Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.

Häufige Fragen

Ist CleanPage sicher?

Er hat 5 von 5 zutreffenden Basischecks bestanden. Den Code haben wir nicht gelesen. Bevor du einen Schlüssel oder Token hinzufügst, sieh nach, welche Zugriffe der Server verlangt, und nutze einen Schlüssel, der nur die Berechtigungen hat, die du brauchst.

Welche Schlüssel oder Codes braucht er?

Die Registry nennt keinen erforderlichen Schlüssel, manche Server bitten dich aber bei der ersten Nutzung, dich anzumelden.

Läuft er auf meinem Computer oder in der Cloud?

Er läuft in der Cloud des Entwicklers. Du verbindest dich übers Internet, ohne etwas zu installieren, aber was du sendest, läuft über die Server des Entwicklers.

Wird er noch gepflegt?

Das GitHub-Repo wurde zuletzt vor 2 Monaten geändert, und die neueste Version (1.0.0) kam vor 2 Monaten in die Registry.

Welche Apps können ihn nutzen?

Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Er verbindet sich per URL und funktioniert daher auch in Apps mit Remote-MCP, etwa ChatGPT Business und höher.

Was kann ich stattdessen nutzen?

In derselben Kategorie: World Monitor, Claude Flow, Windmill

Andere in derselben Kategorie

Server derselben Kategorie von anderen Entwicklern, sortiert nach Sternen.

So liest du eine Karte:↓ Downloads pro Wochei★ GitHub-SterneiDrei Säulen: Bewertungen · Checks · NutzungiAktualisiert = neueste Version in der Registry veröffentlichti

World Monitor

Real-time global intelligence on conflict, markets, energy, trade, shipping and cyber. 102 tools.

von koala73Weit verbreitet★ 90.489Aktualisiert heute

Läuft in der Cloud✓ vom Dienst · worldmonitor.app

Claude Flow

AI orchestration with hive-mind swarms, neural networks, and 87 MCP tools for enterprise dev.

von ruvnetWeit verbreitet↓ 13.513/Wo.★ 81.473Aktualisiert vor 14 Monaten

Läuft auf deinem Computer

Windmill

Run Windmill scripts and flows and manage jobs, schedules, resources and variables.

von windmill-labsWeit verbreitet★ 18.530Aktualisiert heute

Läuft in der Cloud

README vom Entwickler

README öffnen

Unverändert aus dem Repo des Entwicklers übernommen. PopNx MCP hat den Inhalt weder geprüft noch empfiehlt es ihn. HTML, Bilder und Skripte wurden entfernt. Links führen von dieser Website weg.

CleanPage

A paid MCP tool that turns any URL into clean, structured, agent-optimized content. Agents pay $0.02 USDC per successful call via x402 on Base — no accounts, no API keys, no subscriptions.

clean_page(url) → { title, clean_markdown, plain_text, structured_facts,

metadata, links, images, quality_score, extraction_notes }

Built for Cloudflare Workers. Full TypeScript. No paid infra required beyond a domain and a Base wallet address.


How agents use this

  1. Discover the service for free — no payment needed for any of this:
  • GET /.well-known/agent.json — machine-readable capability card
  • GET /.well-known/mcp.json — MCP connection + pricing manifest
  • GET /llms.txt — plain-text summary for LLM crawlers
  • MCP tools health, list_capabilities, pricing (all free)
  1. Connect an MCP client to https:// /mcp over Streamable HTTP:
   {

"mcpServers": { "cleanpage": { "url": "https:// /mcp", "transport": "streamable-http" } } }

  1. Call `clean_page` with no payment attached first:
   POST /mcp

{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "clean_page", "arguments": { "url": "https://example.com/article" } } }

   The response is **HTTP 402** with an `accepts` array describing exactly what payment is required (amount, network, asset, payee address).
  1. Sign and retry. Construct a USDC transferWithAuthorization (EIP-3009) payment payload for the requested amount, base64-encode it, and retry the *same* request with an X-PAYMENT header. Most x402 client libraries (e.g. x402-fetch, x402-axios) do steps 3–4 for you automatically.
  1. Get the result. On success, the response carries the full JSON result plus an X-PAYMENT-RESPONSE header with the settlement transaction hash. Failed extractions (paywalls, bot-blocks, empty pages) are never charged — settlement only happens after a successful extraction.

Full protocol details: see /llms.txt and /.well-known/mcp.json once deployed, or the "For agents" section of the landing page.


Project structure

cleanpage/

├── src/ │ ├── index.ts # Hono app: routes, x402 payment gate, static asset fallback │ ├── types.ts # Shared types (Env, CleanPageResult, etc.) │ ├── config.ts # Reads env vars into a typed config object │ ├── mcp/ │ │ ├── server.ts # JSON-RPC 2.0 / MCP method dispatcher (stateless) │ │ └── tools.ts # Tool schemas + descriptions (clean_page, health, ...) │ ├── extraction/ │ │ ├── extractor.ts # Core pipeline: fetch → Readability → markdown/links/metadata │ │ └── enrichment.ts # Optional cheap LLM pass for structured_facts │ ├── payments/ │ │ └── x402.ts # x402 payment requirements, facilitator verify/settle │ └── middleware/ │ └── limits.ts # KV-backed rate limiting + call/revenue analytics ├── public/ # Static assets served at the Worker's root │ ├── index.html # Landing page (live demo, pricing, docs, for-agents) │ ├── robots.txt # Explicitly welcomes agent/LLM crawlers │ ├── llms.txt # Plain-text agent-facing summary │ └── .well-known/ │ ├── agent.json # Agent discovery/capability card │ └── mcp.json # MCP connection + pricing manifest ├── wrangler.toml # Cloudflare Workers config (bindings, vars) ├── package.json ├── tsconfig.json └── .env.example # Documents every config value


Architecture notes

MCP transport. The MCP Streamable HTTP transport is implemented directly in src/mcp/server.ts as a stateless JSON-RPC 2.0 dispatcher (initialize, tools/list, tools/call, ping), rather than via the official SDK's Node-oriented HTTP transport class. This is a deliberate choice for correctness on Cloudflare Workers: the SDK's transport targets Node's http.IncomingMessage/ServerResponse, which Workers doesn't have. The dispatcher here follows the same wire protocol (JSON-RPC over a single POST endpoint, one server-scoped session per request) so any standard MCP client can connect to it. If you later run this on a Node-based host, you can swap in @modelcontextprotocol/sdk's StreamableHTTPServerTransport directly.

Payment gating. POST /mcp peeks at the parsed JSON-RPC body: only tools/call requests naming clean_page are payment-gated (src/index.ts); health, list_capabilities, pricing, and all non-tool-call methods (initialize, tools/list, etc.) pass straight through, rate-limited but free. This keeps the discovery surface fully open to agents while gating only the one paid capability.

Settlement timing. Payment is *verified* before extraction runs, but *settled* (broadcast on-chain) only after extraction succeeds. If extraction fails, the agent's payment authorization is simply discarded — nothing is charged.

No private key required. Because USDC on Base supports EIP-3009 meta-transactions, the resource server never holds a private key. PAYMENT_ADDRESS is a public wallet address; the facilitator submits the signed authorization on-chain and sponsors gas.

Extraction engine. @mozilla/readability (the engine behind Firefox Reader Mode) does the core content extraction, running against a DOM built with linkedom (a fast, dependency-light DOM implementation that works in Workers — jsdom does not). A small hand-written HTML→Markdown walker converts the extracted fragment to markdown, since no existing markdown-conversion library is both Workers-compatible and DOM-based. Heuristics before and after extraction catch common failure modes: paywall markers, bot-check pages, and JS-only empty shells all produce typed errors instead of low-quality output.

Optional LLM enrichment. structured_facts is populated only when the caller passes options.extract_facts: true, and only if ENABLE_LLM_ENRICHMENT=true and ANTHROPIC_API_KEY is set. It's off the critical path — if the enrichment call fails or is disabled, clean_page still returns a complete result with an empty structured_facts array and a note explaining why. There's no additional charge for using it.

Rate limiting & analytics. Both are implemented with a single KV namespace: a fixed 1-minute-window counter per client IP for free-tier calls, and a running JSON counter object for total calls / successes / failures / revenue, exposed read-only at GET /analytics.


Required services / infrastructure

ComponentWhat you needWhere to get it
HostingCloudflare Workers (with Static Assets)dash.cloudflare.com — free tier works to start
Domain + DNSA domain proxied through CloudflareAny registrar; add to Cloudflare, point at the Worker
WalletA Base wallet address (public address only)Any EVM wallet — Coinbase Wallet, MetaMask, etc.
x402 facilitatorVerifies/settles paymentshttps://x402.org/facilitator (testnet-friendly default); Coinbase-operated or self-hosted facilitators for mainnet production volume
KV namespaceRate limiting + analytics storagewrangler kv namespace create CLEANPAGE_KV
LLM (optional)Structured fact extractionAnthropic API key, only if ENABLE_LLM_ENRICHMENT=true

No database, no queue, no separate backend — everything runs in the one Worker.


Deployment (step by step)

# 1. Install dependencies

npm install

2. Create the KV namespace used for rate limiting + analytics

npx wrangler kv namespace create CLEANPAGE_KV npx wrangler kv namespace create CLEANPAGE_KV --preview

Copy the two returned IDs into wrangler.toml under [[kv_namespaces]]

3. Edit wrangler.toml [vars]:

- PAYMENT_ADDRESS → your Base wallet address

- PUBLIC_BASE_URL → your real domain, e.g. https://cleanpage.yourdomain.com

- X402_NETWORK → "base-sepolia" while testing, "base" for mainnet

Also update the same URLs/addresses in:

- public/.well-known/agent.json

- public/.well-known/mcp.json

- public/llms.txt

- public/index.html (og:url, structured data, MCP config example)

4. (Optional) enable LLM fact extraction

npx wrangler secret put ANTHROPIC_API_KEY

5. Type-check

npm run typecheck

6. Deploy

npm run deploy

7. Point your domain at the Worker (Cloudflare dashboard → Workers →

your worker → Triggers → Custom Domains), or use the workers.dev

subdomain Wrangler prints after deploy.

Local development
npm run dev

Worker runs at http://localhost:8787

Try: curl -X POST http://localhost:8787/mcp -H "Content-Type: application/json" \

-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Going from testnet to mainnet
  1. Switch X402_NETWORK from base-sepolia to base in wrangler.toml.
  2. Switch X402_FACILITATOR_URL to a mainnet-capable facilitator (confirm your chosen facilitator supports Base mainnet settlement — verify current facilitator options, as this ecosystem is still young and options change).
  3. Re-deploy.

Environment variables

See .env.example for the full annotated list. Summary:

VariableRequiredDefaultPurpose
PAYMENT_ADDRESSyes—Base wallet address receiving USDC
X402_NETWORKyesbase-sepoliabase or base-sepolia
X402_FACILITATOR_URLyeshttps://x402.org/facilitatorFacilitator used for verify/settle
CLEAN_PAGE_PRICE_USDyes0.02Price per successful clean_page call
PUBLIC_BASE_URLyes—Your deployed URL, used in discovery files
FREE_RATE_LIMIT_PER_MINno30Free-tier calls per IP per minute
ENABLE_LLM_ENRICHMENTnotrueEnables structured_facts extraction
LLM_MODELnoclaude-haiku-4-5-20251001Model used for enrichment
ANTHROPIC_API_KEYonly if enrichment enabled—Secret; set via wrangler secret put

Example MCP client configuration

{

"mcpServers": { "cleanpage": { "url": "https://cleanpage.yourdomain.com/mcp", "transport": "streamable-http" } } }

Example tool call and response shape

Request:

{

"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "clean_page", "arguments": { "url": "https://example.com/article", "options": { "extract_facts": true } } } }

Successful response (after payment) — result.content[0].text is a JSON string shaped like:

{

"title": "Article title", "clean_markdown": "# Article title\n\nBody content as markdown…", "plain_text": "Body content as plain text…", "structured_facts": [ { "claim": "…", "category": "fact", "confidence": 0.82 } ], "metadata": { "author": "Jane Doe", "published_date": "2026-08-01T00:00:00Z", "site_name": "Example", "language": "en", "word_count": 812, "reading_time_minutes": 4, "fetched_at": "2026-09-17T12:00:00.000Z", "final_url": "https://example.com/article", "status_code": 200 }, "links": [{ "url": "https://example.com/other", "text": "related", "type": "internal" }], "images": ["https://example.com/hero.jpg"], "quality_score": 85, "extraction_notes": [] }

Error codes

error_codeMeaningRetryable
INVALID_URLMalformed, non-http(s), or a blocked internal addressno
FETCH_FAILEDNon-2xx response, non-HTML content, or oversized pagesometimes
TIMEOUTPage didn't respond within the timeoutyes
PAYWALL_DETECTEDSubscription/metered paywall detectedno
BLOCKED_BY_SITEBot-check/CAPTCHA or JS-only empty shellno
EMPTY_CONTENTNo substantial article content found

Nur der Anfang wird gezeigt; den Rest findest du im Repo