关于 BetaDrop
BetaDrop 是面向 AI 编码 Agent 的 MCP 服务,可发布 iOS 和 Android 构建版本并管理测试分发。它还支持安装检查、分享链接、设备、Webhook 和测试者反馈管理。
主要功能
- 01发布 IPA 和 APK 构建版本
- 02生成无线安装链接
- 03检查构建安装就绪情况
- 04管理构建记录和固定链接
- 05管理设备、Webhook 和反馈
适用场景
- 01向测试者分享新的 iOS 构建版本
- 02无需应用商店轨道即可分发 Android APK
- 03发布前检查签名和安装就绪情况
- 04查看测试者反馈并导出设备列表
MCP 相关
该 MCP 服务向兼容的 AI 客户端提供工具,用于发布和检查构建版本、管理链接、设备与 Webhook,以及读取反馈。服务使用 BetaDrop API Token 进行身份验证。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @betadrop/mcpBETADROP_TOKEN密钥BetaDrop API token, created at Settings, Developer, API tokens. Optional: leave it unset and sign in through the server's own login tool, which stores the token in ~/.betadrop/config.json. Set it for CI or headless use.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
11收录的工具列表 · 更新于 3 周前
此工具无需参数。
详细介绍
@betadrop/mcp
“发布这个构建版本,并把安装链接发给我。” 对你的 AI 助手这样说,测试人员 30 秒后就能开始安装应用。
BetaDrop 可为 iOS .ipa 或 Android .apk 创建无线安装链接:测试人员在手机上打开链接,就能直接通过浏览器安装——无需等待 TestFlight 审核,无需 Play 测试轨道,也无需测试人员账号。如果你用过 Diawi 或 Firebase App Distribution,它的作用与它们相同。
BetaDrop MCP 将这一步交给 AI 助手处理。Claude、Cursor、Copilot、Windsurf、Zed 和 Antigravity 可以通过普通提示词发布构建版本、检查其是否能够安装、管理长期有效的链接、设备和 Webhook,并读取测试人员的反馈——无需打开浏览器标签页、无需使用命令行,也无需离开编辑器。
claude mcp add betadrop -s user -- npx -y @betadrop/mcp
23 个工具。一个 npx 命令。无需构建。 你的助手已经知道如何使用它们——你无需输入工具名称。
⚡ 快速开始(3 步)
第 1 步 — 获取 BetaDrop API Token
- 在 betadrop.app 注册或登录
- 前往 Settings → Developer
- 在 API tokens 下,点击 Create token,为其命名(例如
"My IDE"),然后复制 Token
(它以bd_live_...开头——请妥善保存,因为它只会显示一次!)
步骤 2 — 将 MCP 服务添加到编辑器
提示
🤖 AI 原生安装(最简单) 既然你已经在使用 AI 助手(例如 Cursor Composer、Claude、Copilot 或 Antigravity),就不必手动编辑配置文件!只需将以下任一提示词直接粘贴到 AI 聊天中:
- Cursor:
"Add the @betadrop/mcp server to my global Cursor mcp.json config"- Antigravity:
"Add the @betadrop/mcp server to my Antigravity mcp_config.json"- VS Code(Copilot):
"Add the @betadrop/mcp server to my workspace .vscode/mcp.json"- Claude Desktop:
"Add the @betadrop/mcp server to my Claude Desktop config"AI 会自动为你定位、创建或更新配置文件。完成后,只需刷新或重启编辑器。
否则,请从下方选择你的编辑器并手动配置。
Claude Code
在终端中运行一条命令:
claude mcp add betadrop -s user -- npx -y @betadrop/mcp
这会在所有 Claude Code 项目中全局安装 BetaDrop。
如果只用于单个项目,请移除-s user标志。
验证是否生效:
claude mcp list
启动新的 Claude Code 会话并输入 /mcp,确认连接正常。
Claude Desktop
打开配置文件:
| 操作系统 | 路径 |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Windows | %APPDATA%\Claude\claude_desktop_config.json |
在文件中添加以下内容:
{
"mcpServers": {
"betadrop": {
"command": "npx",
"args": ["-y", "@betadrop/mcp"]
}
}
}
重启 Claude Desktop。 BetaDrop 工具将显示在 🔧 工具面板中。
Cursor
在项目根目录中创建 .cursor/mcp.json:
{
"mcpServers": {
"betadrop": {
"command": "npx",
"args": ["-y", "@betadrop/mcp"]
}
}
}
如需全局访问权限,请使用相同内容创建或编辑 ~/.cursor/mcp.json。
前往 Settings → MCP,点击 Refresh 以加载新的服务。
VS Code(GitHub Copilot)
在项目根目录中创建 .vscode/mcp.json:
{
"servers": {
"betadrop": {
"command": "npx",
"args": ["-y", "@betadrop/mcp"]
}
}
}
也可以全局添加:
| 操作系统 | 路径 |
|---|---|
| macOS | ~/Library/Application Support/Code/User/mcp.json |
| Windows | %APPDATA%\Code\User\mcp.json |
| Linux | ~/.config/Code/User/mcp.json |
使用 Copilot 的 Agent 模式访问 BetaDrop 工具。
Windsurf
编辑 ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"betadrop": {
"command": "npx",
"args": ["-y", "@betadrop/mcp"]
}
}
}
Zed
在 Zed 设置文件中添加:
| 操作系统 | 路径 |
|---|---|
| macOS | ~/Library/Application Support/Zed/settings.json |
| Linux | ~/.config/zed/settings.json |
{
"context_servers": {
"betadrop": {
"command": {
"path": "npx",
"args": ["-y", "@betadrop/mcp"]
}
}
}
}
Antigravity(Google)
从 Settings → MCP Servers 打开 MCP 设置,或直接编辑配置文件:
| 操作系统 | 路径 |
|---|---|
| macOS | ~/.gemini/antigravity-ide/mcp_config.json |
| Windows | %USERPROFILE%\.gemini\antigravity-ide\mcp_config.json |
{
"mcpServers": {
"betadrop": {
"command": "npx",
"args": ["-y", "@betadrop/mcp"]
}
}
}
重启 Antigravity 以加载新的服务。
步骤 3 — 首次设置
添加 MCP 服务后,使用你的 BetaDrop API 令牌进行身份验证。打开 AI 助手并输入:
"Log me in to BetaDrop with token bd_live_xxxxxxxx"
如果设置了 $XDG_CONFIG_HOME,凭据会保存到 $XDG_CONFIG_HOME/betadrop/config.json;否则保存到 ~/.betadrop/config.json,权限为 0600(仅所有者可读)。登出时,服务器会撤销该令牌,并删除配置文件。
✅ 全部设置完成! 现在试试以下任意提示词 👇
🚀 试试这些提示词
无需记住任何工具名称,只需自然地与 AI 助手对话:
📦 发布构建
| 提示词 | 执行结果 |
|---|---|
"Publish ./build/MyApp.ipa to BetaDrop" | 上传 IPA 并返回安装链接 |
"Upload MyApp.apk with notes 'Fixed login crash on Android 14'" | 发布构建,并向测试人员显示发行说明 |
"Push the latest IPA to BetaDrop, expire after 7 days" | 为构建设置基于时间的过期时间 |
"Upload MyApp.ipa and send me the install link" | 返回可分享的 OTA 安装 URL |
📋 构建历史
| 提示词 | 执行结果 |
|---|---|
"Show my recent BetaDrop builds" | 列出你在两个平台上的最新构建 |
"List my iOS builds" | 仅筛选 iOS 构建 |
"Show all expired builds on BetaDrop" | 列出已达到过期时限的构建 |
"Any expired Android builds?" | 按平台筛选已过期的构建 |
"Get the install link for my last build" | 获取可分享的 URL |
🔑 令牌管理
| 提示词 | 执行结果 |
|---|---|
"Show my BetaDrop API tokens" | 列出所有有效令牌及其权限和过期时间 |
"Create a BetaDrop token for CI called 'GitHub Actions'" | 创建一个用于 CI 的新令牌 |
"Make a read-only token called 'QA Team'" | 创建一个权限仅记录为 read 的令牌 |
"Create a token that expires in 30 days" | 创建一个临时访问用的自动过期令牌 |
"Revoke BetaDrop token abc-123" | 永久撤销令牌 |
✅ 发布检查、链接和设备
| 提示词 | 执行结果 |
|---|---|
"Will build/MyApp.ipa install from a link?" | betadrop_inspect 会读取配置文件和签名信息,不会发布构建 |
"Publish MyApp.ipa to the acme-beta standing link" | 发布构建,并将测试人员已有的固定链接指向该构建 |
"What did testers say about the last build?" | 读取测试人员的反馈 |
"Export my test devices for the Apple portal" | 返回以制表符分隔的设备文件 |
"Post new builds to this Slack webhook: https://hooks.slack.com/…" | 创建一个适用于 Slack 格式的 webhook |
👤 账户
| 提示词 | 执行结果 |
|---|---|
"Am I logged in to BetaDrop?" | 显示你的电子邮箱、令牌详情和 API URL |
"Log out of BetaDrop" | 在服务端撤销令牌并清除本地配置 |
🔁 一轮中连续执行
这些是工具,不是聊天机器人,因此助手可以将它们串联起来:
"Build the release APK, publish it to BetaDrop with the last commit message as the notes, and give me the install link."
构建会在你的终端中运行,betadrop_publish 会上传构建产物,并在同一条回复中返回链接。
📖 所有可用工具
八个类别中共有二十三种工具。你无需按名称调用它们,助手会自行选择。
身份验证
| 工具 | 功能 |
|---|---|
betadrop_login | 保存并验证你的 API 令牌 |
betadrop_logout | 在服务端撤销令牌并清除本地凭据 |
betadrop_whoami | 显示你的账户电子邮箱、令牌名称和过期时间 |
发布构建版本
| 工具 | 功能 |
|---|---|
betadrop_publish | 上传 .ipa 或 .apk 文件,并获取可分享的安装链接 |
betadrop_upload_status | 获取最近一次 betadrop_publish 上传的结果(安装链接)。无需参数 — 当大型构建版本的上传时间超过 90 秒的发布时限时,会自动调用 |
betadrop_publish 参数:
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
filePath | string | ✅ | .ipa 或 .apk 文件的绝对路径 |
name | string | 覆盖应用显示名称 | |
version | string | 覆盖版本字符串(例如 1.2.3) | |
buildNumber | string | 覆盖构建编号 | |
bundleId | string | 覆盖 bundle / package ID | |
notes | string | 安装页面上显示的发行说明 | |
expiryType | string | none · time · downloads · devices · combined。none(永久链接)需要付费计划 — 详见下文 | |
expiryTimeDays | number | N 天后过期(与 time 或 combined 搭配使用)。上限为你计划的最大构建版本保留期限 | |
expiryDownloadLimit | number | 下载 N 次后过期(与 downloads 或 combined 搭配使用) | |
expiryDeviceLimit | number | 达到 N 台唯一设备后过期(与 devices 或 combined 搭配使用) | |
standingLink | string | 固定链接的 slug;构建版本上线后将指向该版本(必须已在账户中认领) |
过期设置受计划限制。
none— 永久链接 — 是付费计划功能;若计划不支持此功能,构建版本会以带日期的链接存储,而不会被拒绝。所有计划的expiryTimeDays都会被限制在该计划的最大构建版本保留期限内。发生上述任一情况时,服务端会返回一个retentionClamp对象(requestedDays、appliedDays、maxDays、permanentDenied、message),工具结果会附加一行 ⚠️ 说明实际应用的设置。请注意,只有计划实际缩短了你要求的期限时才会报告此信息:如果未发送expiryTimeDays,即使账户默认值被缩短,该值仍为 null。各计划当前的天数上限见src/lib/limits.json,此处不再重复列出。
上传方式: 文件会先在本地验证(检查 ZIP 魔数),然后上传;上传进度会以 5% 为间隔持续通知你的 AI 客户端。安装链接会在工具结果中返回。上传耗时超过 90 秒的构建版本会在后台继续上传,因此工具调用不会超时 — 随后助手会调用
betadrop_upload_status获取链接。~/.betadrop/upload_status.json中的状态文件会实时跟踪上传进度。
构建历史
| 工具 | 功能 |
|---|---|
betadrop_list_builds | 列出最近的构建版本,可选择筛选条件 |
betadrop_list_expired_builds | 仅列出已过期的构建版本(便捷快捷方式) |
betadrop_list_builds 参数:
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
platform | string | ios 或 android — 省略则列出所有平台 | |
status | string | active · expired · disabled · deprecated · latest | |
page | number | 页码(默认:1) | |
perPage | number | 每页结果数(默认:20,最大:100) |
betadrop_list_expired_builds 参数:
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
platform | string | ios 或 android — 省略则列出所有平台 | |
page | number | 页码(默认:1) | |
perPage | number | 每页结果数(默认:20,最大:100) |
每条结果都包含构建名称、版本、平台、文件大小、状态、日期和可分享的安装链接。
令牌管理
| 工具 | 功能 |
|---|---|
betadrop_token_list | 列出所有有效(未撤销)的 API 令牌 |
betadrop_token_create | 创建新的受限令牌(明文仅显示一次!) |
betadrop_token_delete | 按 ID 永久撤销令牌 |
betadrop_token_create 参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
name | string | ✅ | 令牌标签(最多 100 个字符) |
abilities | string[] | ["publish"]、["read"] 或 ["*"](默认:全部) | |
expiresInDays | number | 令牌有效期(1–365 天)。省略则永不过期 |
每个端点都会强制执行权限:
read令牌可以列出构建版本、读取反馈并运行betadrop_inspect,但不能发布、删除或更改链接、设备或 Webhook。
⚠️ 创建时明文令牌只显示一次。请立即复制!
发布检查
| 工具 | 功能 |
|---|---|
betadrop_inspect | .ipa/.apk 能否通过链接安装?检查配置文件类型和有效期、签名、testOnly/debuggable。不会发布任何内容 |
固定链接
| 工具 | 功能 |
|---|---|
betadrop_list_standing_links | 列出固定链接、每个链接指向的构建版本及关注者数量 |
betadrop_point_standing_link | 将固定链接指向已上传的构建版本;关注者会收到邮件 |
betadrop_publish 也接受 standingLink 参数,可在新构建版本上线时将固定链接指向该版本。
构建版本、反馈和设备
| 工具 | 功能 |
|---|---|
betadrop_delete_build | 删除构建版本;其安装链接将失效 |
betadrop_get_feedback | 获取测试者对构建版本留下的反馈 |
betadrop_list_devices | 列出已注册的 iOS 设备(UDID) |
betadrop_export_devices | 导出 Apple 门户和 fastlane register_devices 接受的设备文件 |
betadrop_invite_device | 测试者在 iPhone 上打开后即可注册设备的链接 |
Webhook
| 工具 | 功能 |
|---|---|
betadrop_list_webhooks | 列出账户上的 Webhook |
betadrop_create_webhook | 将事件发送到 URL、Slack 或 Discord(根据 URL 自动识别) |
betadrop_test_webhook | 立即发送测试事件并报告响应 |
betadrop_delete_webhook | 移除 Webhook |
快速帮助
| 工具 | 功能 |
|---|---|
betadrop_help | 显示所有工具和示例提示词的完整离线参考 |
⚙️ 配置
设置以下环境变量以覆盖默认值:
| 变量 | 默认值 | 说明 |
|---|---|---|
BETADROP_API_URL | https://api.betadrop.app | API 服务 URL(用于可自托管部署) |
BETADROP_APP_URL | https://betadrop.app | 安装链接的前端 URL |
BETADROP_TOKEN | (none) | 用于 CI 的令牌 — 跳过本地配置文件 |
如需为 MCP 服务设置这些变量,请在编辑器配置中与 command 和 args 同级添加 env 块,配置位置见步骤 2:
{
"mcpServers": {
"betadrop": {
"command": "npx",
"args": ["-y", "@betadrop/mcp"],
"env": { "BETADROP_TOKEN": "bd_live_xxx" }
}
}
}
设置 BETADROP_TOKEN 后,无需登录 — 服务会直接使用该令牌:
BETADROP_TOKEN=bd_live_xxx betadrop-mcp
❓ 故障排查
“未找到工具”或没有显示 BetaDrop 工具?
- 确保已安装 Node.js 18+:
node --version - 添加 MCP 配置后重启编辑器
- 在 Claude Code 中运行
/mcp,检查服务状态 - 在 Cursor 中,前往 Settings → MCP 并点击 Refresh
提示“您尚未登录”?
- 让 AI 帮你登录 BetaDrop:
"Log me in to BetaDrop with token bd_live_..." - 或在 MCP 配置中设置
BETADROP_TOKEN环境变量——请参阅配置
上传似乎卡住了?
- 耗时超过 90 秒的构建会在后台继续上传,因此工具调用不会超时
- 让助手检查上传状态(它会调用
betadrop_upload_status)——上传完成后会返回安装链接 - 你也可以直接查看
~/.betadrop/upload_status.json
令牌已过期或被撤销?
- 在 betadrop.app → Settings → Developer → API tokens 创建新令牌
- 使用新令牌重新登录
iOS 构建已下载到手机上,但无法打开?
- Ad-hoc
.ipa只能安装在签名时已包含在配置描述文件中的设备上——发布它不会改变这一点。将 UDID checker 发给测试人员,在 Apple Developer 门户中添加设备,然后重新签名。
BetaDrop 的其他工具
同一个发布步骤,也适用于另外两个平台——一个账户,一套 API 令牌:
@betadrop/cli源代码 | 在终端中运行 betadrop publish app.ipa。它会输出安装链接和可扫描的 QR 码。 |
betadrop-app/upload-action | 从 GitHub Actions 工作流发布。安装链接会显示在运行摘要中,也可以选择将其发布到拉取请求评论中,并在每次推送时自动更新。 |
📚 链接
- BetaDrop — 构建分发平台
- Model Context Protocol — 为此集成提供支持的开放标准
- 报告问题
要求
- Node.js 18+
- 一个 BetaDrop 账户——免费套餐无需绑定银行卡。各套餐的保留期限和 文件大小上限请参阅定价页面。
- 以下受支持的 AI 编辑器之一(Claude、Cursor、VS Code、Windsurf、Zed、Antigravity)
贡献
问题反馈和拉取请求:https://github.com/betadrop-app/betadrop-mcp。如果它帮你省去了 打开浏览器的麻烦,点个 ⭐ 能帮助其他移动团队发现它。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。