mcpField
P
PasteHTML

PasteHTML

リモート
pastehtml.devファイル・ストレージ1015 週間前に更新
リポジトリ公式サイト

PasteHTML について

PasteHTML は HTML と Markdown を共有ページとして公開し、アカウント内のフォルダー、更新、閲覧数の確認に対応します。リモート MCP サーバーでは、ブラウザーで OAuth 認可したエージェントがペーストやフォルダーを管理できます。

主な機能

  1. 01HTML と Markdown の公開
  2. 02既存ペースト内容の更新
  3. 03ペーストのフォルダー整理
  4. 04パスワードとカスタムサブドメインの設定
  5. 05ペースト情報と統計の確認

活用シーン

  1. 01エージェントが作成した設計文書を共有
  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 ファイルをアップロードすると、友人が開いてプレビューしたり、ソースを表示したりできる非公開リンクが発行されます。匿名での公開も引き続き利用でき、アカウントを作成すると、フォルダー、カスタムサブドメイン、閲覧数、ブラウザーからの再アップロードによる更新機能、フォルダーへのエージェント公開用アカウント API キーが利用できます。

仕組み

  • .html/.htm ファイルをドラッグ&ドロップするか、参照してアップロードします。ファイルサイズの上限は 2 MB です。
  • ドキュメントは https://<token>.pastehtml.dev/ で公開されます。取得済みのカスタムサブドメイン(https://launch-plan.pastehtml.dev/ など)でも公開できます。リンクのコピー、プレビュー、ハイライト表示されたソースを利用できるインスペクターページは /p/<token> にあります。トークンはランダムな 32 文字の小文字英数字 ID(約 165 ビットのエントロピー)です。サブドメインとしても使われ、ブラウザーがホスト名を小文字に変換するため、小文字のみを使用しています。リンクを共有しない限り、ランダムなリンクは非公開です。
  • ペーストはパスワードで保護できます。ロックされたペーストは、インスペクターページ、未加工バイト列、レンダリング済みプレビュー、ライブサブドメインを表示する前にパスワードが必要です。
  • サインインしたユーザーは、ペーストをフォルダーに保存したり、閲覧数を確認したり、共有リンクを変更せずに新しい .html/.htm ファイルを再アップロードして置き換えたりできます。ペーストは削除できません。API で作成した更新トークンを使った、トークンベースの自動更新も引き続き利用できます。
  • 共有ページでは、ライブプレビュー(サイト内の全画面表示モード付き)と、Rouge でハイライト表示されたソースを利用できます。
  • 各ペーストは、それぞれ固有のオリジン(https://<token>.pastehtml.dev/)から実際のページとして配信されます。そのため、他のペーストやアプリ本体から完全に分離された状態でスクリプトや localStorage が動作し(レビュー進捗チェックリストが保持されます)、パスベースの /p/<token>/raw エンドポイントはペーストの正確なバイト列を text/plain として返します。CDN による転送中の HTML 書き換えの影響を受けない、プログラム用クライアント向けのバイト単位で正確なコピーです。一方、/p/<token>/render は同じバイト列を CSP sandbox 内で text/html として配信します。

エージェント API

ブラウザーを使わずに公開できます。デザインドキュメントや実装計画を作成し、共有リンクを渡したい AI エージェントに最適です。認証情報なしの匿名公開も引き続き利用できます。サインインしたユーザーは /api_keys でアカウント API キーを作成でき、エージェントが自分のアカウントに公開し、対象のフォルダーを指定できます。

# 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 } を返します(または { errors } と 422 を返します)。アカウントキーで作成した場合は同じペーストフィールドを返しますが、update_token は含まれません。アカウント所有のペーストを更新する際はアカウントキーを使用してください。キーを取り消すと、そのエージェントは以後アクセスできなくなります。作成/更新リクエストに password=<secret>(またはアカウントキーが必要な custom_subdomain=<name>)を追加できます。更新時に clear_password=1 を送信すると、ペーストのパスワードを削除できます。raw_url を取得すると、ペーストの正確なバイト列を読み取れます(text/plain として返され、転送中に書き換えられることはありません)。

エージェント向けアカウント API キー

サインイン済みのユーザーは、ダッシュボードからAPI キーを開き、キーを作成して、そのシークレットをエージェントに渡せます。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 を通じてそのフォルダーのみを一覧表示でき、関連のないフォルダーは作成できません。フォルダーが削除されると、スコープ付きキーは自動的に失効します。スコープなしのエージェントは、次の方法で既存のフォルダー ID を取得できます。

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

スコープなしのキーでは、入れ子形式のフォームパラメーター(folder[name]=Roadmap)またはシンプルなトップレベルの name=Roadmap のどちらでもフォルダーを作成できます。クライアントで使いやすい形式を選んでください。フォルダースコープ付きキーでフォルダーを作成すると、403 が返されます。

アカウントキーでは、そのアカウントが所有するペーストを更新できます。一方、ペーストが匿名のままであれば、ペーストごとの update_token を使う方法も引き続き利用できます。エージェントが匿名のペーストをアカウントに紐付ける必要がある場合は、アカウントキーを Authorization: Bearer ... に指定し、ペーストのシークレットを X-Update-Token: ... として別途送信してください。紐付けは一方向です。紐付け後はアカウントキーがペーストの更新認証情報となり、古いトークンは使えなくなります。

update_token は一度だけ表示されます。サーバーにはダイジェストのみが保存され、ペーストが匿名のままであれば、何度でもインプレース更新を認証できます。

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

更新では作成時と同じ2種類の本文形式を受け付け、更新後の { token, title, custom_subdomain, folder, owner, account_paste, password_protected, views_count, live_url, url, raw_url, render_url, markdown_url } を含む 200 を返します。更新トークンが誤っている、または指定されていない場合や、アカウントキーがペーストを所有していない場合は 403、ペーストが見つからない場合は 404 を返します。ペーストの公開/更新エンドポイントは、IP ごとに1分あたり20リクエスト、1日あたり1,000リクエストにレート制限されています。フォルダー API エンドポイントにもアカウントキーが必要で、IP ごとのレート制限が適用されます。

エージェントはこれらすべてを自分で確認できます。統合ガイド全文は /llms.txt にあります(ホームページからも、画面上のリンクと raw fetcher 向けの HTML コメントの両方で案内されています)。エージェントには「pastehtml.dev にこれを公開して」と伝えるだけで十分です。

MCP サーバー

Model Context Protocol を話すエージェント向けに、pastehtml.dev は https://pastehtml.dev/mcp にもリモート MCP サーバー(Streamable HTTP)を用意しています。pht_ キーの代わりに、エージェント作成者はブラウザー経由の OAuth で一度認証すると、アカウント内で操作できます。ダッシュボードと同じフォルダー、閲覧数、永続的なペーストを利用できます。

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

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

初回利用時にクライアントでブラウザーの同意画面が開きます。承認するとエージェントが接続されます。キーをコピーしたり保存したりする必要はありません。認証には、mcp:read、mcp:pastes:write、mcp:folders:write をスコープとする OAuth 2.1、PKCE、RFC 7591 Dynamic Client Registration を使用します。ダッシュボードの Connected agents から、接続済みのエージェントをいつでも確認または取り消せます。

10 個のツールが公開されています(ペーストは永続的なため、ペーストを削除するツールはありません)。

  • create_paste — 新しい HTML または Markdown のペーストを公開します。必要に応じてフォルダーに追加できます。
  • update_paste — 既存のペーストの内容を再公開します(その場で上書きします)。
  • configure_paste — ペーストのパスワード、カスタムサブドメイン、またはフォルダーを変更します。
  • get_paste — 1 件のペーストのメタデータ、URL、保存された内容を取得します。
  • get_paste_stats — ペーストの閲覧分析データを集計します。
  • list_pastes — アカウントのペーストをページごとに取得します。必要に応じてフォルダーで絞り込めます。
  • list_folders — フォルダーと、それぞれに含まれるペースト数を一覧表示します。
  • create_folder — 新しい空のフォルダーを作成します。
  • rename_folder — フォルダーの名前を変更します。
  • delete_folder — フォルダーを削除します(その中のペーストは削除されず、フォルダーに未分類の状態で残ります)。

本番環境では、MCP_DYNAMIC_REGISTRATION_DISABLED 環境変数を使用して Dynamic Client Registration を無効にできます(登録済みのクライアントは引き続き動作します)。デプロイをスモークテストするには、ディスカバリードキュメントを取得します。

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、PostgreSQL には Docker Compose を使用
  • コミックブック風デザイン:Inter の上に Bangers のディスプレイ書体を配置し、ハーフトーンテクスチャ、インクで縁取ったパネル、くっきりしたオフセットシャドウを採用
  • インストール可能な PWA:マニフェストと、オフライン時のフォールバックページを備えた最小限のネットワーク優先サービスワーカー(ペースト自体はキャッシュされません)
  • meta-tags による SEO(ブランドロゴ入り OG 画像、OG/Twitter カード、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

デプロイ

GitHub Actions の「Kamal Run」ワークフローから Kamal を使って、単一サーバーにデプロイします。構成はアプリコンテナと 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 モードを Full (strict) に設定します。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 ビルダーキャッシュのブロックを削除します。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。