BetaDrop

io.github.betadrop-app由 GitHub 帳號 betadrop-app 發布v0.2.5更新於 Oct 24, 2026

Publish iOS and Android builds to testers and manage share links from an AI coding agent.

發布方自己的服務:drop.media

概覽

AI 產生的概覽

BetaDrop 讓 AI 程式助理發布 iOS 與 Android 測試版,並管理安裝連結、裝置、Webhook 和測試者回饋。

可以做什麼
  • 發布與檢查建置:上傳 .ipa 或 .apk,取得 OTA 安裝連結,設定到期條件,發布前檢查簽章
  • 檢視建置紀錄:依平台和狀態列出最近或已到期的建置及安裝連結
  • 管理固定連結:列出固定連結,並把某個固定連結指向已上傳的建置
  • 處理測試者與裝置:讀取測試者回饋,列出並匯出 iOS UDID,產生裝置註冊邀請連結
  • 管理 Webhook:列出、建立、測試和刪除 Slack、Discord 或一般網址的 Webhook
  • 帳號與權杖管理:登入、登出、查看目前帳號,列出、建立和撤銷 API 權杖
適用情境
適合在編輯器中開發 iOS 或 Android 應用程式、希望助理直接發布建置並回傳安裝連結、不必切換到瀏覽器或命令列的情況。也適合向測試者分送臨時建置、需要在同一段對話中檢查簽章、管理固定連結或查看回饋的團隊。
執行需求
透過 npx 在本機執行,需要 Node.js 18 以上版本。需要 BetaDrop 帳號;可用 BETADROP_TOKEN 環境變數驗證,或透過伺服器內建的登入工具登入,權杖會存放在本機設定檔中。可選的 BETADROP_API_URL 與 BETADROP_APP_URL 變數可覆寫預設端點。需要能連線到 BetaDrop API 的網路。
安裝前請注意
API 權杖(BETADROP_TOKEN 或交給登入工具的權杖)是有效憑證,會存放在本機設定檔中,應視為機密。工具可以發布建置、刪除建置和 Webhook、撤銷權杖,以及重新指向固定連結(會寄信給追蹤者)。建立權杖時明文只顯示一次。永久連結和較長的保留期取決於付費方案。建置檔與中繼資料會傳送到 BetaDrop 的伺服器。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 BetaDrop,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

[BetaDrop]

@betadrop/mcp

[npm version] [MCP Registry] [Node] [License: MIT]

"Publish this build and send me the install link." Say that to your AI assistant and a tester can be installing the app thirty seconds later.

BetaDrop puts an iOS .ipa or Android .apk behind an over-the-air install link: testers open the link on their phone and install straight from the browser — no TestFlight review wait, no Play track, no tester accounts. If you have used Diawi or Firebase App Distribution, it does the same job.

BetaDrop MCP moves that step to the other side of your AI assistant. Claude, Cursor, Copilot, Windsurf, Zed and Antigravity can publish builds, check they will install, manage standing links, devices and webhooks, and read tester feedback through ordinary prompts — no browser tab, no CLI, no leaving the editor.

bash
claude mcp add betadrop -s user -- npx -y @betadrop/mcp

23 tools. One npx command. No build step. Your assistant already knows how to use them — you never type a tool name.


⚡ Quick Start (3 Steps)

Step 1 — Get a BetaDrop API Token

  1. Sign up or log in at betadrop.app
  2. Go to Settings → Developer
  3. Under API tokens, click Create token, give it a name (e.g. "My IDE"), and copy the token
    (It starts with bd_live_... — save it somewhere safe, it's shown only once!)

Step 2 — Add the MCP Server to Your Editor

[!TIP] 🤖 AI-Native Installation (Easiest) Since you are already using an AI assistant (like Cursor Composer, Claude, Copilot, or Antigravity), you don't need to edit configuration files manually! Just paste one of the following prompts directly into your AI chat:

  • 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"

The AI will automatically locate, create, or update the configuration file for you. Once it is done, simply refresh/restart your editor.

Otherwise, pick your editor below to configure it manually.

Claude Code

Run one command in your terminal:

bash
claude mcp add betadrop -s user -- npx -y @betadrop/mcp

This installs BetaDrop globally across all your Claude Code projects.
For a single project only, drop the -s user flag.

Verify it worked:

bash
claude mcp list

Start a new Claude Code session and type /mcp to confirm the connection.

Claude Desktop

Open your config file:

OSPath
macOS~/Library/Application Support/Claude/claude_desktop_config.json
Windows%APPDATA%\Claude\claude_desktop_config.json

Add this inside the file:

json
{  "mcpServers": {    "betadrop": {      "command": "npx",      "args": ["-y", "@betadrop/mcp"]    }  }}

Restart Claude Desktop. BetaDrop tools will appear in the 🔧 tools panel.

Cursor

Create .cursor/mcp.json in your project root:

json
{  "mcpServers": {    "betadrop": {      "command": "npx",      "args": ["-y", "@betadrop/mcp"]    }  }}

Or for global access, create/edit ~/.cursor/mcp.json with the same content.

Go to Settings → MCP and click Refresh to pick up the new server.

VS Code (GitHub Copilot)

Create .vscode/mcp.json in your project root:

json
{  "servers": {    "betadrop": {      "command": "npx",      "args": ["-y", "@betadrop/mcp"]    }  }}

Or add it globally:

OSPath
macOS~/Library/Application Support/Code/User/mcp.json
Windows%APPDATA%\Code\User\mcp.json
Linux~/.config/Code/User/mcp.json

Use Copilot in Agent mode to access BetaDrop tools.

Windsurf

Edit ~/.codeium/windsurf/mcp_config.json:

json
{  "mcpServers": {    "betadrop": {      "command": "npx",      "args": ["-y", "@betadrop/mcp"]    }  }}
Zed

Add to your Zed settings file:

OSPath
macOS~/Library/Application Support/Zed/settings.json
Linux~/.config/zed/settings.json
json
{  "context_servers": {    "betadrop": {      "command": {        "path": "npx",        "args": ["-y", "@betadrop/mcp"]      }    }  }}
Antigravity (Google)

Open MCP settings from Settings → MCP Servers or edit the config file directly:

OSPath
macOS~/.gemini/antigravity-ide/mcp_config.json
Windows%USERPROFILE%\.gemini\antigravity-ide\mcp_config.json
json
{  "mcpServers": {    "betadrop": {      "command": "npx",      "args": ["-y", "@betadrop/mcp"]    }  }}

Restart Antigravity to pick up the new server.

Step 3 — First-Time Setup

After adding the MCP server, authenticate with your BetaDrop API token. Open your AI assistant and type:

"Log me in to BetaDrop with token bd_live_xxxxxxxx"

Your credentials are saved to $XDG_CONFIG_HOME/betadrop/config.json when that variable is set, otherwise ~/.betadrop/config.json, with 0600 permissions (owner-read only). On logout, the token is revoked on the server and the config file is removed.

✅ You're all set! Now try any of these prompts 👇


🚀 Try These Prompts

You don't need to memorize any tool names — just talk to your AI assistant naturally:

📦 Publishing Builds
PromptWhat Happens
"Publish ./build/MyApp.ipa to BetaDrop"Uploads the IPA and returns an install link
"Upload MyApp.apk with notes 'Fixed login crash on Android 14'"Publishes with release notes visible to testers
"Push the latest IPA to BetaDrop, expire after 7 days"Sets a time-based expiry on the build
"Upload MyApp.ipa and send me the install link"Returns a shareable OTA install URL
📋 Build History
PromptWhat Happens
"Show my recent BetaDrop builds"Lists your latest builds across both platforms
"List my iOS builds"Filters to iOS only
"Show all expired builds on BetaDrop"Lists builds that have hit their expiry limit
"Any expired Android builds?"Expired builds filtered by platform
"Get the install link for my last build"Retrieves the shareable URL
🔑 Token Management
PromptWhat Happens
"Show my BetaDrop API tokens"Lists all active tokens with abilities and expiry
"Create a BetaDrop token for CI called 'GitHub Actions'"Creates a new token scoped for CI
"Make a read-only token called 'QA Team'"Creates a token whose abilities are recorded as read only
"Create a token that expires in 30 days"Auto-expiring token for temporary access
"Revoke BetaDrop token abc-123"Permanently revokes a token
✅ Release Checks, Links and Devices
PromptWhat Happens
"Will build/MyApp.ipa install from a link?"betadrop_inspect reads the profile and signing without publishing
"Publish MyApp.ipa to the acme-beta standing link"Publishes and points the standing link testers already have at it
"What did testers say about the last build?"Reads tester feedback
"Export my test devices for the Apple portal"Returns the tab-separated devices file
"Post new builds to this Slack webhook: https://hooks.slack.com/…"Creates a webhook formatted for Slack
👤 Account
PromptWhat Happens
"Am I logged in to BetaDrop?"Shows your email, token details, and API URL
"Log out of BetaDrop"Revokes the token server-side and clears local config
🔁 Chained, in one turn

Because these are tools and not a chat bot, your assistant can string them together:

"Build the release APK, publish it to BetaDrop with the last commit message as the notes, and give me the install link."

The build runs in your terminal, betadrop_publish uploads the artifact, and the link comes back in the same reply.


📖 All Available Tools

Twenty-three tools across eight areas. You never call these by name — the assistant picks them.

Authentication

ToolWhat It Does
betadrop_loginSave and validate your API token
betadrop_logoutRevoke the token on the server and clear local credentials
betadrop_whoamiShow your account email, token name, and expiry

Publishing Builds

ToolWhat It Does
betadrop_publishUpload an .ipa or .apk and get a shareable install link
betadrop_upload_statusGet the result (install link) of the most recent betadrop_publish upload. Takes no parameters — called automatically when a large build outruns the 90-second publish window

betadrop_publish parameters:

ParameterTypeRequiredDescription
filePathstring✅Absolute path to the .ipa or .apk file
namestringOverride the app display name
versionstringOverride the version string (e.g. 1.2.3)
buildNumberstringOverride the build number
bundleIdstringOverride the bundle / package ID
notesstringRelease notes shown on the install page
expiryTypestringnone · time · downloads · devices · combined. none (a permanent link) requires a paid plan — see below
expiryTimeDaysnumberExpire after N days (use with time or combined). Clamped to your plan's maximum build retention
expiryDownloadLimitnumberExpire after N downloads (use with downloads or combined)
expiryDeviceLimitnumberExpire after N unique devices (use with devices or combined)
standingLinkstringSlug of a standing link to point at this build once it is live (must already be claimed on the account)

Expiry is capped by your plan. none — a permanent link — is a paid-plan feature; on a plan without it the build is stored as a dated one instead of being rejected. expiryTimeDays is clamped to your plan's maximum build retention on every plan. When either happens the server returns a retentionClamp object (requestedDays, appliedDays, maxDays, permanentDenied, message) and the tool result appends a ⚠️ line explaining what was applied. Note it is reported only when the plan actually shortened something you asked for: send no expiryTimeDays and it stays null even if your account default was clamped down. Current per-plan day ceilings live in src/lib/limits.json rather than being restated here.

How uploads work: The file is validated locally (ZIP magic bytes check) and uploaded, with progress notifications streamed to your AI client in 5% increments. The install link comes back in the tool result. Builds that take longer than 90 seconds keep uploading in the background so the tool call does not time out — the assistant then calls betadrop_upload_status to fetch the link. A status file at ~/.betadrop/upload_status.json tracks the upload in real time.


Build History

ToolWhat It Does
betadrop_list_buildsList recent builds, with optional filters
betadrop_list_expired_buildsList only expired builds (convenience shortcut)

betadrop_list_builds parameters:

ParameterTypeRequiredDescription
platformstringios or android — omit to list all
statusstringactive · expired · disabled · deprecated · latest
pagenumberPage number (default: 1)
perPagenumberResults per page (default: 20, max: 100)

betadrop_list_expired_builds parameters:

ParameterTypeRequiredDescription
platformstringios or android — omit to list all
pagenumberPage number (default: 1)
perPagenumberResults per page (default: 20, max: 100)

Each result includes the build name, version, platform, file size, status, dates, and a shareable install link.


Token Management

ToolWhat It Does
betadrop_token_listList all your active (non-revoked) API tokens
betadrop_token_createCreate a new scoped token (plaintext shown only once!)
betadrop_token_deletePermanently revoke a token by ID

betadrop_token_create parameters:

ParameterTypeRequiredDescription
namestring✅Label for the token (max 100 chars)
abilitiesstring[]["publish"], ["read"], or ["*"] (default: all)
expiresInDaysnumberToken lifetime in days (1–365). Omit for no expiry

Abilities are enforced on every endpoint: a read token can list builds, read feedback and run betadrop_inspect, but cannot publish, delete, or change links, devices or webhooks.

⚠️ The plaintext token is shown exactly once at creation. Copy it immediately!


Release Checks

ToolWhat It Does
betadrop_inspectWill an .ipa/.apk install from a link? Profile type and expiry, signing, testOnly/debuggable. Nothing is published

Standing Links

ToolWhat It Does
betadrop_list_standing_linksStanding links, the build each serves, and follower counts
betadrop_point_standing_linkPoint one at an already-uploaded build; followers are emailed

betadrop_publish also accepts standingLink to point one at the new build as it goes live.

Builds, Feedback and Devices

ToolWhat It Does
betadrop_delete_buildDelete a build; its install link stops working
betadrop_get_feedbackFeedback testers left on a build
betadrop_list_devicesRegistered iOS devices (UDIDs)
betadrop_export_devicesThe devices file Apple's portal and fastlane register_devices accept
betadrop_invite_deviceA link a tester opens on their iPhone to register it

Webhooks

ToolWhat It Does
betadrop_list_webhooksWebhooks on the account
betadrop_create_webhookSend events to a URL, Slack or Discord (detected from the URL)
betadrop_test_webhookDeliver a test event now and report the answer
betadrop_delete_webhookRemove a webhook

Quick Help

ToolWhat It Does
betadrop_helpShow a full offline reference of all tools and example prompts

⚙️ Configuration

Set these environment variables to override the defaults:

VariableDefaultDescription
BETADROP_API_URLhttps://api.betadrop.appAPI server URL (for self-hosted)
BETADROP_APP_URLhttps://betadrop.appFrontend URL for install links
BETADROP_TOKEN(none)Token for CI — skips the local config file

To set them for the MCP server, add an env block alongside command and args in the editor config from Step 2:

json
{  "mcpServers": {    "betadrop": {      "command": "npx",      "args": ["-y", "@betadrop/mcp"],      "env": { "BETADROP_TOKEN": "bd_live_xxx" }    }  }}

With BETADROP_TOKEN set there is no need to log in — the server uses it directly:

bash
BETADROP_TOKEN=bd_live_xxx betadrop-mcp

❓ Troubleshooting

"Tool not found" or no BetaDrop tools showing up?

  • Make sure Node.js 18+ is installed: node --version
  • Restart your editor after adding the MCP config
  • In Claude Code, run /mcp to check the server status
  • In Cursor, go to Settings → MCP and click Refresh

"You are not logged in"?

  • Ask your AI: "Log me in to BetaDrop with token bd_live_..."
  • Or set the BETADROP_TOKEN env variable in your MCP config — see Configuration

Upload seems stuck?

  • Builds that take longer than 90 seconds keep uploading in the background so the tool call does not time out
  • Ask your assistant to check the upload status (it will call betadrop_upload_status) — that returns the install link once the upload lands
  • You can also watch ~/.betadrop/upload_status.json directly

Token expired or revoked?

The iOS build downloads on the phone but will not open?

  • An ad-hoc .ipa only installs on devices that were in the provisioning profile when it was signed — publishing it does not change that. Send the tester the UDID checker, add the device in the Apple Developer portal, and re-sign.

Also from BetaDrop

The same publish step, on the other two surfaces — one account, one set of API tokens:

@betadrop/cli
source
betadrop publish app.ipa from your terminal. Prints the install link and a scannable QR code.
betadrop-app/upload-actionPublish from a GitHub Actions workflow. The install link lands on the run summary and, optionally, in a pull-request comment that updates itself on every push.

📚 Links

Requirements

  • Node.js 18+
  • A BetaDrop account — the free tier needs no card. Retention and file-size ceilings by plan are on the pricing page.
  • One of the supported AI editors (Claude, Cursor, VS Code, Windsurf, Zed, Antigravity)

Contributing

Issues and pull requests: https://github.com/betadrop-app/betadrop-mcp. If this saved you a trip to the browser, a ⭐ helps other mobile teams find it.

License

MIT

來源:README.md,提交 423e9ac

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.2.5最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Drop 整合