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. 01创建 Lightsail 虚拟机并部署项目
  2. 02从 GitHub 克隆项目
  3. 03自动配置 Cloudflare DNS
  4. 04重新部署并查询部署状态
  5. 05通过 SSE 跟踪实时进度
  6. 06加密存储敏感凭据

适用场景

  1. 01将 GitHub 项目部署到 Lightsail
  2. 02更新现有项目并查看部署状态
  3. 03监控部署过程并排查错误

MCP 相关

该 MCP 服务向客户端提供创建虚拟机、部署或重新部署项目、查询状态、列出部署及删除虚拟机等工具。部署进度可通过 SSE 实时查看。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MCP Lightsail 部署服务

一个 Model Context Protocol(MCP)服务,可将项目部署到 AWS Lightsail,通过 Cloudflare 自动配置 DNS,并通过 Server-Sent Events(SSE)实时跟踪进度。

功能

  • 🚀 自动创建 VM:使用自定义配置创建 AWS Lightsail 实例
  • 📦 GitHub 集成:直接从 GitHub 仓库克隆并部署项目
  • 🌐 DNS 管理:自动创建和管理 Cloudflare DNS 记录
  • 🔄 重新部署:通过单条命令拉取最新代码并重启服务
  • 📡 实时更新:通过 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 Access Key ID
  • awsSecretKey (string):AWS Secret Access Key
  • 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 Token
  • projectName (string):部署项目的名称
  • domain (string, optional):域名(默认为 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):首次部署返回的 Session ID
3. get_vm_status

获取已部署 VM 的当前状态。

参数:

  • sessionId (string):部署时返回的 Session ID
4. get_all_deployments

列出所有活动部署。

5. delete_vm

删除 VM 并清理所有相关资源。

参数:

  • sessionId (string):部署时返回的 Session ID
6. force_delete_vm

强制删除 VM 会话(在常规删除失败时使用)。

参数:

  • sessionId (string):部署时返回的 Session 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. Fork 仓库
  2. 创建功能分支
  3. 进行更改
  4. 视情况添加测试
  5. 提交拉取请求

许可证

MIT 许可证——详情请参阅 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. Fork 仓库
  2. 创建功能分支
  3. 进行更改
  4. 视情况添加测试
  5. 提交拉取请求

许可证

MIT 许可证——详情请参阅 LICENSE 文件。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。