Skip to main content
Glama

previewglow

previewglow is a small local bridge to the hosted Shareglow MCP server, which looks after link previews and Open Graph images. Point it at a public page and it reports the page's preview metadata, the per-platform previews, and any problems it finds, with suggestions for fixing them. It can render a 1200x630 OG image from one of the workspace's templates, design a fresh template from a site's own brand, mint short links that carry their own previews, report how those links are being clicked, and force the social platforms to re-fetch a page whose tags have just changed.

The bridge keeps no preview data of its own. It serves the upstream server's tool list locally, exactly as captured from the live endpoint, and forwards each tool call upstream, returning the result untouched. Everything here acts on the caller's own Shareglow workspace or on public pages the caller names; there is no sending, payment, or messaging tool in the surface.

Tools

  • scan_url — scan a public page and report its link-preview (Open Graph / Twitter Card) metadata, previews per platform, and issues with fix suggestions. Required: url.

  • generate_og_image — render a 1200x630 Open Graph image from a template. Required: templateId. Optional: params (text values such as title and subtitle) and exp (Unix seconds; makes the signed URL expire, paid plans). Returns the permanent image URL and whether it was already cached.

  • create_template_from_url — use AI to design a new OG image template from a website's brand (logo, colors, fonts). Required: url. Returns the chosen layoutId, the variables to pass, and the extracted brand kit.

  • list_templates — list the OG image templates the workspace can render (built-in and custom) with id, name, version and dimensions. Takes no arguments; call it before generate_og_image to pick a templateId.

  • create_short_link — create a short link with its own link preview. Required: destination. Optional: slug and up to three A/B variants. Returns id, shortUrl and variants.

  • get_link_stats — get click analytics for a short link: totals plus breakdowns by day, country, device, browser and referrer. Required: linkId. Optional: from / to dates (YYYY-MM-DD).

  • refresh_preview — force social platforms to re-fetch a page's link preview after its OG tags or image changed. Required: url.

Related MCP server: OpenUnfurl

Configuration

  • SHAREGLOW_MCP_URL (optional) — override the upstream endpoint. Defaults to https://mcp.getshareglow.com/mcp. (The override hook is this rebuild's own labelled reconstruction.)

  • SHAREGLOW_API_KEY (optional) — when set, every upstream request carries an Authorization: Bearer <key> header, for the caller's own Shareglow key (an sk_live_... key created in the caller's Shareglow dashboard). When it is not set, no key header is sent. (The header name and the Bearer template are pinned by the original's registry record; forwarding the key from this env var is a labelled reconstruction — the original surface was captured keyless.)

Forwarding mechanics

On the first tool call the client opens a streamable HTTP session with the upstream: a JSON-RPC initialize request (protocolVersion 2025-03-26, clientInfo name previewglow), then a notifications/initialized notification, then the tools/call request carrying the caller's arguments unchanged. When the upstream answers initialize with an Mcp-Session-Id header, that value rides on every later request of the session, which is reused for the life of the process. Replies may arrive as plain JSON or as server-sent events; both are read.

Successful upstream results pass through verbatim, including any isError flag the upstream sets. Failures — a JSON-RPC error, a non-2xx status, an unreadable response, or a request that cannot be completed — come back as an isError result whose text starts with previewglow error: (this rendering is this rebuild's own labelled reconstruction).

CLI

Each tool is also a subcommand taking one JSON argument string:

npx @reneturcios/previewglow scan_url '{"url":"https://example.com/landing"}'
npx @reneturcios/previewglow get_link_stats '{"linkId":"lnk_abc-123"}'
npx @reneturcios/previewglow --version

Exit codes: 0 on success, 1 on an isError result, 2 on a usage error.

MCP server

npx -y @reneturcios/previewglow mcp

MCP client config:

{
  "mcpServers": {
    "previewglow": {
      "command": "npx",
      "args": ["-y", "@reneturcios/previewglow", "mcp"]
    }
  }
}

Docker

docker run -i ghcr.io/cloudcorprecords/previewglow
docker run --rm ghcr.io/cloudcorprecords/previewglow --version

The container's default command is mcp, so the first form is a stdio MCP server; any other arguments reach the CLI normally.

Development

npm install
npm run build
npm test
npm run dev

The test suite runs entirely against a stubbed JSON-RPC upstream — no live network calls.

License

MIT — see LICENSE.

Related MCP Connectors

Related MCP Servers