Skip to content

docs(mcp): add Rendex MCP Server extension tutorial#8541

Queued
Dan425953 wants to merge 5 commits intoaaif-goose:mainfrom
Dan425953:add-rendex-mcp-extension
Queued

docs(mcp): add Rendex MCP Server extension tutorial#8541
Dan425953 wants to merge 5 commits intoaaif-goose:mainfrom
Dan425953:add-rendex-mcp-extension

Conversation

@Dan425953
Copy link
Copy Markdown

What this adds

A new MCP extension tutorial page at `documentation/docs/mcp/rendex-mcp.md` for Rendex — an MCP server that gives goose the ability to capture screenshots, generate PDFs, and render HTML to images from any webpage or raw HTML.

Single outcome-focused tool (`rendex_screenshot`) with a typed JSON Schema covering 30+ parameters across three rendering modes:

  • Screenshots: PNG / JPEG / WebP, full-page, dark mode, element selector, CSS/JS injection, cookie + header injection, ad blocking
  • PDFs: A4 / Letter / Legal / Tabloid / A3, landscape, margins, scale, print background
  • HTML rendering: pass raw HTML instead of a URL for invoices, OG images, email template previews, social cards

Plus geo-targeting (Pro/Enterprise), an async pipeline with HMAC-signed webhook callbacks, and signed-R2-URL caching. Hosted on Cloudflare Workers with Browser Rendering on the back end, so no local Chromium needed.

Why a small first PR

Following the guidance in CONTRIBUTING.md — starting with a narrow, single-file contribution that follows the existing `documentation/docs/mcp/template.mdx` structure and mirrors conventions from the current third-party server tutorials (`browserbase-mcp.md`, `agentql-mcp.md`, etc.).

Install paths documented

  • stdio / Desktop installer: `npx -y @copperline/rendex-mcp` with `RENDEX_API_KEY` env var (free tier: 500 calls/month, no credit card)
  • Remote / Streamable HTTP: `https://mcp.rendex.dev/mcp\` with Bearer auth for clients that support `type: http`

Canonical metadata

Field Value
Name Rendex
npm `@copperline/[email protected]`
GitHub copperline-labs/rendex-mcp
Remote `https://mcp.rendex.dev/mcp\`
Official MCP Registry `io.github.copperline-labs/rendex-mcp`
Smithery `copperline/rendex-mcp`
License MIT

Test plan

  • Markdown renders cleanly (matches template imports + component props)
  • `goose://extension?...` desktop URL is correctly URL-encoded and follows existing tutorials' format
  • stdio install path tested — `npx -y @copperline/rendex-mcp` with a real API key connects and exposes `rendex_screenshot` (verified via Smithery scan + local Claude Desktop)
  • Remote endpoint `mcp.rendex.dev/mcp` returns `serverInfo: {name: "rendex", version: "1.0.1"}` on `initialize` (verified this morning)
  • DCO sign-off on commit

Happy to iterate on tone, copy, or structure if the maintainers want anything changed.

🤖 Generated with Claude Code

Rendex is an MCP server that lets goose capture screenshots, generate
PDFs, and render HTML to images via the Rendex API (Cloudflare Workers
back end). Single outcome-focused tool (rendex_screenshot) handles all
three rendering modes.

Notable features documented:
- PNG/JPEG/WebP/PDF output with full-page + element-selector capture
- CSS/JS injection and cookie/header injection for authenticated pages
- PDF options (A4/Letter/Legal/Tabloid/A3, landscape, margins, scale)
- Geo-targeting (Pro/Enterprise) with ISO country + city/state
- Async pipeline with HMAC-signed webhook callbacks
- Raw HTML input for generating invoices, OG images, and email previews

Install path is stdio (`npx -y @copperline/rendex-mcp`). Remote
Streamable HTTP option at `https://mcp.rendex.dev/mcp` is documented
for clients that support `type: http`. Free tier has 500 calls/month,
no credit card required.

Follows the existing docs/mcp template structure used by other third-
party server tutorials (browserbase-mcp, agentql-mcp, etc.).

Signed-off-by: DanE <[email protected]>
Adds the corresponding entry to documentation/static/servers.json so
Rendex shows up in the goose docs site extensions browser UI alongside
the existing tutorial page at documentation/docs/mcp/rendex-mcp.md.

Inserted alphabetically between reddit-mcp and repomix-mcp. Entry uses
the standard is_builtin=false, endorsed=false defaults and mirrors the
stdio install path (npx -y @copperline/rendex-mcp) with the required
RENDEX_API_KEY environment variable.

Signed-off-by: DanE <[email protected]>
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f3fc35660c

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread documentation/docs/mcp/rendex-mcp.md Outdated
Comment thread documentation/docs/mcp/rendex-mcp.md Outdated
Comment thread documentation/docs/mcp/rendex-mcp.md Outdated
Comment thread documentation/static/servers.json Outdated
… + fix YAML schema

Per @angiejones review:
- Restructure the tutorial so "Rendex Remote MCP" is the default tab,
  matching the apify-mcp.md convention. Local stdio (npx) becomes the
  secondary tab.
- Switch the servers.json entry from the local npx command to the
  streamable-http variant (mirrors github-mcp's shape) so the docs
  extensions picker surfaces the zero-install remote endpoint by default.

Per @chatgpt-codex-connector review:
- Drop the standalone YAML config example that used the wrong schema
  (`type: http` + `url:` + `envVars:` with implicit Bearer mapping).
  Instead, both Desktop and CLI install paths now use the canonical
  GooseDesktopInstaller / CLIExtensionInstructions components with
  type="http" (which the installer maps to streamable_http) and an
  explicit `Authorization: Bearer YOUR_RENDEX_API_KEY` header. This
  matches goose's actual streamable_http parser
  (crates/goose/src/agents/extension.rs lines 220-242 — type is
  `streamable_http`, field is `uri` not `url`, headers map is
  explicit and required for Bearer auth — there's no auto-mapping
  from RENDEX_API_KEY env var to Authorization).

Tutorial structure now mirrors apify-mcp.md exactly, including the
Quick Install header → Desktop installer → CLI block sequence, the
Custom Request Header pattern, and the Remote / Local tab grouping.

Signed-off-by: DanE <[email protected]>
@Dan425953
Copy link
Copy Markdown
Author

Thanks @angiejones and @chatgpt-codex-connector — both points addressed in 48084f46a.

Changes in this revision:

  1. Remote/Streamable HTTP is now the default tab — restructured the tutorial to mirror apify-mcp.md: top-level Tabs groupId="remote-or-local" with Rendex Remote MCP as the default and Rendex Local MCP as the fallback for users without HTTP transport support. Inside each, the standard Desktop/CLI install pattern.

  2. servers.json entry switched to streamable-http — now uses url, type: streamable-http, and an explicit headers array with Authorization: Bearer <YOUR_RENDEX_API_KEY>, mirroring the existing github-mcp entry shape. Removed the npx command since the streamable-http variant is the default install path.

  3. YAML schema fix (Codex P2 ci: setup release pipeline #1) — dropped the standalone YAML block that used type: http + url: + envVars:. The Desktop and CLI tabs both use the canonical GooseDesktopInstaller / CLIExtensionInstructions components with type="http" (which the React installer correctly maps to streamable_http in the goose:// URL). No more hand-rolled YAML in the doc that could drift from the parser.

  4. Authorization header is now explicit (Codex P2 Doc fixing #2) — both install paths declare { name: "Authorization", label: "Bearer YOUR_RENDEX_API_KEY" } (Desktop) and { key: "Authorization", value: "Bearer rdx_..." } (CLI), matching the apify-mcp pattern. No more implying that goose auto-maps RENDEX_API_KEYAuthorization header — verified against crates/goose/src/agents/extension_manager.rs::create_streamable_http_client that the headers map is the only path for Bearer auth on streamable_http.

The local npx -y @copperline/rendex-mcp install path is preserved as the secondary tab for users who prefer stdio or whose client doesn't yet support streamable HTTP.

Happy to iterate further if anything else needs tweaking.

@chatgpt-codex-connector
Copy link
Copy Markdown

To use Codex here, create a Codex account and connect to github.

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 48084f46a3

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment on lines +648 to +650
"name": "Authorization",
"description": "Bearer <YOUR_RENDEX_API_KEY>",
"required": true
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Disable unusable CLI install command for auth-required server

This entry declares Authorization as a required header, but because show_install_command is not set to false, the extensions UI will still render the generic command goose session --with-streamable-http-extension "https://mcp.rendex.dev/mcp" (see documentation/src/components/server-card.tsx and documentation/src/pages/extensions/detail.tsx). That command path cannot carry headers: --with-streamable-http-extension only parses a URL plus optional timeout (crates/goose-cli/src/cli.rs), so users who follow the displayed command cannot satisfy the required auth header and will hit connection/auth failures. Please suppress the command for this server (or provide a header-capable command flow).

Useful? React with 👍 / 👎.

Per @chatgpt-codex-connector P2: with type=streamable-http and a
required Authorization header, the docs extensions UI would still
render `goose session --with-streamable-http-extension <url>` per
documentation/src/components/server-card.tsx and
documentation/src/pages/extensions/detail.tsx. That CLI flag in
crates/goose-cli/src/cli.rs only takes a URL plus optional timeout —
no header support — so anyone copying the displayed command would hit
auth failures.

Set show_install_command: false on the rendex-mcp entry to suppress
that command and force users through the goose:// installer link or
the manual config flow described in installation_notes, both of which
carry the Authorization header correctly.

Precedent: jetbrains uses the same show_install_command: false pattern
in this file. Note: github-mcp has the same shape (required
Authorization header, streamable-http type) without this field set —
that entry has the same latent issue but is out of scope for this PR.

Signed-off-by: DanE <[email protected]>
@Dan425953
Copy link
Copy Markdown
Author

Good catch from Codex — verified in be0202139.

Confirmed the rendering logic in `documentation/src/components/server-card.tsx:14` and `documentation/src/pages/extensions/detail.tsx:106-128` would emit:

```
goose session --with-streamable-http-extension "https://mcp.rendex.dev/mcp"
```

…unless `show_install_command` is explicitly `false`. And `crates/goose-cli/src/cli.rs`'s `--with-streamable-http-extension` flag only accepts a URL + optional timeout — no header support — so a user copying that command would hit auth failures the moment goose tries to call `tools/list`.

Added `"show_install_command": false` to the rendex-mcp entry. Users now flow through either the `goose://` installer link (which carries headers) or the manual config path described in `installation_notes`, both of which set the `Authorization` header correctly.

Precedent: `jetbrains` already uses `show_install_command: false` in this file.

Side note (out of scope, FYI): I noticed `github-mcp` has the identical shape — `type: streamable-http`, required `Authorization` header, no `show_install_command: false` — so it has the same latent issue, but that's not for this PR. Happy to file a follow-up if you'd like.

Comment thread documentation/docs/mcp/rendex-mcp.md Outdated

</TabItem>

<!-- LOCAL SETUP -->
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
<!-- LOCAL SETUP -->

Comment thread documentation/docs/mcp/rendex-mcp.md Outdated
<TabItem value="cli" label="goose CLI">
**Command**
```sh
npx -y @copperline/rendex-mcp
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this should use the streamable flow

Comment thread documentation/docs/mcp/rendex-mcp.md Outdated
</TabItem>
</Tabs>

## Available Tool
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lets remove this section. dont want to the burden of keeping it updated. if anyone wants to know the tools, they should go to the MCP's official page

Comment thread documentation/docs/mcp/rendex-mcp.md Outdated
```
:::

:::info
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can remove note

Address @angiejones round 2:

- Remove outer `remote-or-local` tabs wrapper and drop the Local MCP
  (stdio/npx) tab entirely — tutorial is now streamable_http only,
  matching the already-landed servers.json shape
  (type: streamable-http, show_install_command: false).
- Remove the "Available Tool" capability table (avoid duplicating
  schema that lives on rendex-mcp's own MCP registry page).
- Remove the Node.js `:::info` note (no longer relevant once the
  npx install path is gone).
- Remove the `<!-- LOCAL SETUP -->` / `<!-- REMOTE SETUP -->`
  HTML comment markers.

Signed-off-by: DanE <[email protected]>
@Dan425953
Copy link
Copy Markdown
Author

Thanks @angiejones — round 2 addressed in ca7423d:

  • Dropped the outer remote-or-local tabs wrapper and removed the entire Rendex Local MCP (stdio/npx) tab. Tutorial is now streamable_http-only, matching the already-landed servers.json entry (type: streamable-http, show_install_command: false).
  • Removed the Available Tool capability table — users can get the current tool schema from rendex-mcp's own MCP registry page / GitHub README.
  • Removed the Node.js :::info note (no longer relevant without the npx path).
  • Removed the <!-- LOCAL SETUP --> / <!-- REMOTE SETUP --> comment markers.

Net -91 lines. Ready for another look when you have a minute.

@angiejones angiejones added this pull request to the merge queue Apr 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants