Skip to main content
Glama

@copperline/rendex-mcp

npm version npm downloads License: MIT MCP Badge

MCP server for Rendex — render raw HTML, Markdown, or any URL to an image or PDF via AI agents using the Model Context Protocol.

Quick Start

Claude Desktop / Cursor / Windsurf (npx)

Add to your MCP client config:

{
  "mcpServers": {
    "rendex": {
      "command": "npx",
      "args": ["-y", "@copperline/rendex-mcp"],
      "env": {
        "RENDEX_API_KEY": "your-api-key"
      }
    }
  }
}

Where to add this:

Client

Config location

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json (macOS)

Cursor

.cursor/mcp.json in project root, or Settings > MCP

Windsurf

Settings > MCP Servers

Claude Code (CLI)

Add a .mcp.json to your project root with the same config above. Then restart Claude Code.

Important: Add .mcp.json to your .gitignore — it contains your API key.

Remote (zero-install)

Connect directly — no installation needed (Claude Desktop only):

{
  "mcpServers": {
    "rendex": {
      "url": "https://mcp.rendex.dev/mcp",
      "headers": {
        "Authorization": "Bearer your-api-key"
      }
    }
  }
}

Related MCP server: PagePixels Screenshots MCP Server

Tools

rendex_screenshot

Render any webpage, raw HTML, or Markdown to an image or PDF.

"Take a screenshot of https://example.com"
"Capture the full page of https://news.ycombinator.com in dark mode"
"Generate a PDF of https://github.com with A4 page size"
"Capture https://amazon.de as seen from Germany"
"Render this HTML invoice as a PDF"
"Render this Markdown release note as a PDF"

Parameters:

Parameter

Type

Default

Description

url

string

required*

Webpage URL to capture. Mutually exclusive with html and markdown.

html

string

Raw HTML to render. Mutually exclusive with url and markdown.

markdown

string

Markdown to render (server converts to HTML). Mutually exclusive with url and html.

data

object

Key-value data for Mustache templating. When set, the html or markdown string is rendered as a logic-less Mustache template before capture. Invalid with url.

format

"png" | "jpeg" | "webp" | "pdf"

"png"

Output format

fullPage

boolean

false

Capture full scrollable page

darkMode

boolean

false

Emulate dark color scheme

width

number

1280

Viewport width (320-3840)

height

number

800

Viewport height (240-2160)

resizeWidth

number

Downscale output to this width in px (aspect ratio preserved if resizeHeight omitted). Ignored for PDF

resizeHeight

number

Downscale output to this height in px (aspect ratio preserved if resizeWidth omitted). Ignored for PDF

quality

number

80

Image quality 1-100 (JPEG/WebP only, default 80)

delay

number

0

Wait ms before capture

blockAds

boolean

true

Block ads and trackers

blockCookieBanners

boolean

Hide common cookie/consent banners (GDPR/CCPA) before capture

blockResourceTypes

string[]

Block resource types: font, image, media, stylesheet, other

device

string

Device preset: desktop, iphone_15, iphone_se, pixel_8, ipad, ipad_pro — sets viewport, scale, and user agent in one shot. Overrides width/height/deviceScaleFactor/userAgent

deviceScaleFactor

number

2

Device pixel ratio (1-3). 2× Retina by default

timeout

number

30

Max seconds to wait for page load (5-60)

waitUntil

string

"networkidle2"

Page readiness: load, domcontentloaded, networkidle0, networkidle2

waitForSelector

string

CSS selector to wait for before capture

bestAttempt

boolean

true

Return partial render on timeout instead of failing

selector

string

CSS selector of element to capture instead of full page

hideSelectors

string[]

CSS selectors to hide (display:none) before capture, e.g. ['.modal', '#newsletter-popup']. Max 50

css

string

Custom CSS to inject before capture (max 50KB)

js

string

Custom JavaScript to execute before capture (max 50KB)

cookies

array

Cookies to set for authenticated captures (max 50)

headers

object

Custom HTTP headers for the page request

userAgent

string

Override browser user agent string

pdfFormat

string

PDF page size: A4, Letter, Legal, Tabloid, A3

pdfLandscape

boolean

PDF landscape orientation

pdfPrintBackground

boolean

true

Print background in PDF

pdfScale

number

1

PDF scale factor (0.1-2)

pdfMargin

object

PDF margins: {top, right, bottom, left} as CSS values

geo

string

ISO country code for geo-targeted capture (Pro/Enterprise)

geoCity

string

City for geo-targeting (requires geo)

geoState

string

State for geo-targeting (requires geo)

async

boolean

Process asynchronously (returns job ID)

webhookUrl

string

URL to receive callback when async capture completes

cacheTtl

number

Seconds to cache result (3600-2592000)

rendex_extract

Extract clean reader-mode content from any webpage as Markdown, JSON, or HTML. Runs the same Chromium render pass as a screenshot, so it captures content after JavaScript runs — handling SPAs that fetch-only readers miss. Strips nav, ads, and boilerplate, returning the article body plus title, byline, and excerpt. Great for feeding page content to an LLM, summarization, or RAG ingestion.

"Extract the article text from https://example.com/post as Markdown"
"Pull the readable content from this SPA as JSON so I can summarize it"

Parameters:

Parameter

Type

Default

Description

url

string

required

Webpage URL to extract readable content from

extractFormat

"markdown" | "json" | "html"

"markdown"

Output shape — markdown (LLM-friendly prose), json (structured: title/byline/excerpt/siteName/length), or html (cleaned reader-mode HTML)

device

string

Device preset (desktop, iphone_15, iphone_se, pixel_8, ipad, ipad_pro) — extract the mobile/tablet version of a page

blockAds

boolean

true

Block ads and trackers before extraction

blockCookieBanners

boolean

Hide common cookie/consent walls before extraction

hideSelectors

string[]

CSS selectors to hide before extraction, e.g. ['.modal', '#newsletter-popup']. Max 50

waitUntil

string

"networkidle2"

Page readiness: load, domcontentloaded, networkidle0, networkidle2

timeout

number

30

Max seconds to wait for page load (5-60)

Data templating

Turn one reusable template into many documents. Pass a data object alongside html or markdown, and Rendex renders the string as a logic-less Mustache template before capture — {{var}} interpolation, {{#items}}…{{/items}} loops, and nested {{a.b}} access. Great for invoices, reports, certificates, and OG cards.

"Render this HTML invoice template to a PDF, filling it with this data:
 <h1>Invoice {{number}}</h1><p>Total: {{total}}</p>
 data = { number: 'INV-014', total: '$2,400' }"

data is valid only with html or markdown — combining it with url returns a validation error.

Authentication

Get your API key at rendex.dev.

Set the RENDEX_API_KEY environment variable in your MCP client configuration.

Pricing

Plan

Calls/Month

Rate

Free

500

10/min

Starter

10,000

60/min

Pro

100,000

300/min

Enterprise

Custom

1,000/min

License

MIT — Copperline Labs LLC

Install Server
A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
Response time
1wRelease cycle
7Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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/copperline-labs/rendex-mcp'

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