mcpField
P
PasteHTML

PasteHTML

远程服务
pastehtml.dev文件与存储1015 周前更新

关于 PasteHTML

PasteHTML 将 HTML 和 Markdown 内容发布为可分享页面,并提供账户文件夹、内容更新和浏览量统计。其远程 MCP 服务通过浏览器 OAuth 授权,让 Agent 管理账户中的粘贴内容和文件夹。

主要功能

  1. 01发布 HTML 和 Markdown 内容
  2. 02更新现有粘贴内容
  3. 03将内容归入文件夹
  4. 04设置密码和自定义子域名
  5. 05查看内容信息和统计数据

适用场景

  1. 01分享 Agent 生成的设计文档
  2. 02更新已发布方案并保留原链接
  3. 03整理账户中的项目内容
  4. 04查看内容浏览统计

MCP 相关

PasteHTML 通过 Streamable HTTP 提供远程 MCP 服务。客户端经 OAuth 授权后,可创建、更新、配置、获取和列出粘贴内容,查看统计数据并管理文件夹。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://pastehtml.dev/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

pastehtml.dev — 数秒内分享 HTML

pastehtml.dev

数秒内分享 HTML 页面。上传 HTML 文件,即可获得一个私人链接,朋友可以打开、预览并查看源代码。匿名发布仍然可用;注册账号后,还可使用文件夹、自定义子域名、浏览次数统计、基于浏览器重新上传更新,以及用于 Agent 向文件夹发布内容的账号 API 密钥。

工作原理

  • 拖放(或浏览选择)不超过 2 MB 的 .html/.htm 文件。
  • 文档会发布到 https://<token>.pastehtml.dev/,也可以发布到已认领的自定义子域名(例如 https://launch-plan.pastehtml.dev/);/p/<token> 处提供检查页面(复制链接、预览、高亮显示的源代码)。 Token 是随机的 32 位小写字母数字 ID(约 165 位熵——使用小写是因为它们也会用作子域名,而且浏览器会将主机名转换为小写),因此随机链接除非被分享,否则是私密的。
  • 粘贴内容可以设为密码保护。访问受锁定的粘贴内容之前,必须先输入密码;在此之前,检查页面、原始字节、渲染预览或实时子域名均不会提供。
  • 已登录用户可以将粘贴内容保存到文件夹、查看浏览次数统计,并重新上传替换的 .html/.htm 文件,而不更改分享链接。粘贴内容无法删除。通过 API 创建的更新 Token 仍可用于基于 Token 的自动更新。
  • 分享页面提供实时预览(支持站内全屏模式)和由 Rouge 高亮显示的源代码视图。
  • 每个粘贴内容都会作为来自其自身源的真实页面提供——https://<token>.pastehtml.dev/——因此脚本和 localStorage 均可正常工作(审阅进度清单会保留),同时与其他粘贴内容及应用本身完全隔离。基于路径的 /p/<token>/raw 端点会以 text/plain 返回粘贴内容的精确字节——为程序化客户端提供逐字节一致的副本,不受传输过程中 CDN 重写 HTML 的影响;/p/<token>/render 则会在 CSP sandbox 中以 text/html 提供相同字节。

Agent API

无需浏览器即可发布——非常适合生成设计文档或实施计划,并希望返回分享链接的 AI Agent。匿名发布仍可在无需凭据的情况下使用;已登录用户也可以在 /api_keys 创建账号 API 密钥,让 Agent 向其账号发布内容并指定目标文件夹。

# Multipart upload
curl -F "[email protected]" https://pastehtml.dev/api/pastes

# Or stream the HTML straight from a pipe
curl --data-binary @plan.html -H "Content-Type: text/html" \
  "https://pastehtml.dev/api/pastes?filename=plan.html"

匿名创建会返回 201 和 { token, title, custom_subdomain, folder, owner, account_paste, password_protected, views_count, live_url, url, raw_url, render_url, markdown_url, update_token } (或者返回 422 和 { errors })。使用账号密钥创建会返回相同的粘贴内容字段,但不包含 update_token;使用账号密钥更新账号所有者的粘贴内容,这样撤销密钥后,Agent 就无法继续访问。创建/更新请求中可添加 password=<secret>(或 custom_subdomain=<name>,后者需要账号密钥);更新时发送 clear_password=1 可移除粘贴内容的密码。获取 raw_url 可读回粘贴内容的精确字节(text/plain,传输过程中绝不会被重写)。

用于 Agent 的账户 API 密钥

已登录用户可以在控制面板中打开 API keys,创建密钥,并将该密钥提供给 Agent。可以通过 Authorization: Bearer pht_... 或 X-PasteHTML-API-Key: pht_... 使用。使用有效账户密钥调用 POST /api/pastes 时,粘贴内容归该用户所有,并会显示在其控制面板中。文件夹定位仅支持账户密钥:

curl -H "Authorization: Bearer $PASTEHTML_API_KEY" \
  --data-binary @plan.html -H "Content-Type: text/html" \
  "https://pastehtml.dev/api/pastes?filename=plan.html&folder_name=Roadmap"

使用 folder_name=<name> 查找或在该账户下创建文件夹,使用 folder_id=<id> 指定现有文件夹;更新时使用 clear_folder=1,可将粘贴内容移回“所有粘贴内容”。创建密钥时,也可以将其限定为默认文件夹;限定范围的密钥始终会在该文件夹中发布,只能更新该文件夹中已有的粘贴内容,会拒绝文件夹覆盖操作,只能通过文件夹 API 列出该文件夹的内容,也不能创建其他文件夹。删除文件夹时,限定范围的密钥会自动撤销。未限定范围的 Agent 可以通过以下方式查找现有文件夹 ID:

curl -H "Authorization: Bearer $PASTEHTML_API_KEY" \
  https://pastehtml.dev/api/folders

未限定范围的密钥可以通过嵌套表单参数(folder[name]=Roadmap)或简单的顶层参数 name=Roadmap 创建文件夹,客户端可任选其一。创建文件夹时,限定文件夹范围的密钥会收到 403 响应。

账户密钥可以更新归该账户所有的粘贴内容;只要粘贴内容仍为匿名状态,按粘贴内容使用 update_token 的流程也会继续有效。如果 Agent 需要将匿名粘贴内容认领到账户,请在 Authorization: Bearer ... 中发送账户密钥,并通过 X-Update-Token: ... 单独发送粘贴密钥。认领操作不可逆:此后账户密钥将成为该粘贴内容的更新凭据,旧令牌将失效。

update_token 仅会显示一次——服务器只存储其摘要——只要粘贴内容保持匿名,就可以使用它进行任意次数的原位更新:

curl -X PATCH -H "Authorization: Bearer $UPDATE_TOKEN" \
  -F "[email protected]" https://pastehtml.dev/api/pastes/$TOKEN

更新接受与创建相同的两种请求正文形式,并返回 200 以及刷新的 { token, title, custom_subdomain, folder, owner, account_paste, password_protected, views_count, live_url, url, raw_url, render_url, markdown_url };如果更新令牌错误或缺失,或账户密钥不属于该粘贴内容的所有者,则返回 403;如果粘贴内容不存在,则返回 404。粘贴内容发布和更新端点按 IP 限速,每分钟 20 次、每天 1,000 次;文件夹 API 端点也要求提供账户密钥,并按 IP 限速。

Agent 会自行发现所有这些信息:完整的集成指南位于 /llms.txt(首页也指向该指南,包括可见链接和 HTML 注释中的链接,方便原始内容抓取工具获取)。只需告诉 Agent“将此内容发布到 pastehtml.dev”即可。

MCP 服务

对于支持 Model Context Protocol 的 Agent,pastehtml.dev 也提供远程 MCP 服务,地址为 https://pastehtml.dev/mcp (Streamable HTTP)。Agent 无需使用 pht_ 密钥,而是通过 OAuth 在浏览器中授权一次,之后即可在你的账户中操作——使用与仪表板相同的文件夹、浏览量统计和永久粘贴内容。

# Claude Code
claude mcp add --transport http pastehtml https://pastehtml.dev/mcp

# Codex
codex mcp add pastehtml --url https://pastehtml.dev/mcp

首次使用时,客户端会打开浏览器授权页面;批准后,Agent 即会连接——无需复制或保存密钥。授权采用 OAuth 2.1、PKCE 和 RFC 7591 动态客户端注册,权限范围为 mcp:read、 mcp:pastes:write 和 mcp:folders:write。你可以随时在仪表板的已连接的 Agent下查看或撤销已连接的 Agent。

共提供十种工具(粘贴内容是永久的——没有删除粘贴内容的工具):

  • create_paste — 发布新的 HTML 或 Markdown 粘贴内容,可选择将其放入文件夹。
  • update_paste — 重新发布现有粘贴内容(在原位置覆盖)。
  • configure_paste — 更改粘贴内容的密码、自定义子域名或文件夹。
  • get_paste — 获取一条粘贴内容的元数据、URL 和存储内容。
  • get_paste_stats — 汇总一条粘贴内容的浏览量数据。
  • list_pastes — 分页列出账户中的粘贴内容,可按文件夹筛选。
  • list_folders — 列出文件夹及其粘贴内容数量。
  • create_folder — 创建一个新的空文件夹。
  • rename_folder — 重命名文件夹。
  • delete_folder — 删除文件夹(其中的粘贴内容会保留,并变为未归档状态)。

在生产环境中,可以使用 MCP_DYNAMIC_REGISTRATION_DISABLED 环境变量关闭动态客户端注册(已预注册的客户端仍可继续使用)。通过获取发现文档,对部署进行冒烟测试:

curl https://pastehtml.dev/.well-known/oauth-protected-resource

技术栈

  • Ruby on Rails 8.1 · PostgreSQL · Hotwire(Turbo + Stimulus)
  • Tailwind CSS v4(cssbundling)· esbuild(jsbundling)· Yarn 4
  • 使用 mise 管理工具,使用 Docker Compose 运行 PostgreSQL
  • 漫画风格设计:Bangers 展示字体搭配 Inter、半色调纹理、带硬偏移阴影的墨线描边面板
  • 可安装的 PWA:manifest + 极简的网络优先 service worker,并提供离线备用页面(粘贴内容本身永远不会被缓存)
  • 使用 meta-tags 实现 SEO(OG/Twitter 卡片,含品牌 OG 图片、canonical、粘贴页面设为 noindex),并提供漫画风格的静态错误页面

开发

mise run dev        # starts postgres (docker), installs deps, prepares db, runs bin/dev

或者按步骤操作:

mise run docker:start   # postgres on localhost:5435
mise run deps           # bundle install + yarn install
mise run db:prepare
bin/dev                 # rails server + js/css watchers on port 3000

测试与 lint

mise run test   # rails test
mise run lint   # rubocop + brakeman

部署

使用 Kamal,通过 GitHub Actions(“Kamal Run”工作流)部署到单台服务器:应用容器和一个 postgres 18 附属服务。db/production.sql 会在该附属服务首次启动时创建 Solid Cache/Queue 数据库。粘贴内容通过 <token>.pastehtml.dev 子域名提供,因此代理会将通配符域名指向该服务,并使用 Cloudflare Origin CA 证书(通配符域名无法通过 HTTP-01 获取 Let's Encrypt 证书)。

一次性设置:

  1. Cloudflare(免费套餐):为 pastehtml.dev、www 添加代理 A 记录,并添加代理通配符 * 记录,全部指向服务器。将 SSL/TLS 模式设为完全(严格)。为 pastehtml.dev, *.pastehtml.dev 创建 Origin Server 证书,并保留 PEM 证书和密钥。
  2. 仓库 Actions 密钥:SERVER_IP、SSH_PRIVATE_KEY(对服务器的 root 访问权限)、RAILS_MASTER_KEY(来自 config/master.key)、POSTGRES_PASSWORD、CLOUDFLARE_ORIGIN_CERTIFICATE 和 CLOUDFLARE_ORIGIN_KEY(Origin CA PEM 证书和密钥)。容器注册表(ghcr.io)使用工作流自身的 GITHUB_TOKEN 进行身份验证。
  3. 运行一次 Kamal Run 工作流,并使用命令 setup(配置 postgres + 代理),之后每次发布都使用 deploy。

在本地运行 kamal 命令时,将 Origin CA 证书和密钥放入 .kamal/certs/origin.pem / origin-key.pem(已加入 gitignore),导出 SERVER_IP 和 POSTGRES_PASSWORD;如果需要在本地构建镜像,请从 config/deploy.yml 中移除 GHA 构建器缓存区块。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。