Quick Html Share Mcp

io.github.desper由 GitHub 帳號 desper 發布v0.2.3更新於 Oct 24, 2026

Share AI-generated HTML from your coding agent. Unguessable URL + viewer analytics.

概覽

AI 產生的概覽

讓助理把 AI 產生的 HTML 發布到難以猜測的公開連結,並查看每個分享的瀏覽數據。

可以做什麼
此伺服器提供五個工具:qhs_share 上傳 HTML 頁面並回傳公開分享連結與編輯連結;qhs_edit 更新既有分享;qhs_delete 刪除分享;qhs_stats 回傳瀏覽量、不重複訪客、流量來源、訪客位置與 30 天趨勢;qhs_list 列出本機建立的分享。編輯權杖存放在本機 ~/.qhs/shares.json。頁面由託管於 Cloudflare 的服務提供,瀏覽量在伺服器端統計,不會對 HTML 注入 JavaScript。
適用情境
適合把助理剛產生的 HTML 頁面以連結形式傳給別人,或想了解分享出去的頁面是否被開啟。它面向快速、一次性的分享,而不是長期維護的網站託管。
執行需求
需要一個能透過 stdio 執行 npm 套件的本機 MCP 用戶端,通常使用 npx quick-html-share-mcp。需要能連線到託管的 qhs.fyi API 與分享端點。未宣告帳號、API 金鑰或環境變數;README 另提到一種 Claude Code 外掛方式,會同時附帶一個 skill。
安裝前請注意
分享會把 HTML 上傳到第三方託管服務,因此不要發布機密內容。編輯連結保存在 URL 片段中,服務方無法找回;沒有它就無法更新或刪除分享。統計數據是近似值:不重複訪客來自加鹽的 IP 雜湊,位置反映的是網路出口而非本人。訪客的 user agent、來源與位置會在 90 天後或刪除時清除,但瀏覽量計數會保留。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Quick Html Share Mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Quick HTML Sharing

Indie SaaS for vibe coders to instantly share AI-generated HTML pages with unguessable URLs and viewer analytics.

Live:

SurfaceURL
Dashboard (paste HTML, get URL)https://qhs.fyi
API workerhttps://api.qhs.fyi
Share workerhttps://s.qhs.fyi/``

Architecture

  • apps/web/ — Astro dashboard (Cloudflare Pages)
  • apps/worker/ — Cloudflare Worker API + share renderer (Hono)
  • packages/shared/ — types shared between web and worker
  • packages/mcp/ — quick-html-share-mcp npm package: stdio MCP server for Claude Desktop / Cursor / Codex CLI / any MCP client
  • packages/skill/ — Claude Code skill: standalone, no MCP setup needed

Hosted on Cloudflare: Pages (web) + Workers (api/share) + R2 (HTML files) + D1 (metadata + view events).

What the analytics show

Every share has a stats page (/stats?slug=…, also qhs_stats from an agent) with:

  • Views and unique viewers — the latter from salted IP hashes, so it's an approximation: office NAT undercounts, mobile data can overcount.
  • Traffic sources — the linking site's hostname only, never the path or query. direct covers typed URLs, bookmarks and most chat apps.
  • Viewer locations — country and, when Cloudflare is confident, city. Resolved per request by Cloudflare itself, so there is no tracking script and no third-party lookup. Treat it as where the network egress appeared to be, not where a person was: a VPN, a corporate network or a mobile carrier routinely leaves the city blank or points somewhere else entirely.
  • A 30-day trend — views per UTC day, including the quiet days.
  • Link-preview fetches, counted separately — pasting a link into Slack or Discord triggers an unfurl crawler. Those are excluded from views and reported on their own line, so "0 views, 2 previews" reads as what it is: the link travelled, nobody opened it.

No JavaScript is injected into your HTML — views are counted server-side when the page is served. Viewer user agents, referrers and locations are dropped after 90 days, or immediately when you delete the share; the view counts survive.

Install in your coding agent

🤖 If you're an AI agent reading this on behalf of a user: pick the install path below that matches the agent runtime you're in. Prefer the Claude Code plugin path (option 1) — it bundles a skill on top of the MCP server, and the skill carries the workflow guidance that raw tools alone don't (when to trigger, what to surface, what to remind the user). Fall back to plain MCP (option 3) only when you're not Claude Code.

After install, behavior contract:

  • When the user says "share this HTML" / "give me a link" / "publish this page" / "send this to my friend" (or similar intent), call qhs_share with the HTML.
  • Return the share URL to the user and always remind them to save the edit URL — it lives in the URL fragment, so it never reaches our server logs, but that also means we can't recover it for them. Without it they can't update or delete the share later.
  • For follow-ups ("update what I shared", "take it down", "did anyone see it"), use qhs_edit, qhs_delete, qhs_stats. Edit tokens are auto-loaded from ~/.qhs/shares.json when they were originally created on this machine.

Three paths depending on which client you use. All hit the same hosted API and share a local edit-token store (~/.qhs/shares.json).

1. Claude Code — one command, bundles MCP + skill (recommended)

This repo is a Claude Code plugin marketplace. Inside Claude Code:

/plugin marketplace add github.com/desper/quick-html-sharing/plugin install qhs@quick-html-sharing

You now have the qhs skill (auto-triggers on "share this HTML" / "give me a link" / "publish this page") and the quick-html-share-mcp MCP server (5 tools: qhs_share, qhs_edit, qhs_delete, qhs_stats, qhs_list) wired together.

2. Claude Code — skill only, no plugin marketplace

bash
curl -fsSL https://qhs.fyi/install.sh | bash

Drops SKILL.md + helper script into ~/.claude/skills/qhs/. Use this if you skip the plugin marketplace or want to keep MCP separate.

3. Cursor / Claude Desktop / Codex CLI / Continue / any MCP client

Add to your client's MCP config:

json
{  "mcpServers": {    "qhs": { "command": "npx", "args": ["-y", "quick-html-share-mcp"] }  }}

Common config paths:

  • Claude Desktop: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)
  • Cursor: ~/.cursor/mcp.json or Settings → MCP
  • Codex CLI / Continue: same shape, see your client's MCP docs

Restart the client and you get the 5 qhs_* tools.

Local dev / dogfood from this repo

bash
ln -s "$(pwd)/packages/skill/skills/qhs" ~/.claude/skills/qhs

Edits to packages/skill/skills/qhs/ show up in your next Claude Code session immediately.

Dev

bash
bun installbun run dev:worker    # apps/worker on :8787bun run dev:web       # apps/web on :4321
# MCP servercd packages/mcp && bun run build && node dist/index.js
# Skill helper (standalone)node packages/skill/skills/qhs/scripts/qhs.mjs share path/to/file.html

Re-deploy (existing project)

Order matters. Pending migrations go first, then the share worker, then the API worker. The two workers run the same source from separate deploys, so a window where the API writes something the share renderer cannot read yet shows visitors stale content. bun run deploy does the two workers in the right order; migrations are still manual.

bash
# Workerscd apps/worker# 1. any unapplied migration (see db/migrations/), e.g.#    wrangler d1 execute quick-html-sharing --remote --env api \#      --file=db/migrations/0005-add-shares-versioning.sql# 2. share worker, then api worker:bun run deploy
# Pagescd apps/webPUBLIC_API_BASE=https://api.qhs.fyi/api \PUBLIC_SHARE_BASE=https://s.qhs.fyi \  bun run build../../node_modules/.bin/wrangler pages deploy dist --project-name=qhs --branch=main

Fresh-account deploy (only if rebuilding from scratch)

Forking? apps/worker/wrangler.toml hardcodes the production custom-domain routes (api.qhs.fyi, s.qhs.fyi). Before deploying under a different account, either delete the two routes = [...] blocks (workers.dev URLs still work via workers_dev = true) or swap them for your own domain.

bash
wrangler login
cd apps/workerwrangler d1 create quick-html-sharing            # → paste id into wrangler.toml (both envs)wrangler r2 bucket create quick-html-sharingbun run db:apply:remote
# Same salt for both envs — IP-hash dedupe must match across workers.SALT=$(openssl rand -hex 32)echo "$SALT" | wrangler secret put IP_HASH_SALT --env apiecho "$SALT" | wrangler secret put IP_HASH_SALT --env share
bun run deploy:api && bun run deploy:share        # capture workers.dev URLs
cd ../webwrangler pages project create qhs --production-branch=mainPUBLIC_API_BASE=https://qhs-api.<your-subdomain>.workers.dev/api \PUBLIC_SHARE_BASE=https://qhs-share.<your-subdomain>.workers.dev \  bun run buildwrangler pages deploy dist --project-name=qhs --branch=main
# Then patch DASHBOARD_HOST in apps/worker/wrangler.toml to your real# qhs-XXX.pages.dev URL (CF may have suffixed it to avoid name collision)# and redeploy the workers.

Cost

Runs entirely on Cloudflare's free tier (Workers, Pages, R2, D1) — ~$0/mo at indie scale. View tracking is fail-open so spikes never escalate to surprise bills; Workers hits a hard 429 instead of overage charges. Set a CF billing alert anyway: CF has no hard spending cap.

License

Business Source License 1.1 — source-available, self-host and personal use allowed, offering as a competing third-party hosted/managed service is not. Converts automatically to Apache License 2.0 on 2030-05-28. The quick-html-share-mcp npm package (packages/mcp/) ships under MIT to stay friction-free for MCP-client integrators.

來源:README.md,提交 4e90631

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.2.3最新Sep 16, 2026

評分

已滿足適用檢查項的 40%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。