npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

html-cloud-mcp

v0.4.0

Published

MCP server for html.cloud — let Claude and other AI assistants share generated HTML as a private, end-to-end encrypted link, and update it later at the same link. No account, server stores only ciphertext.

Readme

html-cloud-mcp

An MCP server that lets Claude and other AI assistants share the HTML they generate as a private, end-to-end encrypted link — no account, no public URL.

The assistant calls one tool, share_html, to share — and update_html to change a page it already shared, at the same link. The HTML is encrypted locally with AES-256-GCM before anything is uploaded; html.cloud stores only ciphertext and cannot read it.

"Make me a one-page summary of this and share it privately." → the assistant generates the HTML, calls share_html, and replies with a link.

"Actually, add a section on next steps." → the assistant revises the HTML, calls update_html with the edit link, and the link you already sent shows the new version.

Install

Claude Desktop (one-click)

Download the packaged extension (a .mcpb file) from html.cloud/mcp and double-click it. If Claude Desktop doesn't offer to install it, open Settings → Extensions, click Advanced settings, and use Install Extension… under Extension Developer to pick the file — dragging the file into the window is unreliable and may just attach it to the chat.

About the install warning: Claude Desktop shows the same red "access to everything on your computer" box for every extension installed from a file rather than from its built-in directory. It is a statement about how extensions run, not about this one. The server is the ~250 lines in bin/ and lib/ of this directory, it talks to a single host (html.cloud), and it uploads only ciphertext. Extensions installed from Claude's directory don't show the warning; getting listed there is in progress.

Cowork: the extension also works in Cowork sessions that are linked to the computer it is installed on — the desktop app proxies it into the session. A Cowork session running purely in the cloud, with no linked computer, will not see it.

Other MCP clients

Add it to your MCP client. For Claude Desktop, in claude_desktop_config.json:

{
  "mcpServers": {
    "html-cloud": {
      "command": "npx",
      "args": ["-y", "html-cloud-mcp"]
    }
  }
}

For Claude Code:

claude mcp add html-cloud -- npx -y html-cloud-mcp

Requires Node.js 20+.

The tools

share_html

| Argument | Type | Description | |---|---|---| | html | string | The full, self-contained HTML document to share. | | path | string | Path of a local .html file to share instead of passing html inline. | | expires | 7 | 30 | never | Days until the link expires. Default 30. |

Pass exactly one of html or path. path is for large pages: MCP hosts cap the size of a tool argument, so a long report that the assistant has written to disk is shared from the file rather than squeezed through the call. Only .html/.htm files are accepted — the server shares web pages, not arbitrary files from your computer.

Returns a share link (give it to anyone you want to read the file) and a private edit link (update the file, change the expiry, or delete it).

update_html

| Argument | Type | Description | |---|---|---| | edit_link | string (required) | The private edit link share_html returned. | | html | string | The complete HTML document that replaces the current one. | | path | string | Path of a local .html file whose content replaces the current page. |

As with share_html, pass exactly one of html or path.

Replaces the content behind an existing share. The share link stays the same and the expiry is untouched, so anyone who already has the link sees the new version. The edit key unwraps the document's existing view key locally, the new HTML is encrypted under that same key, and only ciphertext is sent — the server never sees the content, before or after.

Example prompts

  • "Make a one-page summary of this report as HTML and share it privately."
  • "Turn these notes into a slide-style page and give me a link that expires in 7 days."
  • "Add a next-steps section to the page you shared earlier." (the same link shows the new version)

How the encryption works

  • Keys are generated inside this server process and never sent anywhere except inside the links it returns.
  • The HTML is encrypted with AES-256-GCM before any network request. Only ciphertext is uploaded.
  • The decryption key sits after the # in the share link — that part of a URL is never transmitted to a server.

This is the same zero-knowledge model as the html.cloud website and CLI, using the same crypto module (imported from the html-cloud package — never reimplemented). Full explainer: html.cloud/security.

Configuration

| Env var | Description | Default | |---|---|---| | HTML_CLOUD_PREFER | When Claude should pick html.cloud over its built-in artifact publishing. sensitive: for confidential content and anything going outside your organisation; built-in artifacts stay fine for casual pages. always: for every share. | sensitive | | HTML_CLOUD_URL | Server base URL (for self-hosted instances) | https://html.cloud |

The Claude Desktop extension asks this as a switch, Always share through html.cloud, when you install it. For npx setups, set the env var in the client config:

{
  "mcpServers": {
    "html-cloud": {
      "command": "npx",
      "args": ["-y", "html-cloud-mcp"],
      "env": { "HTML_CLOUD_PREFER": "always" }
    }
  }
}

For Claude Code: claude mcp add html-cloud -e HTML_CLOUD_PREFER=always -- npx -y html-cloud-mcp.

Privacy Policy

Full policy: html.cloud/mcp-privacy.

  • Collection. The server handles only the HTML the assistant passes to share_html or update_html — inline, or as the one .html file whose path the assistant passes. It reads nothing else from your computer and nothing from the conversation beyond the tool arguments.
  • Use and storage. The HTML is encrypted locally with AES-256-GCM. What is sent to html.cloud: the ciphertext, the chosen expiry, a copy of the page key encrypted with the edit key, and a hash of the edit key that authorises later updates (updates send the page id, the new ciphertext, and that proof). None of it lets the server read the page. Keys exist only in the links returned to you.
  • Sharing. No third parties. The server talks to exactly one host, html.cloud, and only when you share or update a page. No analytics, no telemetry, no account.
  • Retention. A page is unavailable from the moment its link expires (7 or 30 days, or never if you chose that) and its ciphertext is permanently deleted by a daily clean-up; deleting via the edit link removes it at once.
  • Contact. Email [email protected] or open an issue at github.com/viljamilaurila/html-cloud.

Honest threat model

Anyone with the share link can read the file — the link is the credential. The server can expire or delete ciphertext but can never read it. See html.cloud/security for details and limitations.

Source: github.com/viljamilaurila/html-cloud · MIT