mcpField
M
MCP Lightsail Deployment Server

MCP Lightsail Deployment Server

ローカル
github.com/Bayesian4042クラウド・インフラ074 週間前に更新

MCP Lightsail Deployment Server について

MCP Lightsail Deployment Server は、MCP ツールを通じて GitHub のプロジェクトを AWS Lightsail にデプロイします。クラウドデプロイを管理する開発者向けで、Cloudflare DNS の設定と SSE による進捗通知にも対応します。

主な機能

  1. 01Lightsail VM の作成とプロジェクトのデプロイ
  2. 02GitHub からのプロジェクトのクローン
  3. 03Cloudflare DNS の自動設定
  4. 04プロジェクトの再デプロイと状態確認
  5. 05SSE によるリアルタイム進捗確認
  6. 06機密情報の暗号化保存

活用シーン

  1. 01GitHub プロジェクトの Lightsail へのデプロイ
  2. 02既存プロジェクトの更新とデプロイ状態の確認
  3. 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   │
                       └─────────────────┘

インストール

  1. リポジトリをクローンします:

    git clone <repository-url>
    cd mcp-lightsail-server
    
  2. 依存関係をインストールします:

    npm install
    
  3. 環境変数を設定します:

    cp .env.example .env
    # Edit .env with your configuration
    
  4. プロジェクトをビルドします:

    npm run build
    
  5. サーバーを起動します:

    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 アクセスキー ID
  • awsSecretKey(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 リポジトリの URL
  • githubPat(string):GitHub パーソナルアクセストークン
  • cloudflareZoneId(string):Cloudflare Zone ID
  • cloudflareApiToken(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}`);

デプロイの手順

  1. VM の作成:指定された設定で Lightsail インスタンスを作成します
  2. ネットワークの設定:インスタンスのすべてのポートを開放します
  3. SSH 接続:SSH 経由でインスタンスに接続します
  4. 環境のセットアップ:Docker、Caddy、その他の依存関係をインストールします
  5. リポジトリのクローン:GitHub リポジトリをクローンします
  6. Caddy の設定:リバースプロキシと SSL を設定します
  7. アプリケーションのデプロイ:docker compose up -d を実行します
  8. DNS の設定:Cloudflare DNS A レコードを作成します
  9. 完了:アクセス URL とともに成功を報告します

セキュリティに関する考慮事項

  • すべての機密データ(AWS キー、SSH キー、GitHub トークン)は保存時に暗号化されます
  • デフォルト設定には環境変数を使用してください
  • MCP サーバーに適切なアクセス制御を実装してください
  • API トークンとアクセスキーは定期的にローテーションしてください

トラブルシューティング

よくある問題
  1. SSH 接続のタイムアウト:SSH キーが正しいこと、インスタンスの初期化が完了していることを確認してください
  2. DNS の作成に失敗:Cloudflare API トークンに DNS 編集権限があることを確認してください
  3. Docker Compose のエラー:リポジトリに有効な docker-compose.yml が含まれていることを確認してください
  4. ポートアクセスの問題:Lightsail のファイアウォールルールで必要なポートが許可されていることを確認してください
ログ

詳細なエラー情報を確認するには、get_vm_status ツールまたは SSE イベントからデプロイログを確認してください。

コントリビューション

  1. リポジトリをフォークします
  2. 機能ブランチを作成します
  3. 変更を加えます
  4. 該当する場合はテストを追加します
  5. プルリクエストを送信します

ライセンス

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}`);

デプロイプロセス

  1. VM の作成:指定された設定で Lightsail インスタンスを作成します
  2. ネットワークの設定:インスタンスのすべてのポートを開きます
  3. SSH 接続:SSH 経由でインスタンスに接続します
  4. 環境の設定:Docker、Caddy、その他の依存関係をインストールします
  5. リポジトリのクローン:GitHub リポジトリをクローンします
  6. Caddy の設定:リバースプロキシと SSL を設定します
  7. アプリケーションのデプロイ:docker compose up -d を実行します
  8. DNS の設定:Cloudflare DNS A レコードを作成します
  9. 完了:アクセス URL とともに成功を報告します

セキュリティに関する考慮事項

  • すべての機密データ(AWS キー、SSH キー、GitHub トークン)は保存時に暗号化されます
  • デフォルト設定には環境変数を使用してください
  • MCP サーバーに適切なアクセス制御を実装してください
  • API トークンとアクセスキーは定期的にローテーションしてください

トラブルシューティング

よくある問題
  1. SSH 接続のタイムアウト:SSH キーが正しいこと、インスタンスの初期化が完了していることを確認してください
  2. DNS の作成に失敗:Cloudflare API トークンに DNS 編集権限があることを確認してください
  3. Docker Compose のエラー:リポジトリに有効な docker-compose.yml が含まれていることを確認してください
  4. ポートアクセスの問題:Lightsail のファイアウォールルールで必要なポートが許可されていることを確認してください
ログ

詳細なエラー情報を確認するには、get_vm_status ツールまたは SSE イベントからデプロイログを確認してください。

コントリビューション

  1. リポジトリをフォークします
  2. 機能ブランチを作成します
  3. 変更を加えます
  4. 該当する場合はテストを追加します
  5. プルリクエストを送信します

ライセンス

MIT License - 詳細については LICENSE ファイルを参照してください。

コメント

MCP は初めてですか?

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

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