MCP Lightsail Deployment Server について
MCP Lightsail Deployment Server は、MCP ツールを通じて GitHub のプロジェクトを AWS Lightsail にデプロイします。クラウドデプロイを管理する開発者向けで、Cloudflare DNS の設定と SSE による進捗通知にも対応します。
主な機能
- 01Lightsail VM の作成とプロジェクトのデプロイ
- 02GitHub からのプロジェクトのクローン
- 03Cloudflare DNS の自動設定
- 04プロジェクトの再デプロイと状態確認
- 05SSE によるリアルタイム進捗確認
- 06機密情報の暗号化保存
活用シーン
- 01GitHub プロジェクトの Lightsail へのデプロイ
- 02既存プロジェクトの更新とデプロイ状態の確認
- 03デプロイ進捗の監視とエラー調査
MCP 対応
MCP サーバーは、VM の作成、プロジェクトのデプロイや再デプロイ、状態確認、デプロイ一覧の取得、VM の削除を行うツールを提供します。進捗は SSE でリアルタイムに確認できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP Lightsail デプロイサーバー
Cloudflare による DNS の自動設定と、Server-Sent Events(SSE)を通じたリアルタイムの進捗追跡機能を備え、AWS Lightsail にプロジェクトをデプロイするための Model Context Protocol(MCP)サーバーです。
機能
- 🚀 VM の自動作成:カスタム設定で AWS Lightsail インスタンスを作成します
- 📦 GitHub 連携:GitHub リポジトリからプロジェクトを直接クローンしてデプロイします
- 🌐 DNS 管理:Cloudflare DNS レコードの作成と管理を自動で行います
- 🔄 再デプロイ:1 つのコマンドで最新のコードを取得し、サービスを再起動します
- 📡 リアルタイム更新:Server-Sent Events(SSE)でデプロイの進捗をリアルタイムに追跡します
- 🔒 セキュリティ:機密性の高い認証情報を暗号化して保存します
- 🛠️ Docker 対応:Docker Compose によるデプロイを自動で行います
- 🌍 Caddy 連携:リバースプロキシと SSL 証明書の管理を自動で行います
アーキテクチャ
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ MCP Client │ │ MCP Server │ │ AWS Lightsail │
│ (LLM/App) │◄──►│ (This Server) │◄──►│ Instance │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐
│ Cloudflare │
│ DNS Records │
└─────────────────┘
インストール
-
リポジトリをクローンします:
git clone <repository-url> cd mcp-lightsail-server -
依存関係をインストールします:
npm install -
環境変数を設定します:
cp .env.example .env # Edit .env with your configuration -
プロジェクトをビルドします:
npm run build -
サーバーを起動します:
npm start
環境変数
以下の変数を含む .env ファイルを作成します:
# Server Configuration
PORT=3000
ENCRYPTION_KEY=your-32-character-encryption-key-here
# Optional: Default AWS Configuration (for 'og' account type)
OPENGIG_AWS_ACCESS_KEY_ID=your-aws-access-key
OPENGIG_AWS_SECRET_ACCESS_KEY=your-aws-secret-key
OPENGIG_AWS_REGION=us-east-1
OPENGIG_AVAILABILITY_ZONE=us-east-1a
OPENGIG_AWS_SSH_KEY=your-ssh-private-key
OPENGIG_CLOUDFLARE_ZONE_ID=your-cloudflare-zone-id
OPENGIG_CLOUDFLARE_API_TOKEN=your-cloudflare-api-token
MCP ツール
1. create_vm
新しい Lightsail VM を作成し、GitHub プロジェクトをデプロイします。
パラメーター:
awsAccessKey(string):AWS アクセスキー IDawsSecretKey(string):AWS シークレットアクセスキーawsRegion(string):AWS リージョン(例:us-east-1)availabilityZone(string):AWS アベイラビリティーゾーン(例:us-east-1a)awsSshKey(string):AWS SSH 秘密鍵(PEM 形式)bundleId(string):Lightsail バンドル ID(例:nano_2_0)blueprintId(string):Lightsail ブループリント ID(例:ubuntu_20_04)githubRepoUrl(string):GitHub リポジトリの URLgithubPat(string):GitHub パーソナルアクセストークンcloudflareZoneId(string):Cloudflare Zone IDcloudflareApiToken(string):Cloudflare API トークンprojectName(string):デプロイするプロジェクト名domain(string、任意):ドメイン名(デフォルトは opengig.work)accountType(string):'og' または 'custom'
戻り値:
{
"sessionId": "uuid-session-id",
"message": "VM deployment started. Use the session ID to track progress via SSE."
}
2. redeploy_project
最新のコードを取得して、既存のプロジェクトを再デプロイします。
パラメーター:
sessionId(string):元のデプロイ時のセッション ID
3. get_vm_status
デプロイ済み VM の現在のステータスを取得します。
パラメーター:
sessionId(string):デプロイ時のセッション ID
4. get_all_deployments
すべてのアクティブなデプロイを一覧表示します。
5. delete_vm
VM を削除し、関連するすべてのリソースをクリーンアップします。
パラメーター:
sessionId(string):デプロイ時のセッション ID
6. force_delete_vm
VM セッションを強制的に削除します(通常の削除が失敗した場合に使用します)。
パラメーター:
sessionId(string):デプロイ時のセッション ID
リアルタイムの進捗追跡
SSE エンドポイントに接続すると、リアルタイムの更新を受け取れます:
const eventSource = new EventSource(`http://localhost:3000/sse/${sessionId}`);
eventSource.onmessage = function(event) {
const data = JSON.parse(event.data);
console.log('Event:', data);
switch(data.type) {
case 'progress':
console.log('Progress:', data.data.message);
break;
case 'log':
console.log('Log:', data.data);
break;
case 'error':
console.error('Error:', data.data.error);
break;
case 'complete':
console.log('Complete:', data.data);
break;
}
};
イベントの種類
progress:デプロイの進捗状況log:コマンド実行ログerror:エラーメッセージcomplete:デプロイの完了status:現在のデプロイステータス
API エンドポイント
POST /mcp- MCP プロトコルのエンドポイントGET /mcp- MCP SSE 通知DELETE /mcp- MCP セッションの終了GET /sse/:sessionId- デプロイ進捗のリアルタイム表示GET /health- ヘルスチェックのエンドポイント
使用例
// Using the MCP client
const result = await mcpClient.callTool('create_vm', {
awsAccessKey: 'AKIA...',
awsSecretKey: 'secret...',
awsRegion: 'us-east-1',
availabilityZone: 'us-east-1a',
awsSshKey: '-----BEGIN RSA PRIVATE KEY-----\n...',
bundleId: 'nano_2_0',
blueprintId: 'ubuntu_20_04',
githubRepoUrl: 'https://github.com/user/repo',
githubPat: 'ghp_...',
cloudflareZoneId: 'zone-id',
cloudflareApiToken: 'token',
projectName: 'my-app',
accountType: 'custom'
});
// Track progress
const sessionId = result.sessionId;
const eventSource = new EventSource(`http://localhost:3000/sse/${sessionId}`);
デプロイの手順
- VM の作成:指定された設定で Lightsail インスタンスを作成します
- ネットワークの設定:インスタンスのすべてのポートを開放します
- SSH 接続:SSH 経由でインスタンスに接続します
- 環境のセットアップ:Docker、Caddy、その他の依存関係をインストールします
- リポジトリのクローン:GitHub リポジトリをクローンします
- Caddy の設定:リバースプロキシと SSL を設定します
- アプリケーションのデプロイ:
docker compose up -dを実行します - DNS の設定:Cloudflare DNS A レコードを作成します
- 完了:アクセス URL とともに成功を報告します
セキュリティに関する考慮事項
- すべての機密データ(AWS キー、SSH キー、GitHub トークン)は保存時に暗号化されます
- デフォルト設定には環境変数を使用してください
- MCP サーバーに適切なアクセス制御を実装してください
- API トークンとアクセスキーは定期的にローテーションしてください
トラブルシューティング
よくある問題
- SSH 接続のタイムアウト:SSH キーが正しいこと、インスタンスの初期化が完了していることを確認してください
- DNS の作成に失敗:Cloudflare API トークンに DNS 編集権限があることを確認してください
- Docker Compose のエラー:リポジトリに有効な
docker-compose.ymlが含まれていることを確認してください - ポートアクセスの問題:Lightsail のファイアウォールルールで必要なポートが許可されていることを確認してください
ログ
詳細なエラー情報を確認するには、get_vm_status ツールまたは SSE イベントからデプロイログを確認してください。
コントリビューション
- リポジトリをフォークします
- 機能ブランチを作成します
- 変更を加えます
- 該当する場合はテストを追加します
- プルリクエストを送信します
ライセンス
MIT License - 詳細については LICENSE ファイルを参照してください。 const result = await mcpClient.callTool('create_vm', params); return result; } }, redeploy_project: { description: 'Redeploy an existing project', parameters: { type: 'object', properties: { sessionId: { type: 'string' } }, required: ['sessionId'] }, execute: async (params) => { const result = await mcpClient.callTool('redeploy_project', params); return result; } }, get_vm_status: { description: 'Get VM deployment status', parameters: { type: 'object', properties: { sessionId: { type: 'string' } }, required: ['sessionId'] }, execute: async (params) => { const result = await mcpClient.callTool('get_vm_status', params); return result; } } } });
### 4. Real-time Progress Tracking
```typescript
// After deployment starts, track progress
const sessionId = deploymentResult.sessionId;
// Set up SSE connection for real-time updates
const eventSource = new EventSource(`http://localhost:3000/sse/${sessionId}`);
eventSource.onmessage = (event) => {
const data = JSON.parse(event.data);
// Update your UI with deployment progress
switch(data.type) {
case 'progress':
console.log('Progress:', data.data.message);
break;
case 'complete':
console.log('Deployment complete:', data.data.url);
eventSource.close();
break;
case 'error':
console.error('Deployment error:', data.data.error);
eventSource.close();
break;
}
};
使用例
// Direct MCP client usage
const result = await mcpClient.callTool('create_vm', {
awsAccessKey: 'AKIA...',
awsSecretKey: 'secret...',
awsRegion: 'us-east-1',
availabilityZone: 'us-east-1a',
awsSshKey: '-----BEGIN RSA PRIVATE KEY-----\n...',
bundleId: 'nano_2_0',
blueprintId: 'ubuntu_20_04',
githubRepoUrl: 'https://github.com/user/repo',
githubPat: 'ghp_...',
cloudflareZoneId: 'zone-id',
cloudflareApiToken: 'token',
projectName: 'my-app',
accountType: 'custom'
});
// Track progress
const sessionId = result.sessionId;
const eventSource = new EventSource(`http://localhost:3000/sse/${sessionId}`);
デプロイプロセス
- VM の作成:指定された設定で Lightsail インスタンスを作成します
- ネットワークの設定:インスタンスのすべてのポートを開きます
- SSH 接続:SSH 経由でインスタンスに接続します
- 環境の設定:Docker、Caddy、その他の依存関係をインストールします
- リポジトリのクローン:GitHub リポジトリをクローンします
- Caddy の設定:リバースプロキシと SSL を設定します
- アプリケーションのデプロイ:
docker compose up -dを実行します - DNS の設定:Cloudflare DNS A レコードを作成します
- 完了:アクセス URL とともに成功を報告します
セキュリティに関する考慮事項
- すべての機密データ(AWS キー、SSH キー、GitHub トークン)は保存時に暗号化されます
- デフォルト設定には環境変数を使用してください
- MCP サーバーに適切なアクセス制御を実装してください
- API トークンとアクセスキーは定期的にローテーションしてください
トラブルシューティング
よくある問題
- SSH 接続のタイムアウト:SSH キーが正しいこと、インスタンスの初期化が完了していることを確認してください
- DNS の作成に失敗:Cloudflare API トークンに DNS 編集権限があることを確認してください
- Docker Compose のエラー:リポジトリに有効な
docker-compose.ymlが含まれていることを確認してください - ポートアクセスの問題:Lightsail のファイアウォールルールで必要なポートが許可されていることを確認してください
ログ
詳細なエラー情報を確認するには、get_vm_status ツールまたは SSE イベントからデプロイログを確認してください。
コントリビューション
- リポジトリをフォークします
- 機能ブランチを作成します
- 変更を加えます
- 該当する場合はテストを追加します
- プルリクエストを送信します
ライセンス
MIT License - 詳細については LICENSE ファイルを参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。