coolftp について
coolFTPはCLI、MCPサーバー、任意で使えるWindowsデスクトップアプリを通じて、コーディングエージェントからSFTPまたはFTPホストへサイトをデプロイします。ファイルハッシュと履歴を記録し、取り消しやロールバック、公開後のページ確認にも対応します。
主な機能
- 01変更ファイルをSFTPまたはFTPでデプロイ
- 02差分でデプロイ内容を確認
- 03デプロイの取り消しとバージョン復元
- 04デプロイ後のサイトを検証
- 05Git情報とともにデプロイを記録
- 06デスクトップアプリで要注意操作を承認
活用シーン
- 01コーディングエージェントからサイトをデプロイ
- 02不要なデプロイ後にファイルを復元
- 03変更したページの公開状態を確認
- 04エージェントによる削除を確認して承認
MCP 対応
`coolftp mcp`サーバーは、サイト設定、差分表示、デプロイ、取り消し、ロールバック、検証、履歴、リモートファイル操作のツールを提供します。Claude CodeやCursorなどのMCPクライアントで利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
18掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細
coolFTP
Claude にサイトを SFTP または FTP ホストへデプロイしてもらい、元に戻したり、実際に公開されているか確認したりできます。 Claude Code で1行を実行します。
/plugin install coolftp --marketplace anivdel/coolFTP
続けて「このプロジェクトに coolFTP を設定して」「これをデプロイして」と指示するだけです。内容が変わったファイルだけがアップロードされ、git のコミットがデプロイと一緒に記録され、デプロイ後にサイトへアクセスして応答を確認できます。「元に戻して」と指示すれば、git がなくても以前のバージョンに戻せます。SFTP または FTP に対応するあらゆるホストで動作します。Hostinger、HostGator、Bluehost、GoDaddy、あらゆる cPanel サーバー、ご自身の VPS などで使えます。1サイトまでは無料で、MIT ライセンスです。Pro(一度限りの $49)ではサイト数が無制限になります。ウェブサイト:coolftp.com。
プラグイン、coolftp CLI、MCP サーバーは、Node 18 以降を搭載した macOS、Linux、Windows で動作します。Cursor、Codex、またはシェルを操作できるエージェントからも利用できます。Windows デスクトップアプリは任意で使えるコンパニオンアプリです。起動しておくと、エージェントによるすべての呼び出しをリアルタイムで確認でき、削除、元に戻す操作、ロールバックをクリックして承認できます。

デスクトップアプリを起動しておくと、エージェントが削除の前に確認を求めます。

理由
FTP クライアントはどれも、人間がクリックして操作することを前提としています。coolFTP は、人間が監視し、エージェントが操作することを前提としています。
- ハッシュベースのデプロイ。 サーバー上のマニフェストに、デプロイしたすべてのファイルの SHA-256 が記録されます。タイムスタンプはあてになりませんが、ハッシュは確実です。
- git がなくても元に戻せます。 デプロイのたびに、上書きまたは削除するファイルを先にサーバー上のバックアップフォルダーへ移します。作業ツリーに未コミットの変更があっても、
coolftp undoで元に戻せます。 - git と連携したデプロイ履歴。 デプロイごとに、コミット、ブランチ、変更の有無、メッセージ、バイト数、実行したエージェント、サイトが公開状態を確認できたかどうかを記録します。
- 1つのコマンドでロールバック。
coolftp rollbackは一時的な git worktree を使って、以前のライブコミットを復元します。 - 検証。 サイトの公開 URL を設定すると、デプロイのたびに変更されたページを取得し、静的ファイルをアップロードしたファイルとバイト単位で比較します。サイトが応答しない場合は、0以外の終了コードを返します。
coolftp verifyを実行すれば、いつでも同じ検証ができます。 - ライブエージェントフィードと承認ダイアログをデスクトップアプリで利用できます。アプリの起動中は、削除、
--deleteを指定したデプロイ、ロールバック、元に戻す操作が、クリックで承認されるまで待機します。デプロイの進行状況はカードで表示され、完了時には Windows の通知が届きます。 - デフォルトで安全。 固定された SSH ホストキー、Windows アカウントで暗号化されたパスワード、アップロードしたことのないファイルを削除しない初回デプロイ時の保護、上書きではなく置き換えによる変更ファイルの反映、サーバーによるサイズ確認、中断後に再開できるデプロイに対応しています。
packages/core shared TypeScript library: transports, sites, hash manifest, sync, deploy
packages/cli `coolftp` command line + `coolftp mcp` MCP server for agents
packages/app Electron desktop app (two-pane browser, transfer queue, live agent feed)
site/ landing page for coolftp.com
scripts/ build + end-to-end test
インストール
CLI と MCP サーバーは、Node 18 以降が動作する環境ならどこでも使えます。Windows、macOS、Linux、ヘッドレスサーバー、CI で動作します。
npm i -g coolftp
coolftp --version
インストールしなくても、npx coolftp ... で同じ機能を利用できます。
デスクトップアプリは現在 Windows のみ対応しています。インストーラー、ポータブル版の .exe、Claude Desktop 拡張機能(.mcpb)は、SHA-256 とともにダウンロードページから入手できます。
ソースからビルド
npm install
npm run build
npm run app # opens the desktop app
node packages/cli/dist/coolftp.js --help
npm ではなく、このチェックアウトからグローバルな coolftp コマンドを使うには、cd packages/cli && npm link を実行します。
サーバーを追加
# SFTP with your existing ~/.ssh key or the ssh-agent
coolftp site add coolftp.com --host coolftp.com --user deploy --root /var/www/html
# FTPS with a password (shared hosts)
coolftp site add oldhost --host ftp.oldhost.net --user me --protocol ftps --password '...' --root /public_html
coolftp site test coolftp.com
アプリの Sites ボタンから追加することもできます。サイト情報は、Windows では %USERPROFILE%\.coolftp\sites.json、それ以外では ~/.config/coolftp/sites.json に保存されます。(バージョン 0.1.4 までは Windows のフォルダーは %APPDATA%\coolftp でした。新しいバージョンを初めて起動すると、ファイルが新しい場所へコピーされます。COOLFTP_HOME を指定するとフォルダーを変更できます。)Windows では、ファイル内のパスワードはお使いのアカウントで DPAPI により暗号化されます。macOS と Linux では、キーチェーンのバックエンドが追加されるまではそのまま保存されるため、SFTP では鍵の使用をおすすめします。
プロジェクトをリンクしてデプロイする
cd my-site
coolftp init coolftp.com --local-dir dist --build "npm run build"
coolftp diff # preview
coolftp deploy -m "first deploy"
coolftp deploy --delete # also remove remote files deleted locally
coolftp deploy --commit -m "msg" # git add -A, git commit, then deploy
coolftp undo # put the previous versions back
coolftp verify # re-run the live checks
coolftp history
終了コード:0 はデプロイ成功(サイトに URL がある場合は検証済み)、1 はアップロード前またはアップロード中に失敗、3 はファイルのアップロードは完了したものの、ライブチェックに合格しなかったことを示します。-q を指定すると、進行状況とファイルごとの出力が省略され、結果の行、警告、エラー、チェックのみが表示されます。ファイル数が 20 を超えるデプロイでは、ファイルごとではなく数秒ごとに進行状況が 1 行表示され、長いプランはフォルダーごとに要約されます。
coolftp init は .coolftp.json を作成します。
{ "site": "coolftp.com", "localDir": "dist", "build": "npm run build", "ignore": ["*.map"] }
これをコミットしてください。絶対にアップロードしてはいけないものは、.coolftpignore(gitignore の構文)に追加してください。.git、node_modules、.env*、*.log、および coolFTP のファイルは常に除外されます。
サイトの FTP ルートがウェブルートではない場合(共有ホストでは public_html の 1 つ上の階層にログインすることがよくあります)、プロジェクトの対象フォルダーを指定し、coolFTP に公開先を伝えます。
coolftp init myhost --remote-root /public_html --url https://example.com
以降のすべてのコマンドは、そのフォルダーを基準に動作します。coolftp push js/app.js js/app.js、coolftp ls、coolftp stat、coolftp cat、coolftp rm はすべて /public_html を基準に解決されます。これは deploy の書き込み先と同じ場所です。/ で始まるパスは、引き続きサーバー上の絶対パスとして扱われます。url を設定すると、変更ファイルの URL とデプロイ後のチェック先が FTP パスではなく https://example.com/js/app.js になります。
push は、サーバーにアップロードサイズを確認します。また、作成が必要だったフォルダーを報告します(単一ファイルのアップロードで新しいトップレベルフォルダーが作成された場合は警告します。これは public_html/ の指定が古い場合に見られる挙動です)。さらに、プロジェクトのリモートディレクトリ内にプッシュされたファイルをデプロイマニフェストに記録するため、次回のデプロイでは再送信されません。
Git Bash は、プログラムが引数を受け取る前に、/ で始まる引数を Windows のパスに書き換えます。coolFTP は Git のインストール先プレフィックスを認識すると、その書き換えを元に戻し、ドライブパスのように見えるそれ以外のパスは拒否します。そのため、Git Bash からも coolftp ls /public_html を実行できます。拒否された場合は、相対パスを使うか、MSYS_NO_PATHCONV=1 を設定してください。
Claude Code に操作させる
coolFTP プラグインを使えば、ワンステップで MCP サーバーを起動し、安全なデプロイ方法を Claude に教え、/coolftp:setup、/coolftp:deploy、/coolftp:undo、/coolftp:live を追加し、チャットの横にあるライブパネルに各デプロイを表示できます。Claude Code では、次のようにします。
/plugin install coolftp --marketplace anivdel/coolFTP
マーケットプレイスを追加するには y と答え、次にスコープを選択してください。Claude デスクトップアプリでは、プロンプトボックスの横にある「+」をクリックし、「Plugins」からマーケットプレイス anivdel/coolFTP を追加してから、coolftp を追加します。Node 18 以降が必要で、それ以外は不要です。デスクトップアプリは任意です。次に、「このプロジェクト用に coolFTP をセットアップして」と伝えてください。詳細は plugins/coolftp を参照してください。
MCP サーバーを手動で設定する
ほかの MCP クライアントで使う場合や、プラグインを使わずに Claude Code を自分で設定する場合に使います。npm から CLI をインストールしたうえで、macOS と Linux では次のようにします。
claude mcp add --scope user coolftp -- coolftp mcp
Windows では、npm は coolftp を .cmd shim としてインストールするため、cmd 経由で実行します。
claude mcp add --scope user coolftp -- cmd /c coolftp mcp
グローバルインストールを行わない場合は、claude mcp add --scope user coolftp -- npx -y coolftp mcp を実行します(Windows では、同様に cmd /c 経由で実行します)。--scope user を指定すると、そのマシン上のすべてのプロジェクトに登録されます。省略すると、現在のプロジェクトのみに登録されます。
Cursor、Windsurf、その他の MCP クライアントでは、同じサーバーを mcp.json に設定します。
{ "mcpServers": { "coolftp": { "command": "coolftp", "args": ["mcp"] } } }
npm ではなくソースのチェックアウトから使う場合は、ビルド済みファイルを指定します。
claude mcp add coolftp -- node "C:\path\to\cool FTP\packages\cli\dist\coolftp.js" mcp
公開されるツール:coolftp_sites、coolftp_license、coolftp_status、coolftp_init、coolftp_diff、coolftp_deploy、coolftp_undo、coolftp_verify、coolftp_rollback、coolftp_history、coolftp_ls、coolftp_stat、coolftp_read、coolftp_write、coolftp_upload、coolftp_download、coolftp_mkdir、coolftp_delete、coolftp_rename。結果はエージェント向けに要約されます。何千ものパスではなく件数とフォルダー別の内訳が表示され、すべてのデプロイに live の判定が付き、転送ログは 20 ファイルを超えると折りたたまれます。サーバーは呼び出しのたびにデスクトップアプリが起動中か確認するため、セッション中にアプリを開いたり閉じたりできます。
Claude Desktop アプリから使用する
同じ MCP サーバーが Claude Desktop の拡張機能としても提供されています。npm run mcpb を実行すると release/coolFTP-<version>.mcpb にパッケージ化されます(ダウンロードページにはビルド済みのものが掲載されています)。そのファイルを Claude Desktop で開いて「インストール」をクリックしてください。Claude は coolftp_* ツールを利用でき、アプリが開いている間、すべての呼び出しは引き続きデスクトップアプリ経由で行われるため、デプロイはアプリに表示され、削除、元に戻す操作、ロールバックはクリックするまで実行されません。チャットには作業ディレクトリがないため、拡張機能の設定でデフォルトのプロジェクトフォルダーを指定するか、チャットでフォルダー名を指定してください。どちらの場合も、プロジェクト独自の .coolftp.json が検出されます。現在、このバンドルは未署名のため、インストールダイアログにその旨が表示されます。
server.json では、MCP Registry 向けに、サーバーを coolftp npm パッケージ(npx coolftp mcp で実行)と .mcpb バンドルの両方として記述しています。npm run mcpb を実行すると、バージョンとバンドルのハッシュが最新の状態に保たれます。npm への公開を含むリリース手順については、docs/PUBLISHING.md をご覧ください。
エージェントによるデプロイの安全対策
- 承認ダイアログ。 デスクトップアプリの起動中に、パスの削除、
--deleteを指定したデプロイ、ロールバック、またはデプロイの取り消しをエージェントが呼び出すと、アプリにダイアログが表示され、クリックされるまで待機します。2 分以内に応答がない場合は拒否されます。セッション終了まで自動承認するチェックボックスもあります。 - 初回デプロイ時の削除ガード。 サーバー上にマニフェストが存在する前は、対象フォルダーに coolFTP が一度もアップロードしていないファイルが含まれている場合、
--deleteは拒否されます。上書きするには--delete-untrackedを渡します。 - 取り消し。 デプロイによってファイルが上書きまたは削除される前に、サーバー上の稼働中のコピーは
.coolftp/backup/<deployId>/に名前を変更して保存されるため、追加の転送は発生しません。coolftp undoはこれらのバージョンを復元し、デプロイによって追加されたファイルを削除します。また、この操作自体も取り消し可能です。--dry-runは作業内容を事前に表示します。後続のデプロイでファイルが変更されていない場合は、--to <deployId>で古いデプロイを元に戻せます。直近 5 回のデプロイのバックアップが保持されます(coolftp init --keep-backups <n>、無効にするには 0)。Deploys タブには Undo ボタンがあります。 - ロールバック。
coolftp rollbackは、一時的な git worktree を使用して、プロジェクトで稼働中だった前のコミットを復元するため、作業ツリーは変更されません。--to <commit|deployId>で履歴上の任意の時点を指定できます。アプリの Deploys タブにも同じボタンがあります。 - 検証。 サイトに公開
--url(またはcoolftp init --urlでプロジェクトの URL)を指定すると、デプロイごとに変更されたファイルの URL が出力され、ホームページと最大 4 ページを取得してステータスコードを報告し、最大 4 つの静的ファイルをローカルコピーとバイト単位で比較します。ステータス検証に失敗すると、終了コード 3 で終了します。バイト単位で一致しない場合は古い状態として報告されます(サーバーと利用者の間にある何か、たとえばキャッシュや CDN が、引き続き古いバージョンを配信しています)が、失敗にはなりません。coolftp verifyはいつでも検証を再実行します。historyはデプロイごとに稼働中、失敗、または古い状態を表示します。MCP の結果にも同じ判定が含まれるため、エージェントが未検証のデプロイを稼働中として扱うことはありません。 - アップロードの確認。 50 ファイル以下のジョブでは、すべてのアップロードについてサーバーからサイズを読み戻し、不一致があれば再試行します。変更されたファイルは稼働中のコピーの隣にアップロードしてから名前を変更して置き換えます。マニフェストも同じ方法で書き込まれるため、接続が切れてもファイルやマニフェストが不完全な状態で残ることはありません。
- ホストキーのピン留め。 SFTP ホストキーは初回使用時に
known_hosts.jsonに記録され、キーが変更されると明確なエラーとともに接続が拒否されます。正当なサーバーの再構築後に記録されたキーを削除するにはcoolftp site trust <name>を実行します。キーの一覧はcoolftp site keysで確認できます。 - パスワードの暗号化。 Windows では、
sites.json内のパスワードと鍵のパスフレーズが、ユーザーアカウントの DPAPI で暗号化されます。CLI とアプリは同じストアを共有します。 - 再開可能なデプロイ。 転送は最大 3 回再試行されます。それでもデプロイが途中で失敗した場合、転送済みのファイルがマニフェストに書き込まれるため、次回の実行でそれらが再転送されることはありません。
シェルを使えるエージェントであれば、リンク済みのプロジェクト内で coolftp deploy を実行できます。CLI は環境から Claude Code、Cursor、Codex、Gemini CLI、Aider を検出し、呼び出し元として記録します。上書きするには --agent <name> を渡します。
Claude が従うデプロイスキルは、プラグイン内の plugins/coolftp/skills/deploy に含まれています。
エージェントの呼び出しがアプリに届く仕組み
デスクトップアプリの起動中は、ランダムな 127.0.0.1 ポートで待ち受け、同じフォルダーにポート番号とセッションごとのトークンを記した hub.json を書き込みます。CLI と MCP サーバーはこのファイルを探し、アプリが応答すると、コマンドを自分で実行する代わりにアプリへ送信します。イベントは NDJSON としてストリーミングされるため、ターミナルには引き続き進行状況が表示され、アプリでは同じ呼び出しが Agents パネル、転送キュー、デプロイ履歴に表示されます。アプリが閉じている場合、CLI はすべての処理をプロセス内で実行します。--direct はこの動作を強制します。
デプロイでアップロード対象を決定する方法
- ローカルフォルダーをスキャンし、ファイルのハッシュを計算します(SHA-256。サイズと更新日時を基にキャッシュされます)。
- サーバーから
<remoteRoot>/.coolftp/manifest.jsonを読み込みます。このファイルには、デプロイ済みの各パスとそのハッシュが記録されています。 - ハッシュが異なるファイル、またはマニフェストに存在しないファイルをアップロードします。8ファイル以上のジョブでは、最大4つのFTP接続を使用します(接続数は
coolftp site add --connections <n>で変更できます。SFTPでは1つの接続を多重化します)。変更されたファイルは稼働中のファイルの隣にアップロードされ、稼働中のファイルはバックアップフォルダーに移動された後、新しいファイルが所定の場所にリネームされます。マニフェストには存在するもののローカルにはないファイルは古いファイルとして報告され、--deleteを指定した場合にのみ削除されます。削除されたファイルもバックアップに移動されます。 - 新しいマニフェストを書き込み(まず一時ファイル名で書き込んでから置き換え)、デプロイ記録(git commit、ブランチ、変更の有無、メッセージ、エージェント、件数、所要時間、バックアップ、接続数)を記録し、保存数を超えるバックアップを削除した後、稼働環境のチェックを実行し、判定結果を記録とともに保存します。
サーバーにマニフェストがまだない場合は、リモートツリーを走査してサイズを比較します。最初のデプロイでマニフェストが作成されます。--forceを指定すると、すべてのファイルを再アップロードします。
マニフェストディレクトリには、Require all deniedを指定した.htaccessが作成されます。nginxでは、自分で/.coolftpへのアクセスを拒否するか、ウェブルートより上の階層をremoteRootに指定してください。
テスト
npm run e2e
一時ディレクトリでローカルFTPサーバー(ftp-srv)とローカルSFTPサーバー(ssh2、scripts/lib/sftp-server.cjs)を起動し、CLIを使ってサイトの設定、初期化、初回デプロイ時の削除ガード、デプロイ、マニフェストの差分確認、削除の同期、--commit、サーバー側のバックアップからの取り消しとやり直し、バックアップの整理、以前のコミットとデプロイIDによるロールバック、プッシュ(サイズの確認、フォルダー作成時の警告、マニフェストへの記録)、プル、stat、名前変更、mkdir、remove、4つのFTP接続を使った30ファイルのデプロイ、ローカルウェブサーバーに対する検証(デプロイ成功、古いコピー、終了コード3でのサイト到達不能、静音モード)、履歴、暗号化されたパスワード、SSHホスト鍵のピン留め(サーバー鍵の差し替えは拒否され、その後信頼済みに設定)、stdio経由でのMCPサーバーの操作をテストします。合計190項目のチェックがあります。
実際のホストを使わずに試す
npm run dev:ftp # ftp://demo:[email protected]:2121, remote root /public_html
npm run dev:sftp # sftp://demo:[email protected]:2222, remote root /public_html
どちらも、いくつかのファイルを含む一時フォルダーを用意します。そのうちの一方を指すサイトを追加し、アプリで接続して、そのサイトに任意のフォルダーをデプロイしてください。
Free と Pro
すべてのコードはMITライセンスです。coolFTP Freeでは、1つのサイトですべての機能を利用できます。coolFTP Proは、サイト数無制限の買い切りプランで、料金は49ドルです。生涯アップデートと優先サポートが含まれ、coolftp.comで販売しています。
キーはCFP1.<payload>.<signature>の形式で、Ed25519で署名されます。packages/core/src/license-pubkey.tsにある公開鍵を使ってオフラインで検証されます。有効なキーがあれば、どのビルドでもProが利用可能になります。キーはupdatesUntilが9999-12-31に設定されて発行されるため、古いビルドでも機能します。古いビルドでもこの日付はチェックされます。
node scripts/license/keygen.cjsで署名鍵ペアを一度だけ作成します。秘密鍵はscripts/license/private/に保存されます(gitで無視されます)。バックアップしてください。秘密鍵を失うと、発行済みのすべてのキーが無効になります。node scripts/license/issue.cjs --email [email protected]でキーを手動発行します。npm run test:licenseで、CLIを通じて有効化、改ざん、期限切れ、削除をテストします。coolftp license、coolftp license activate <key>、coolftp license remove、またはアプリのProボタンを使用します。
購入にはStripe Checkoutを使用します。site/api/stripe-webhook.phpがcheckout.session.completedを受信し、libsodium版の秘密鍵でキーに署名し、ウェブルート外に記録を保存して、[email protected]からキーをメールで送信します。site/api/resend.phpでは、メールアドレスを指定してキーを再送できます。送信回数には制限があります。実際の値はgitで無視されるsite/api/config.phpに記入します。設定内容の形式はconfig.example.phpを参照してください。
アプリをパッケージ化する
npm run dist
packages/app/electron-builder.ymlを使ってelectron-builderでビルドします。出力先はrelease/です。ビルドには署名がありません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。