@betadrop/mcp
Distribute iOS & Android builds to testers — right from your AI-powered IDE.
BetaDrop MCP connects your AI coding assistant (Claude, Cursor, Copilot, etc.) to BetaDrop so you can publish builds, track releases, and manage API tokens — all through natural language prompts. No browser, no CLI, no context-switching.
⚡ Quick Start (3 Steps)
Step 1 — Get a BetaDrop API Token
- Sign up or log in at betadrop.app
- Go to Settings → 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:
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:
claude mcp list
Start a new Claude Code session and type /mcp to confirm the connection.
Claude Desktop
Open your config file:
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Windows | %APPDATA%\Claude\claude_desktop_config.json |
Add this inside the file:
{
"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:
{
"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:
{
"servers": {
"betadrop": {
"command": "npx",
"args": ["-y", "@betadrop/mcp"]
}
}
}
Or add it globally:
| 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:
{
"mcpServers": {
"betadrop": {
"command": "npx",
"args": ["-y", "@betadrop/mcp"]
}
}
}
Zed
Add to your Zed settings file:
| macOS | ~/Library/Application Support/Zed/settings.json |
| Linux | ~/.config/zed/settings.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:
| macOS | ~/.gemini/antigravity-ide/mcp_config.json |
| Windows | %USERPROFILE%\.gemini\antigravity-ide\mcp_config.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 ~/.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
"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
"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
"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'" | Token with read permission only |
"Create a token that expires in 30 days" | Auto-expiring token for temporary access |
"Revoke BetaDrop token abc-123" | Permanently revokes a token |
👤 Account
"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 |
📖 All Available Tools
Authentication
betadrop_login | Save and validate your API token |
betadrop_logout | Revoke the token on the server and clear local credentials |
betadrop_whoami | Show your account email, token name, and expiry |
Publishing Builds
betadrop_publish | Upload an .ipa or .apk and get a shareable install link |
Parameters:
filePath | string | ✅ | Absolute path to the .ipa or .apk file |
name | string | | Override the app display name |
version | string | | Override the version string (e.g. 1.2.3) |
buildNumber | string | | Override the build number |
bundleId | string | | Override the bundle / package ID |
notes | string | | Release notes shown on the install page |
expiryType | string | | none · time · downloads · devices · combined |
expiryTimeDays | number | | Expire after N days (use with time or combined) |
expiryDownloadLimit | number | | Expire after N downloads (use with downloads or combined) |
expiryDeviceLimit | number | | Expire after N unique devices (use with devices or combined) |
How uploads work: The file is validated locally (ZIP magic bytes check), then uploaded in the background. Progress notifications are streamed to your AI client in 5% increments. A status file at ~/.betadrop/upload_status.json tracks the upload in real time.
Build History
betadrop_list_builds | List recent builds, with optional filters |
betadrop_list_expired_builds | List only expired builds (convenience shortcut) |
betadrop_list_builds parameters:
platform | string | | ios or android — omit to list all |
status | string | | active · expired · disabled · deprecated · latest |
page | number | | Page number (default: 1) |
perPage | number | | Results per page (default: 20, max: 100) |
betadrop_list_expired_builds parameters:
platform | string | | ios or android — omit to list all |
page | number | | Page number (default: 1) |
perPage | number | | Results 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
betadrop_token_list | List all your active (non-revoked) API tokens |
betadrop_token_create | Create a new scoped token (plaintext shown only once!) |
betadrop_token_delete | Permanently revoke a token by ID |
betadrop_token_create parameters:
name | string | ✅ | Label for the token (max 100 chars) |
abilities | string[] | | ["publish"], ["read"], or ["*"] (default: all) |
expiresInDays | number | | Token lifetime in days (1–365). Omit for no expiry |
⚠️ The plaintext token is shown exactly once at creation. Copy it immediately!
Quick Help
betadrop_help | Show a full offline reference of all tools and example prompts |
❓ 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
Upload seems stuck?
- Large builds upload in the background. Check progress at
~/.betadrop/upload_status.json
- The AI will notify you when the upload completes
Token expired or revoked?
📚 Links
Requirements
- Node.js 18+
- A BetaDrop account
- One of the supported AI editors (Claude, Cursor, VS Code, Windsurf, Zed, Antigravity)
License
MIT