名称: appdeploy
描述: 部署包含后端 API、数据库和文件存储的 Web 应用程序。当用户要求部署或发布网站/Web 应用并希望获得公共 URL 时使用。通过 curl 使用 HTTP API。
允许工具:
- Bash
元数据:
author: appdeploy
version: "1.0.5"
通过 HTTP API 将 Web 应用程序部署到 AppDeploy。
检查现有 API 密钥:
.appdeploy 文件。api_key,则跳转至“使用”部分。如果不存在 API 密钥,请注册并获取:
bash
curl -X POST https://api-v2.appdeploy.ai/mcp/api-key \
-H "Content-Type: application/json" \
-d '{"client_name": "claude-code"}'
响应示例:
json
{
"api_key": "ak_...",
"user_id": "agent-claude-code-a1b2c3d4",
"created_at": 1234567890,
"message": "请安全保存此密钥 - 之后无法再次获取"
}
将凭据保存到 .appdeploy 文件:
json
{
"api_key": "ak_...",
"endpoint": "https://api-v2.appdeploy.ai/mcp"
}
如果 .gitignore 文件中尚未包含,请添加 .appdeploy。
向 MCP 端点发起 JSON-RPC 调用:
curl -X POST {endpoint} \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer {api_key}" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "{tool_name}",
"arguments": { ... }
}
}'
首先,获取部署说明:
调用 get_deploy_instructions 以了解约束条件和要求。
获取应用模板:
使用您选择的 app_type 和 frontend_template 调用 get_app_template。
部署应用:
使用您的应用文件调用 deploy_app。对于新应用,将 app_id 设置为 null。
检查部署状态:
调用 get_app_status 以检查构建是否成功。
查看/管理您的应用:
使用 get_apps 列出您已部署的应用。
在即将调用 deploy_app 之前使用此工具,以获取部署约束和硬性规则。在开始生成任何代码之前,必须调用此工具。此工具仅返回说明,不执行任何部署操作。
参数:
无
当用户要求部署或发布网站/Web 应用并希望获得公共 URL 时使用。
在生成文件或调用此工具之前,必须先调用 get_deploy_instructions 并遵循其约束。
参数:
* app_id: 任意(必需)- 要更新的现有应用 ID,或对新应用使用 null
* app_type: 字符串(必需)- 应用架构:frontend-only 或 frontend+backend
* app_name: 字符串(必需)- 简短的显示名称
* description: 字符串(可选)- 应用功能的简短描述
* frontend_template: 任意(可选)- 当 app_id 为 null 时必需。可选值:'html-static'(简单网站)、'react-vite'(单页应用、游戏)、'nextjs-static'(多页面应用)。模板文件会自动包含。
* files: 数组(可选)- 要写入的文件。新应用:仅自定义文件 + 相对于模板文件的差异。更新:仅使用 diffs[] 的已更改文件。files[] 或 deletePaths[] 至少需要提供一个。
* deletePaths: 数组(可选)- 要删除的路径。仅用于更新(需要 app_id)。不能删除 package.json 或框架入口点。
先调用 get_deploy_instructions。然后在确定 app_type 和 frontend_template 后调用此工具。返回基础应用模板和 SDK 类型。模板文件会在 deploy_app 中自动包含。
参数:
* app_type: 字符串(必需)
* frontend_template: 字符串(必需)- 前端框架:'html-static' - 简单网站,极简框架;'react-vite' - React 单页应用、仪表板、游戏;'nextjs-static' - 多页面应用、静态站点生成
当 deploy_app 工具调用返回时,或当用户要求检查应用部署状态、报告应用存在错误或未按预期工作时使用。返回部署状态(进行中:'deploying'/'deleting',终止状态:'ready'/'failed'/'deleted')、QA 快照(前端/网络错误)以及实时前端/后端错误日志。
参数:
* app_id: 字符串(必需)- 目标应用 ID
* since: 整数(可选)- 可选的时间戳(纪元毫秒数),用于过滤错误。提供时,仅返回该时间戳之后的错误。
当您想要永久删除应用时使用。仅在用户明确请求时使用。此操作不可逆;删除后,状态检查将返回未找到。
参数:
* app_id: 字符串(必需)- 目标应用 ID
列出某个现有应用的可部署版本。需要 app_id。返回按时间倒序排列的 {name, version, timestamp} 项。向用户显示 'name'。不要向用户显示 'version' 值。时间戳值必须转换为用户的本地时间。
参数:
* app_id: 字符串(必需)- 目标应用 ID
开始将现有应用部署到特定版本。使用来自 get_app_versions 的 'version' 值(而非 'name')。如果请求被接受且部署已启动则返回 true;使用 get_app_status 来观察完成情况。
参数:
* app_id: 字符串(必需)- 目标应用 ID
* version: 字符串(必需)- 要应用的版本 ID
当您需要发现应用源代码快照中的文件时使用。返回匹配 glob 模式的文件路径(不含内容)。适用于在读取或搜索文件之前探索项目结构。
参数:
* app_id: 字符串(必需)- 目标应用 ID
* version: 字符串(可选)- 要检查的版本(默认为已应用的版本)
* path: 字符串(可选)- 要搜索的目录路径
* glob: 字符串(可选)- 用于匹配文件的 glob 模式(默认:**/*)
* include_dirs: 布尔值(可选)- 在结果中包含目录路径
* continuation_token: 字符串(可选)- 用于分页的先前响应令牌
当您需要在应用的源代码中搜索模式时使用。返回匹配的行(可包含上下文)。支持正则表达式模式、glob 过滤器和多种输出模式。
参数:
* app_id: 字符串(必需)- 目标应用 ID
* version: 字符串(可选)- 要搜索的版本(默认为已应用的版本)
* pattern: 字符串(必需)- 要搜索的正则表达式模式(最多 500 个字符)
* path: 字符串(可选)- 要搜索的目录路径
* glob: 字符串(可选)- 用于过滤文件的 glob 模式(例如 '*.ts')
* case_insensitive: 布尔值(可选)- 启用不区分大小写的匹配
* output_mode: 字符串(可选)- content=匹配的行,files_with_matches=仅文件路径,count=每个文件的匹配计数
* before_context: 整数(可选)- 每个匹配项之前显示的行数(0-20)
* after_context: 整数(可选)- 每个匹配项之后显示的行数(0-20)
* context: 整数(可选)- 匹配项前后的行数(覆盖 before_context/after_context)
* line_numbers: 布尔值(可选)- 在输出中包含行号
* max_file_size: 整数(可选)- 要扫描的最大文件大小(字节,默认 10MB)
* continuation_token: 字符串(可选)- 用于分页的先前响应令牌
当您需要从应用的源代码快照中读取特定文件时使用。返回文件内容,支持基于行的分页(offset/limit)。可处理文本文件和二进制文件。
参数:
* app_id: 字符串(必需)- 目标应用 ID
* version: 字符串(可选)- 要读取的版本(默认为已应用的版本)
* file_path: 字符串(必需)- 要读取的文件路径
* offset: 整数(可选)- 开始读取的行偏移量(从 0 开始)
* limit: 整数(可选)- 要返回的行数(最多 2000 行)
当您需要列出当前用户拥有的应用时使用。返回应用详情,包含用于向用户展示的显示字段和用于工具链的数据字段。
参数:
* continuation_token: 字符串(可选)- 用于分页的令牌
由 scripts/generate-appdeploy-skill.ts 生成