关于 MCP Lightsail Deployment Server
MCP Lightsail Deployment Server 通过 MCP 工具将 GitHub 项目部署到 AWS Lightsail,适合需要管理云端部署的开发者。它还可配置 Cloudflare DNS,并通过 SSE 提供实时进度。
主要功能
- 01创建 Lightsail 虚拟机并部署项目
- 02从 GitHub 克隆项目
- 03自动配置 Cloudflare DNS
- 04重新部署并查询部署状态
- 05通过 SSE 跟踪实时进度
- 06加密存储敏感凭据
适用场景
- 01将 GitHub 项目部署到 Lightsail
- 02更新现有项目并查看部署状态
- 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 │
└─────────────────┘
安装
-
克隆仓库:
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 Access Key IDawsSecretKey(string):AWS Secret Access KeyawsRegion(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 TokenprojectName(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}`);
部署流程
- 创建 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 事件查看部署日志,以获取详细的错误信息。
贡献
- Fork 仓库
- 创建功能分支
- 进行更改
- 视情况添加测试
- 提交拉取请求
许可证
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}`);
部署流程
- 创建 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 事件查看部署日志,以获取详细的错误信息。
贡献
- Fork 仓库
- 创建功能分支
- 进行更改
- 视情况添加测试
- 提交拉取请求
许可证
MIT 许可证——详情请参阅 LICENSE 文件。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。