Plesk Deploy について
Plesk Deployは、プロジェクトを調査し、Plesk用デプロイキットを生成・検証するAIエージェント向けMCPサーバーです。デプロイは人の承認を経てGitHub Actionsで実行され、SSHツールを有効にすると状態やログの確認、ロールバックも行えます。
主な機能
- 01プロジェクトのデプロイ情報を調査
- 02デプロイキットの生成と検証
- 03ファイル生成はデフォルトでプレビュー
- 04SSH経由で状態とログを確認
- 05ロールバックには厳密な確認が必要
活用シーン
- 01Pleskデプロイのワークフローを準備
- 02設定と安全チェックを検証
- 03サーバー上のリリース状態を確認
- 04アプリを以前のリリースに戻す
MCP 対応
プロジェクト調査、デプロイキット生成・検証、SSHでの状態・ログ確認、ロールバック、GitHub Actionsの実行状況確認ツールを提供します。ワークフローのリソースとプロンプトも公開し、SSHツールはホスト別名を設定するまで無効です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y plesk-deploy-mcpPLESK_DEPLOY_SSH_HOSTSComma-separated ~/.ssh/config host aliases the SSH tools may reach. Unset: the SSH tools are off.PLESK_DEPLOY_GITHUB_TOKENシークレットOptional read-only fine-grained token (Actions: read) for github_deploy_runs on private repositories.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
9掲載時のツール一覧 · 1 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| project_dir | string | いいえ | プロジェクトフォルダーの絶対パス。デフォルトは Claude Code で開いているプロジェクトです。 |
詳細
plesk-deploy-mcp
あらゆる AI エージェント(Claude Code、Claude Desktop、Cursor、VS Code など)が、Plesk サーバーへの安全なデプロイをセットアップして実行できるよう支援する MCP サーバーです。デプロイは次のように行われます。
- GitHub Actions がプロジェクトをテストし、リリースバンドルをビルドします。
- 担当者が承認します。
- サーバー上の小さなリリースマネージャーがリリースバンドルを新しいリリースフォルダーに展開し、データベースをバックアップして、マイグレーションを実行し、アトミックに切り替えた後、ヘルスチェックを行います。
- 新しいリリースに問題がある場合は、自動でロールバックします。
このサーバーには、本番環境で実証済みのワークフローがパッケージされています。プロジェクトを調査し、レビュー可能な差分としてデプロイキット全体を生成して、検証します。SSH ツールを有効にすると、お使いの SSH 経由でデプロイ状況やログを確認し、ロールバックすることもできます。
Plesk または WebPros とは提携関係になく、いずれからも承認を受けていません。
目次
本番環境の安全を保つ仕組み
- シークレットがこのサーバーを経由することはありません。
- 鍵、パスワード、トークンを受け取ったり返したりするツールはありません。
- SSH では、システムの
ssh、~/.ssh/configのエイリアス、ssh-agent、known_hostsを使用します。 - 環境ファイルから読み取るのは変数名のみで、実際の
.envファイルを開くことはありません。 - すべての結果をスキャンし、シークレットと思われるものはすべて秘匿します。
- **ノート PC からデプロイすることはありません。**デプロイは常に、
production環境での承認を経て GitHub Actions で実行されます。ビルド、アップロード、デプロイを行うツールはありません。 - SSH ツールは、アクセスを許可するホストを
PLESK_DEPLOY_SSH_HOSTSに指定するまで無効です。 - **SSH ツールが実行するコマンドは固定されています。**固定リストにある読み取り専用の調査コマンドか、リリースマネージャー独自の
--status、--log、--rollbackのみを実行します。「このコマンドを実行する」ツールはありません。 - すべての入力は厳格なパターンで検証されてからファイルやコマンドラインに渡され、その後シェル用にエスケープされます。
- ホスト鍵は常に厳密に検証され(
StrictHostKeyChecking=yes)、エージェント転送は常に無効です。独自の設定でこれを緩和することはできません。 - デフォルトではキットの生成はドライランです。
write: trueの場合のみ、Git リポジトリ内に書き込みます。また、シンボリックリンクを経由して書き込むことはありません。- 何も削除しません。
overwriteに指定したファイル以外、既存のファイルを置き換えることはありません。
- ロールバックには正確な確認が必要です:
confirm: "<app>@<host>"。処理の途中で中断されることはありません。 - **テレメトリーはありません。**ネットワーク通信は、指定したホストへの SSH と、実行状況を確認するよう依頼された場合の
api.github.comのみです。
詳細は、脅威モデルとプライバシーポリシーをご覧ください。
インストール
Claude Desktop は独自の Node.js を同梱しているため、それ以外の場合は Node.js 22 以降が必要です。
Claude Code
claude mcp add --transport stdio --scope user plesk-deploy -- npx -y plesk-deploy-mcp
エイリアス myserver の SSH ツールを有効にする場合(以下を参照):
claude mcp add --env PLESK_DEPLOY_SSH_HOSTS=myserver --transport stdio --scope user plesk-deploy -- npx -y plesk-deploy-mcp
claude mcp list(✔ Connected と表示されるはずです)またはセッション中に /mcp を実行して、接続を確認してください。
**またはプラグインとして。**サーバーと plesk-deploy スキルの両方が含まれており、Plesk へのデプロイについて話すと自動的に読み込まれます。
/plugin marketplace add usama-saeed831/plesk-deploy-mcp
/plugin install plesk-deploy@plesk-deploy-mcp
その後、Claude Code が許可する SSH ホストエイリアスを尋ねます(空のままにすると SSH ツールは無効です)。また、読み取り専用の GitHub トークンは任意で指定でき、シークレットとして保存されます。
Claude Desktop
拡張機能として: リリースからplesk-deploy-mcp-<version>.mcpbをダウンロードし、**Settings → Extensions → Advanced settings → Install Extension…**に進んでファイルを選択します。拡張機能の設定で、許可するSSHホストエイリアスと、任意の読み取り専用GitHubトークンを入力できます。
または、claude_desktop_config.jsonで設定します(Settings → Developer → Edit Config):
{
"mcpServers": {
"plesk-deploy": {
"command": "npx",
"args": ["-y", "plesk-deploy-mcp"],
"env": { "PLESK_DEPLOY_SSH_HOSTS": "myserver" }
}
}
}
Cursor
~/.cursor/mcp.json(すべてのプロジェクト)または.cursor/mcp.json(1つのプロジェクト)に設定します:
{
"mcpServers": {
"plesk-deploy": {
"command": "npx",
"args": ["-y", "plesk-deploy-mcp"],
"env": { "PLESK_DEPLOY_SSH_HOSTS": "myserver" }
}
}
}
VS Code
次を実行します:
code --add-mcp '{"name":"plesk-deploy","type":"stdio","command":"npx","args":["-y","plesk-deploy-mcp"]}'
または.vscode/mcp.jsonに追加します:
{
"servers": {
"plesk-deploy": {
"type": "stdio",
"command": "npx",
"args": ["-y", "plesk-deploy-mcp"],
"env": { "PLESK_DEPLOY_SSH_HOSTS": "myserver" }
}
}
}
どのクライアントでも、SSH ツールを無効にするにはenvを省略します。ローカルツールはenvがなくても動作します。
SSH ツールを有効にする
-
~/.ssh/configにホストエイリアスを追加します。最も安全なのは、server-setup.shが作成するデプロイアカウントです。このアカウントに許可されているsudo操作はリリースマネージャーの実行だけなので、ステータスとログの参照、およびロールバックはできますが、それ以外の操作はできません。Host myserver HostName 203.0.113.10 User myapp-deploy IdentityFile ~/.ssh/myapp_deploy IdentitiesOnly yes -
自分で一度接続します(
ssh myserver)。ホストキーを受け入れる前に、サーバー上で実行したssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pubの出力とフィンガープリントを照合してください。このサーバーがホストキーを自動で追加することはありません。 -
PLESK_DEPLOY_SSH_HOSTSにエイリアスを列挙し(カンマ区切り)、MCP サーバーを再起動します。
鍵にパスフレーズが設定されている場合は、ssh-agentに読み込ませます(ssh-add)。サーバーがパスワードやパスフレーズを要求することはありません。
使い方
エージェントに次のように依頼します:
このプロジェクトのPleskデプロイを設定してください。
または、プロンプトを直接開始します。Claude Codeでは、/mcp__plesk-deploy__setup-plesk-deploymentが8つのフェーズを順に進めます:
- プロジェクトを調査する
- サーバーを読み取り専用で調査する
- デプロイ方式を選ぶ
- あなたと計画を合意する
- キットを生成して検証する
- 手動で行う手順(サーバー、Plesk、GitHub)を引き継ぐ
- 初回デプロイを検証し、ロールバックのリハーサルを行う
- ドキュメントを作成する
本番環境に何かが変更される前に、エージェントはあなたの合意を確認します。各シークレットの設定場所を案内し、シークレットを尋ねることはありません。
ほかにも、次のように依頼できます:
- 「このプロジェクトを調査して、デプロイに関する情報を見せてください。」
- 「
myserverのアプリacmeは現在どうなっていますか。また、最後のデプロイログには何と書かれていますか?」 - 「
myserverのacmeをロールバックしてください。」エージェントは、何が有効になるかを示し、実行前に確認を求めます。 - 「
me/acmeで最後に実行されたDeploy to Pleskは成功しましたか?承認待ちですか?」
ツール
| ツール | 機能 | 何かを変更しますか? |
|---|---|---|
inspect_project | プロジェクトのデプロイ情報一覧 | いいえ |
server_discovery_commands | サーバー上で実行する読み取り専用コマンド | いいえ |
generate_deploy_kit | デプロイキットを生成します。デフォルトではドライランです | write: trueの場合のみ |
validate_deploy_kit | キットを検査し、リリースマネージャーのテストを実行します | いいえ(一時フォルダーで実行) |
server_discover | SSH経由で実行する、同じ読み取り専用コマンド | いいえ |
deploy_status | サーバー上のリリースと、現在有効なリリース | いいえ |
deploy_logs | デプロイログの末尾 | いいえ |
rollback | 直前の正常なリリースを有効にします | はい(破壊的操作) |
github_deploy_runs | 最近のDeploy to Plesk実行のステータス | いいえ |
各ツールはtitle、readOnlyHint、destructiveHint、idempotentHint、openWorldHintを宣言し、読みやすいテキストとともに構造化コンテンツを返します。
inspect_project
マニフェスト、ロックファイル、ランタイムの固定情報、フレームワーク設定、Dockerfile、CI、マイグレーション、ソースコードを読み取ります。各情報がファイル名付きで検証済みか、不明かを示すデプロイ情報一覧を返すため、推測は行われません。また、各アプリのビルド、起動、マイグレーションのコマンドと、ビルド時および実行時に分けた環境変数の名前も一覧表示します。
{ "project_dir": "/Users/me/code/acme" }
server_discovery_commands
サーバー上で root として実行し、その出力を貼り付ける読み取り専用のコマンドブロックを返します。Plesk と OS、root およびドメインユーザーとしての PM2、ポート、nginx ディレクティブ、ドキュメントルート、環境ファイルの名前、データベース、crontab、および .env と .git が公開されているかどうかを確認します。
{ "domain": "example.com", "app": "acme", "system_user": "acme_sys", "pm2_processes": ["acme-api"] }
generate_deploy_kit
以下のファイルを生成します。
.github/workflows/deploy-plesk.ymldeploy/plesk/:build-bundle.sh、<app>-deployリリースマネージャー、deploy.conf.example、server-setup.sh、<app>-db-backup、PM2 または systemd の定義、任意の nginx ディレクティブ、およびREADME.md
新しい各ファイルは、元になった検証済みテンプレートとの差分として表示されます。不明な値は FILL IN のままにし、担当者が引き続き調整する必要のある項目の一覧を提示します。
{
"project_dir": "/Users/me/code/acme",
"app": "acme",
"stack": "node",
"process_manager": "pm2",
"site_url": "https://example.com/",
"public_health_url": "https://example.com/health",
"base_dir": "/var/www/acme-app",
"health_checks": [{ "url": "http://127.0.0.1:3001/health/ready", "contains": "\"status\":\"ready\"" }],
"health_commit_url": "http://127.0.0.1:3001/health/ready",
"pm2_apps": [{ "name": "acme-api", "dir": ".", "script": "dist/main.js" }],
"database": "postgres",
"migrate_cmd": "NODE_ENV=production node node_modules/typeorm/cli.js migration:run -d dist/data-source.js",
"write": false
}
差分に合意したら、"write": true を指定して再度呼び出してください。置き換えに合意したファイルに限り、"overwrite": ["deploy/plesk/README.md"] を追加してください。
validate_deploy_kit
以下のチェックを実行します。
- すべてのスクリプトに対する
bash -nの実行、およびインストールされている場合はshellcheckの実行 - ワークフローの YAML 解析
- ワークフローの安全設定の確認:厳格なホストキー検証、
production承認ゲート、デプロイがキャンセルされないこと、使用後のキー削除、読み取り専用権限、呼び出し可能な CI - リリースマネージャーにすべての安全チェックが残されていることの確認
- マイグレーション前にバックアップが実行されることの確認
- ファイルと行番号を報告し、値は決して表示しないシークレットスキャン
- 調整済みのコピーを対象とした、リリースマネージャー独自のテストスイートの実行
{ "project_dir": "/Users/me/code/acme" }
server_discover
1 つの SSH セッションで server_discovery_commands の一覧を実行します。各コマンドはタイムアウトを設定して実行され、標準入力は閉じられます。また、シークレットらしき出力はマスキングされます。root として実行するには "sudo": true を追加してください。これはパスワードなしの sudo が設定されている場合にのみ機能します。
{ "host_alias": "myserver", "domain": "example.com", "app": "acme" }
deploy_status
/usr/local/bin/<app>-deploy --status を実行します。sudo は不要です。
{ "host_alias": "myserver", "app": "acme" }
deploy_logs
sudo -n <app>-deploy --log <lines> を実行します。ログは root 専用のため、デプロイアカウントに設定された唯一の sudo ルールを使って実行します。
{ "host_alias": "myserver", "app": "acme", "lines": 100 }
rollback
sudo -n <app>-deploy --rollback を実行し、実行前と実行後に有効だったリリースを報告します。マイグレーションは元に戻されません。そのため、マイグレーションでは追加のみ(拡張してから縮小)を行う必要があります。
{ "host_alias": "myserver", "app": "acme", "confirm": "acme@myserver" }
github_deploy_runs
api.github.com から実行、ジョブ、および承認待ちの実行を読み取ります。プライベートリポジトリの場合は、Actions: read と Metadata: read の権限を持つ細粒度トークンを PLESK_DEPLOY_GITHUB_TOKEN に設定してください。
{ "repo": "me/acme", "branch": "main", "limit": 5 }
リソースとプロンプト
plesk-deploy://workflow:8 つのフェーズと、決して緩和されないルールです。plesk-deploy://references/<name>:discovery、hosting-models、github-actions、release-manager、environment-and-database、security-and-safety、verification-checklist、troubleshooting、rollback、および worked-example です。plesk-deploy://templates/<dir>/<file>:キットの生成に使われる 12 個のテンプレートです。例:plesk-deploy://templates/server/app-deploy。- 2 つのオプション引数
project_dirとhost_aliasを指定できるsetup-plesk-deploymentプロンプトです。
設定
| 変数 | 意味 |
|---|---|
PLESK_DEPLOY_SSH_HOSTS | SSH ツールから接続できる ~/.ssh/config のエイリアスをカンマ区切りで指定します。未設定の場合、SSH ツールは無効です。 |
PLESK_DEPLOY_GITHUB_TOKEN | 任意です。プライベートリポジトリで github_deploy_runs を使うための、読み取り専用の細粒度トークンです。 |
PLESK_DEPLOY_SSH_BIN | 任意です。ssh のパスを指定します。デフォルトは PATH 上の ssh です。 |
npx -y plesk-deploy-mcp --help を実行すると、この一覧を確認できます。
よくある質問
自分のマシンからデプロイされますか?
いいえ。デプロイは、誰かがproduction環境で承認した後、GitHub Actionsで実行されます。ローカルでは、サーバーは一時フォルダー内でファイルの読み込みとレンダリング、スクリプトの実行のみを行います。
エイリアスにはどのSSHアカウントを指定すればよいですか?
デプロイアカウント(<app>-deploy)を使用してください。sudo権限はリリースマネージャーの実行だけに限定されているため、deploy_status、deploy_logs、rollbackはすべてこのアカウントで動作します。server_discoverはrootで実行するほうが便利ですが、読み取り専用のコマンドしか実行しません。
.envを読み取ることはできますか?
いいえ。ローカルでは、実際の.envファイルは存在することだけを報告し、開くことはありません。サーバー上では、環境ファイルをNAME=<set>またはNAME=<empty>として一覧表示します。これは、複数行の値の続きの行も含め、ほかには何も出力しないコマンドによって行われます。返されるデータはすべて、さらにレダクターを通過します。
generate_deploy_kitが破壊的とマークされているのはなぜですか?
ファイルを置き換えることはできますが、置き換えられるのはoverwriteに指定したファイルだけです。デフォルトではドライランとなり、何も書き込みません。
サーバーで古いリリースマネージャーを使っています。deploy_logsは引き続き動作しますか?
このキットでは--logが新たに追加されました。新しいキットでserver-setup.shを再実行してリリースマネージャーを再インストールするか、ご自身でrootとしてログを読んでください。どちらが必要かはdeploy_logsで確認できます。
サーバーがPleskでなくても動作しますか? リリースマネージャーとパイプラインは、SSHを利用できるLinuxサーバーであれば動作します。Plesk固有の部分は、ドキュメントルート、nginxディレクティブ、PHP-FPM、システムユーザーを対象とした検出コマンドとガイダンスのみです。
Windowsではどうですか?
ローカルツールはWindowsで動作します。validate_deploy_kitでシェルチェックを行うにはbashが必要です。bashがない場合、チェック結果はスキップと報告されます。SSHツールではWindows OpenSSHクライアントを使用します。
npx -y plesk-deploy-mcpで実行されるバージョンはどれですか?
最新バージョンです。ただし、npxがキャッシュ済みのコピーを再利用する場合があります。バージョンを固定するには、[email protected]を使用してください。
コントリビューション、セキュリティ、ライセンス
コードへの取り組み方についてはCONTRIBUTING.mdを参照してください。脆弱性は非公開で報告してください(SECURITY.md)。MITライセンスです(LICENSE)。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。