@deploygate/mcp
v1.5.1
Published
DeployGate MCP server: upload mobile apps, manage distribution pages, set up CI/CD, and onboard your team. Supports iOS (IPA) and Android (APK/AAB).
Readme
DeployGate Agent Plugin
DeployGate agent integration for Claude Code and Codex: upload mobile apps, manage distribution pages, set up CI/CD, and onboard your team. Supports iOS (IPA) and Android (APK/AAB).
Installation
This repository includes plugin metadata for both Claude Code and Codex:
- Claude Code:
plugin/.claude-plugin/plugin.jsonand.claude-plugin/marketplace.json - Codex:
plugin/.codex-plugin/plugin.jsonand.agents/plugins/marketplace.json
Claude Code
Add the marketplace and install the plugin from within Claude Code:
/plugin marketplace add DeployGate/deploygate-agent-plugin
/plugin install deploygate@deploygate-marketplaceCodex
Add the marketplace from your shell:
codex plugin marketplace add DeployGate/deploygate-agent-pluginThen enable or install the deploygate plugin from the configured DeployGate marketplace in Codex.
Standalone MCP server (any MCP client)
Beyond the Claude Code / Codex plugins, the server is published to npm as
@deploygate/mcp and can be added to any MCP client via npx — no install
step required.
Add it to your client's MCP configuration (Claude Desktop, Cursor, Cline,
and others use the same mcpServers shape):
{
"mcpServers": {
"deploygate": {
"command": "npx",
"args": ["-y", "@deploygate/mcp"]
}
}
}Authentication is the same as the plugin — see the Authentication section below for the login flow and the platform-specific token storage path. The token is shared with the plugin installs.
Getting Started
After installation, start the guided onboarding flow:
- Claude Code: run
/deploygate:setup - Codex: mention
$deploygate:setup
- Account creation — sign in via browser-based device authorization (
login_start→ approve in browser →login_wait) - App upload — build and upload your IPA/APK/AAB
- Distribution page — create a distribution page with an install link
- Notifications — connect Slack/Teams/Chatwork
- iOS device setup — UDID registration for Ad Hoc builds (if applicable)
Authentication
The plugin signs you in to DeployGate via a browser-based device authorization code:
- Ask your agent to set up DeployGate. Under the hood it calls the
login_starttool, which returns a URL and a short code. - Open the URL in a browser where you are signed in to DeployGate and click approve.
- The agent calls
login_wait, which returns your workspace information once you approve.
The issued token is stored at ~/.config/deploygate/token (on Windows, %APPDATA%\deploygate\token) with 0600 permissions and reused across sessions. Run the logout tool to revoke it server-side and delete the local file.
Skills
Claude Code invokes plugin skills as slash commands. Codex invokes plugin skills by mentioning the skill name with $.
| Skill | Claude Code | Codex | Description |
|---|---|---|---|
| setup | /deploygate:setup | $deploygate:setup | Full onboarding flow with step-by-step progress display |
| deploy | /deploygate:deploy | $deploygate:deploy | Build and upload the current project to DeployGate |
| ci-setup | /deploygate:ci-setup | $deploygate:ci-setup | CI/CD integration — GitHub Actions, Bitrise, CircleCI (see external CI guide) |
| sdk-setup | /deploygate:sdk-setup | $deploygate:sdk-setup | Android SDK integration (crash reporting, screen capture). iOS SDK is currently not recommended. |
MCP Tools
Authentication
| Tool | Description |
|---|---|
| login_start | Begin a browser-based device authorization login. Returns a URL for the user to open and approve. |
| login_wait | Poll until the user approves login_start. On success, persists the token to ~/.config/deploygate/token (0600). |
| logout | Revoke the stored token on the server and delete the local token file. |
| get_user_info | Get current user information (workspace names, projects). Auto-clears the local token on a 401 response. |
App Upload
| Tool | Description |
|---|---|
| upload_app | Upload an app binary (IPA/APK/AAB) to DeployGate. |
Parameters:
owner_name(required): Owner name (user or project)file_path(required): Absolute path to the app binarymessage: Build description (max 32,766 bytes; auto-truncated if exceeded)distribution_key: Distribution page key to update. Takes priority overdistribution_name.distribution_name: Distribution page name. Creates a new page if not found. Ignored ifdistribution_keyis also specified.release_note: Release note for the distribution pagedisable_notify: Disable push notification to testers (iOS only)ios_simulator_zip: Path to iOS simulator build zip for Instant Device (browser-based preview). Must be uploaded together with an IPA.
Distribution Page Management
| Tool | Description |
|---|---|
| create_distribution | Create a new distribution page. Returns access_key for the URL https://deploygate.com/distributions/{access_key} |
| list_distributions | List all distribution pages for an app |
| get_distribution | Get details of a specific distribution page |
| update_distribution | Update a distribution page. active and release_scope are always required — use get_distribution first to retrieve current values. |
| delete_distribution | Delete a distribution page. Uploaded builds (binaries) are preserved. |
Release scope options (release_scope):
public— publicly accessible, indexable by search enginesunlisted— accessible to anyone with the link (default)passcode— requires a passcode (passcodeparameter required)authorized_only— only accessible to logged-in team members
iOS UDID Management
| Tool | Description |
|---|---|
| get_udids | Get iOS device UDIDs for an app. Use unprovisioned_only=true to find devices not yet in the provisioning profile. |
Notification Settings
| Tool | Description |
|---|---|
| get_notification_settings_url | Generate the URL for configuring Slack/Teams/Chatwork notifications. Supports distribution-level and app-level settings. |
Member Management
| Tool | Description |
|---|---|
| add_member | Onboarding shortcut: add a member with a role (owner/developer/tester). Orchestrates workspace + project + role-team add, and attaches the role team to a target app for non-owner roles. Locale-aware (resolves role team by stable role keyword). Free plan limit: 2 members. |
| add_team_member | Atomic single-step: add a user (who is already a project member) to a specific team in the project. |
| list_team_members | List members of a specific team. Use get_project to discover team names. |
| remove_team_member | Remove a member from a specific team in the project. |
Shared Team Management
| Tool | Description |
|---|---|
| create_shared_team | Create a workspace-level shared team for cross-project use |
| add_shared_team_member | Add a member to a shared team (email or username, not both) |
| assign_shared_team_to_app | Assign a shared team to an app (tester-level access) |
GitHub Actions Templates
Pre-built workflow templates in plugin/templates/:
| Template | Description |
|---|---|
| deploygate-upload.yml | Upload to DeployGate on push to main |
| deploygate-pr.yml | PR-based distribution — auto-create distribution page with QR code, cleanup on close |
Development
npm install # Install dependencies (also installs the pre-commit hook)
npm run build # Compile TypeScript (does not touch plugin/scripts/bundle.js)
npm test # Run tests
npm start # Run the MCP server from dist/index.js (no bundle needed)
npm run bundle # Regenerate plugin/scripts/bundle.js for plugin-level testingplugin/scripts/bundle.js is the single-file build that end users execute when the plugin is loaded by Codex / Claude Code. For day-to-day iteration (unit tests, running the server via npm start) you do not need to touch it. When you want to verify the plugin end-to-end through the Codex / Claude Code plugin loader, run npm run bundle to refresh it locally — but do not commit the result. The release-please workflow regenerates and commits the bundle automatically when it opens or updates a release PR, and a pre-commit hook in .githooks/ (installed via the prepare script) blocks accidental commits.
Verifying changes in Claude Code
Register your local checkout as a marketplace and install the plugin (once):
/plugin marketplace add /path/to/deploygate-agent-plugin /plugin install deploygate@<marketplace-name>Iterate:
- Edit source under
src/. - Run
npm run bundleto regenerateplugin/scripts/bundle.js. - Restart your Claude Code session (
/exitand relaunch, or/restart). The MCP server is spawned as a subprocess at session start, so a fresh session picks up the new bundle automatically — noplugin reinstallis needed.
- Edit source under
plugin reinstallis only required when you changeplugin/.claude-plugin/plugin.json,.agents/plugins/marketplace.json, or add/remove skills underplugin/skills/.
Releasing
Releases are automated by release-please.
Branching and commits
- All work lands on
mainvia squash-merged pull requests. - PR titles must follow Conventional Commits:
feat: …→ minor version bumpfix: …→ patch version bumpfeat!: …or a body containingBREAKING CHANGE: …→ major version bumpchore:,docs:,refactor:,test:,build:,ci:→ no version bump (and, by default, do not appear in the changelog unlesschangelog-sectionsis configured in.release-please-config.json)
- Individual commits inside a PR can have any title; only the squash-merge title matters.
How a release happens
- Merge a
feat:orfix:PR intomain. - The
Releaseworkflow opens (or updates) a Release PR that bumps the version inpackage.json, bothplugin/.claude-plugin/plugin.jsonandplugin/.codex-plugin/plugin.json, thedeploygateentry in.claude-plugin/marketplace.json, and.release-please-manifest.json, and appends toCHANGELOG.md. - Merge the Release PR.
- The
Releaseworkflow runs again, creates the git tagdeploygate--vX.Y.Z, and publishes a GitHub Release.
Installing a specific version
End users can pin to a tag with:
/plugin install DeployGate/[email protected]Without a pin, claude plugin install follows main. Users can fetch the latest published tag with claude plugin update deploygate.
Support & Project Status
This plugin is open-source software provided as-is on a best-effort basis. See SUPPORT.md for where to get help and what to expect, and CONTRIBUTING.md for how to contribute. All participation in this repository is governed by our Code of Conduct.
License
MIT — DeployGate Inc.
