mcpField
S
Swolvy

Swolvy

リモート
swolvy.comクラウド・インフラ06 日前に更新
リポジトリ公式サイト

Swolvy について

SwolvyはHTMLページを共有リンクとして公開し、任意でパスワードを設定できます。アカウントなしで利用でき、公開後もリンクを変えずにページを差し替えられるため、AIクライアントで生成したページの公開に向いています。

主な機能

  1. 01HTMLを共有リンクとして公開
  2. 02任意のパスワード保護
  3. 03リンクを維持したページ差し替え
  4. 04大容量ファイル用アップロードセッション
  5. 05アカウントとチームの管理ツール

活用シーン

  1. 01AIクライアントが生成したHTMLページの共有
  2. 02パスワードが必要なページの公開
  3. 03リンクを変えずに公開ページを更新
  4. 04アカウント内の公開ページ管理

MCP 対応

`https://swolvy.com/api/mcp` のリモートMCPサーバーはHTML公開ツールを提供し、アカウント連携時にはアカウントやチームの管理ツールも利用できます。Streamable HTTPとOAuth 2.1を使用します。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://swolvy.com/api/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 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

詳細

Swolvy MCP サーバーとスキル:Claude、ChatGPT、Gemini、コーディングエージェントから HTML を公開する

Swolvy は HTML ファイルを共有可能なリンクに変換します。swolvy.com にファイルをドロップするか、AI アシスタント(Claude、ChatGPT、Gemini)やコーディングエージェントに公開を任せると、必要に応じてパスワード保護も設定できる短いリンクを取得できます。登録は不要です。リンクを変えずに後からページを差し替えることもでき、Swolvy Pro では有効期限のないページ、最大 100 MB のファイル、独自ドメインが利用できます。

このリポジトリは、AI アシスタントが Swolvy を通じて公開する 2 つの方法を公開しています。

  • Claude、ChatGPT、Gemini、Claude Code、Cursor、その他の MCP クライアントに対応する、https://swolvy.com/api/mcp のリモート MCP サーバー
  • HTTP API を利用する Claude Code 向けの swolvy スキル。場所は skills/swolvy です

Swolvy 本体はこのリポジトリには含まれていません。server.json は MCP Registry の形式でサーバーを記述しています。

MCP サーバーを追加する

1 つのアドレスで、OAuth サインインが可能です。API キーは不要です。Swolvy アカウントがなくてもサーバーを利用できます。匿名でアップロードすると、リンクと編集トークンが返されます。サインイン時にコネクターを Swolvy アカウントにリンクすることもでき、その場合はページがダッシュボードに保存され、以下のアカウントツールも追加されます。

https://swolvy.com/api/mcp

トランスポートは、OAuth 2.1(動的クライアント登録と PKCE)を使用した Streamable HTTP です。

Claude(claude.ai とデスクトップ)
  1. 「Settings」を開き、「Connectors」を選択します。
  2. 「Add custom connector」を選択します。
  3. https://swolvy.com/api/mcp を貼り付けて確定します。
  4. 求められたらサインインします。アカウントを使わずに続行するか、Swolvy アカウントをリンクできます。
Claude Code
claude mcp add --transport http swolvy https://swolvy.com/api/mcp

Claude Code 内で /mcp を実行して、OAuth サインインを完了します。すべてのプロジェクトでサーバーを利用できるようにするには、--scope user を追加します。

ChatGPT

chatgpt.com で「Plugins」、「+」、「Add custom MCP server」の順に選択します。アドレスを貼り付け、認証方式として OAuth を選択してから、プラグインをインストールします。デスクトップアプリの「Add MCP server」フォーム(Streamable HTTP)も利用できますが、アカウントのリンクには対応していません。

Cursor

プロジェクト内の .cursor/mcp.json にサーバーを追加するか、すべてのプロジェクトで利用する場合は ~/.cursor/mcp.json に追加します。

{
  "mcpServers": {
    "swolvy": {
      "url": "https://swolvy.com/api/mcp"
    }
  }
}
Gemini

Gemini アプリで「Settings & help」、「Connected Apps」、「Add a custom app」の順に選択し、アドレスを貼り付けます。

Gemini CLI の場合は、~/.gemini/settings.json にサーバーを追加します。

{
  "mcpServers": {
    "swolvy": {
      "httpUrl": "https://swolvy.com/api/mcp"
    }
  }
}
その他の MCP クライアント

同じアドレスを使用して、リモートサーバー(Streamable HTTP)を追加します。OAuth に対応するクライアントでは、ブラウザーからサインインできます。サーバーのメタデータは https://swolvy.com/.well-known/oauth-protected-resource/api/mcp で公開されています。

ツール

すべてのコネクターで、公開用の 4 つのツールを利用できます。Swolvy アカウントにリンクしたコネクターでは、アカウントツールも利用できます。アカウントが Swolvy Team に属している場合は、チームツールと workspace パラメーターも表示されます。

公開ツール(常に利用可能)
ツール用途主なパラメーター
upload_to_swolvy小さな HTML ページ(約 80 KB 未満)を一度の呼び出しで公開し、リンクを取得しますhtml_content(必須)、filename(必須、1~100 文字)、password(4~100 文字)、generate_password、replace_id + replace_edit_token、remove_password、path、title、description、workspace
start_swolvy_upload大きなページのアップロードセッションを開始します。upload_id、upload_url、max_bytes を返しますfilename(必須)、および upload_to_swolvy と同じオプションフィールド
append_swolvy_chunkHTTP リクエストを送信できないクライアント向けの代替手段です。ページを Base64 チャンクで送信しますupload_id(必須)、chunk_base64(必須、チャンクあたり約 50 KB の生バイトデータ)、is_final
finish_swolvy_uploadコンテンツの送信後、セッションを終了します。リンク、expires_at、edit_token を返しますupload_id(必須)

大きなファイルをアップロードする場合は、start_swolvy_upload を実行し、続いてファイル全体を upload_url に 1 回の PUT で送信して(例:curl -X PUT -H 'Content-Type: text/html' --data-binary @page.html <upload_url>)、最後に finish_swolvy_upload を実行する方法を推奨します。

パスワードの扱い:ユーザーがパスワードを指定した場合は password を渡し、保護のみを求めた場合は generate_password: true を渡します。すると Swolvy が覚えやすいパスワード(amber-river-42 など)を選び、password として返します。アシスタントはそのパスワードをユーザーに伝えます。ページは replace_id と replace_edit_token を使って最大 10 回置き換えられます。新しい password または remove_password: true が指定されない限り、新しいバージョンには現在のパスワードが引き継がれます。

アカウントツール(Swolvy アカウントに接続されたコネクター)
ツール用途主なパラメーター
list_my_filesアカウント内のページを、ID、リンク、パス、名前、閲覧数、サイズ、パスワードの状態、有効期限とともに一覧表示しますなし
update_my_fileページの HTML を置き換えます。リンクはそのままで、編集トークンは不要ですid、html_content(必須)、filename
rename_my_fileページの表示名を変更しますid、filename(必須)
set_my_file_pathアカウントのカスタムドメイン上でページのパスを変更しますid、path(必須)
set_my_file_metadataPro:リンクプレビュー用のタイトル、説明、画像を設定しますid(必須)、title、description、preview_image_base64、remove_preview_image
set_my_file_passwordページのパスワードを設定、変更、または削除しますid(必須)、password(文字列または null)、generate_password
delete_my_fileページを完全に削除しますid(必須)
get_my_planプラン(Free または Pro)、使用中のストレージ、更新日、アップグレードリンクを表示します。クーポンも確認しますcoupon_code
get_my_domainPro:カスタムドメイン、公開状態、追加が必要な DNS レコードを表示しますなし
connect_my_domainPro:所有するドメインを接続します。追加する CNAME レコードと TXT レコードを返しますhostname(必須)
set_my_brandingPro:デフォルトのリンクプレビュー画像を設定します。カスタムドメインを使用する場合は、サイト名とファビコンも設定しますsite_name、favicon_base64、remove_favicon、preview_image_base64、remove_preview_image
set_my_nameダッシュボードに表示される名前を設定しますname(必須)
チームツール(Swolvy Teams)
ツール用途主なパラメーター
list_my_teamsアカウントが所属するチームを、ロール、プラン、ドメイン、ダッシュボードリンクとともに一覧表示しますなし
get_my_workspaceアクティブなワークスペース(個人またはチーム)を表示しますなし
set_my_workspaceウェブサイトと、接続されているすべての AI のアクティブなワークスペースを切り替えますworkspace(必須):"personal"、org_abc123 のようなチーム ID、またはチームのスラッグ

HTTP API でアップロードする

MCP サーバーを追加するよりも、HTTP リクエストを 1 回送信したいスクリプト、CI ジョブ、コーディングエージェント向けです。

リクエスト

JSON ボディ、または同じフィールド名(HTML ファイル自体の file を含む)を使用した multipart/form-data ボディで、POST https://swolvy.com/api/v1/upload を送信します。

フィールド必須説明
htmlはい(フォームでは file)完全な HTML ドキュメント。サイズは最大 2 MB です
filenameはいページ名。最大 100 文字です
passwordいいえ4~100 文字。閲覧者は入力が必要です
generate_passwordいいえtrue:Swolvy がパスワードを生成して返します
replace_id, replace_edit_tokenいいえ既存のページを置き換え、リンクを維持します
remove_passwordいいえ置き換え時にページのパスワードを削除します
pathいいえAPI キーを使用する場合、アカウント内のページのパスです
title, descriptionいいえPro アカウントの場合:リンクプレビューのテキストです
workspaceいいえチーム内で API キーを使用する場合は、"personal"、"team"、またはチーム ID かスラッグを指定します(X-Swolvy-Workspace ヘッダーでも指定できます)

認証は任意です。認証なしの場合、匿名でアップロードされます。Authorization: Bearer swk_...(ダッシュボードの AI & API にある API キー)を指定すると、ページはアカウントに保存されます。

curl
curl -X POST https://swolvy.com/api/v1/upload \
  -H "Content-Type: application/json" \
  -d '{"html":"<!DOCTYPE html><h1>Hello</h1>","filename":"Hello.html"}'

または、ディスク上のファイルを送信します。

curl -X POST https://swolvy.com/api/v1/upload \
  -F "[email protected]" -F "filename=index.html"
レスポンス
{
  "url": "https://swolvy.com/abc123",
  "id": "abc123",
  "expires_at": "2026-11-21T10:00:00.000Z",
  "edit_token": "...",
  "password_protected": false
}

該当する場合、その他のフィールドも含まれます:password(generate_password を使用した場合)、never_expires: true(Pro)、replaced: true、path、title、description、custom_url(カスタムドメイン上のページリンク)、workspace、viewer_warning(サインインフォームのように見えるページの前に、訪問者に短い注意書きが表示されます)。エラーは {"error": "..."} という 1 つのフィールドを持つ JSON です。

edit_token は必ず保存してください。匿名ページを後から置き換える唯一の方法です。

Python
import requests

r = requests.post(
    "https://swolvy.com/api/v1/upload",
    json={"html": open("index.html").read(), "filename": "index.html"},
)
r.raise_for_status()
page = r.json()
print(page["url"], page["edit_token"])
Node
import { readFile } from "node:fs/promises";

const res = await fetch("https://swolvy.com/api/v1/upload", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ html: await readFile("index.html", "utf8"), filename: "index.html" }),
});
const page = await res.json();
if (!res.ok) throw new Error(page.error);
console.log(page.url, page.edit_token);
ページを置き換える

最初のレスポンスに含まれる ID と編集トークンを指定して、新しい HTML を送信します。リンクは変わらず、30 日間の期限がリセットされます。

curl -X POST https://swolvy.com/api/v1/upload \
  -H "Content-Type: application/json" \
  -d '{"html":"<!DOCTYPE html><h1>Hello again</h1>","filename":"Hello.html","replace_id":"abc123","replace_edit_token":"..."}'
大きなファイル(アップロードセッション)

1 回のリクエストで送信できるサイズは最大 2 MB です。Pro アカウントでは、セッションを使って最大 100 MB のページを送信できます。現在のプランで許可されるサイズは、レスポンスの max_bytes で確認できます。

  1. {"filename": "report.html"} と、上記の任意フィールド(password、generate_password、replace_id、replace_edit_token、remove_password、path、title、description、workspace)を指定して、POST https://swolvy.com/api/v1/upload/session を送信します。Pro アカウントの場合は Authorization: Bearer swk_... を指定します。レスポンス:{"upload_id", "upload_url", "finish_url", "max_bytes"}。
  2. 生の HTML を upload_url に PUT します:curl -X PUT -H "Content-Type: text/html" --data-binary @report.html <upload_url>。
  3. finish_url(/api/v1/upload/session/{id}/finish)に POST します。レスポンスには /api/v1/upload と同じフィールドが含まれます。
レート制限

アップロードは IP アドレスごとに 1 時間あたり 10 回までに制限されており(HTTP 429)、すべての呼び出し元を対象とする全体の上限もあります。サイズ制限を超えるボディは 413 を返します。

Claude Code スキル

swolvy スキルは Claude Code に上記の API 呼び出しを教えるため、「このページを公開して」や「この HTML へのリンクを教えて」といった依頼を一度の操作で実行できるようにします。

スキルフォルダーを Claude Code のスキルディレクトリにコピーしてインストールします。

git clone https://github.com/enahmedsamy/swolvy-mcp.git
mkdir -p ~/.claude/skills
cp -r swolvy-mcp/skills/swolvy ~/.claude/skills/swolvy

または、.claude/skills/swolvy/ に配置して、1 つのプロジェクトだけに追加できます。その後、Claude Code に HTML ファイルを公開するよう依頼するか、/swolvy を実行します。スキルファイルは skills/swolvy/SKILL.md です。

curl よりもツール呼び出しを使いたい場合は、代わりに Claude Code に MCP サーバーを追加してください(上記を参照)。どちらを使っても同じリンクが得られます。

制限とプラン

FreeSwolvy Pro
価格$0、登録不要月額 $3 または年額 $18
ファイルサイズ最大 2 MB最大 100 MB(ストレージ合計 2 GB)
有効期限最後のアップロードから 30 日間。新しいバージョンをアップロードすると 30 日間にリセットされますなし
パスワード保護はいはい
同じリンクでの置き換えはい、編集トークンを使って(最大 10 回)、またはダッシュボードからはい
カスタムドメインいいえはい、アカウントごとに 1 つ
リンクプレビュー(タイトル、説明、画像)自動生成カスタマイズ可能

無料アカウント(メールで届くコードを使ってサインイン)を作成すると、ダッシュボード、閲覧数、API キーが利用できるほか、AI アシスタントをアカウントにリンクできます。パスワードはハッシュとしてのみ保存されます。swolvy.com のページは検索エンジンに登録されません。Swolvy がホストするのは、ページごとに単一の HTML ファイルです。複数ファイルのサイト、ZIP アーカイブ、サーバーサイドコードはホストしません。

リンク

ライセンス

MIT。LICENSE を参照してください。

コメント

MCP は初めてですか?

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

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