Bitrise API Management
STDIOOfficialMCP Server for Bitrise API, enabling app management, build operations and artifact management.
MCP Server for Bitrise API, enabling app management, build operations and artifact management.
MCP Server for the Bitrise API, enabling app management, build operations, artifact management and more.
Please read the official documentation for uv and pylint for more options.
# Install pyenv and python 3.12.6 curl -fsSL https://pyenv.run | bash pyenv install 3.12.6 # Install uv curl -LsSf https://astral.sh/uv/install.sh | sh
This guide uses Claude Desktop as the MCP client, but you can use any other MCP-compatible client and adapt the following config options to your preferred client.
Open Claude settings, then navigate to the Developer tab.
Click Edit config. This creates a config file called claude_desktop_config.json
. Open this file with your preferred editor and add the Bitrise MCP server:
{ "mcpServers": { "bitrise": { "command": "uvx", "env": { "BITRISE_TOKEN": "<YOUR_TOKEN>" }, "args": [ "--from", "git+https://github.com/bitrise-io/[email protected]", "bitrise-mcp" ] } } }
Save the config file and restart Claude Desktop. If everything is set up correctly, you should see a hammer icon next to the message composer.
Follow the official guide to enable Agent mode in Copilot Chat.
Then, open VSCode's settings.json
(either the workspace level or the user level settings), and add the Bitrise MCP server configuration under the mcp.servers
key, and the workspace token input under the mcp.inputs
key:
{ "mcp": { "inputs": [ { "id": "bitrise-workspace-token", "type": "promptString", "description": "Bitrise workspace token", "password": true } ], "servers": { "bitrise": { "command": "uvx", "args": [ "--from", "git+https://github.com/bitrise-io/[email protected]", "bitrise-mcp" ], "type": "stdio", "env": { "BITRISE_TOKEN": "${input:bitrise-workspace-token}" } }, } } }
Save the configuration. VS Code will automatically recognize the change and load the tools into Copilot Chat.
You can limit the number of tools exposed to the MCP client. This is useful if you want to optimize token usage or your MCP client has a limit on the number of tools.
Tools are grouped by their "API group", and you can pass the groups you want to expose as tools. Possible values: apps, builds, workspaces, webhooks, build-artifacts, group-roles, cache-items, pipelines, account, read-only, release-management
.
We recommend using the release-management
API group separately to avoid any confusion with the apps
API group.
Example configuration:
{ "mcpServers": { "bitrise": { "command": "uvx", "env": { "BITRISE_TOKEN": "<YOUR_PAT>" }, "args": [ "--from", "git+https://github.com/bitrise-io/[email protected]", "bitrise-mcp", "--enabled-api-groups", "cache-items,pipelines" ] }, } }
list_apps
sort_by
(optional): Order of the apps: last_build_at (default) or created_atnext
(optional): Slug of the first app in the responselimit
(optional): Max number of elements per page (default: 50)register_app
repo_url
: Repository URLis_public
: Whether the app's builds visibility is "public"organization_slug
: The organization (aka workspace) the app to add toproject_type
(optional): Type of project (ios, android, etc.)provider
(optional): githubfinish_bitrise_app
app_slug
: The slug of the Bitrise app to finish setup forproject_type
(optional): The type of project (e.g., android, ios, flutter, etc.)stack_id
(optional): The stack ID to use for the appmode
(optional): The mode of setupconfig
(optional): The configuration to use for the appget_app
app_slug
: Identifier of the Bitrise appdelete_app
app_slug
: Identifier of the Bitrise appupdate_app
app_slug
: Identifier of the Bitrise appis_public
: Whether the app's builds visibility is "public"project_type
: Type of projectprovider
: Repository providerrepo_url
: Repository URLget_bitrise_yml
app_slug
: Identifier of the Bitrise appupdate_bitrise_yml
app_slug
: Identifier of the Bitrise appbitrise_yml_as_json
: The new Bitrise YML config file contentlist_branches
app_slug
: Identifier of the Bitrise appregister_ssh_key
app_slug
: Identifier of the Bitrise appauth_ssh_private_key
: Private SSH keyauth_ssh_public_key
: Public SSH keyis_register_key_into_provider_service
: Register the key in the provider serviceregister_webhook
app_slug
: Identifier of the Bitrise applist_builds
app_slug
(optional): Identifier of the Bitrise appsort_by
(optional): Order of builds: created_at (default), running_firstbranch
(optional): Filter builds by branchworkflow
(optional): Filter builds by workflowstatus
(optional): Filter builds by status (0: not finished, 1: successful, 2: failed, 3: aborted, 4: in-progress)next
(optional): Slug of the first build in the responselimit
(optional): Max number of elements per page (default: 50)trigger_bitrise_build
app_slug
: Identifier of the Bitrise appbranch
(optional): The branch to build (default: main)workflow_id
(optional): The workflow to buildcommit_message
(optional): The commit message for the buildcommit_hash
(optional): The commit hash for the buildget_build
app_slug
: Identifier of the Bitrise appbuild_slug
: Identifier of the buildabort_build
app_slug
: Identifier of the Bitrise appbuild_slug
: Identifier of the buildreason
(optional): Reason for aborting the buildget_build_log
app_slug
: Identifier of the Bitrise appbuild_slug
: Identifier of the Bitrise buildget_build_bitrise_yml
app_slug
: Identifier of the Bitrise appbuild_slug
: Identifier of the buildlist_build_workflows
app_slug
: Identifier of the Bitrise applist_artifacts
app_slug
: Identifier of the Bitrise appbuild_slug
: Identifier of the buildnext
(optional): Slug of the first artifact in the responselimit
(optional): Max number of elements per page (default: 50)get_artifact
app_slug
: Identifier of the Bitrise appbuild_slug
: Identifier of the buildartifact_slug
: Identifier of the artifactdelete_artifact
app_slug
: Identifier of the Bitrise appbuild_slug
: Identifier of the buildartifact_slug
: Identifier of the artifactupdate_artifact
app_slug
: Identifier of the Bitrise appbuild_slug
: Identifier of the buildartifact_slug
: Identifier of the artifactis_public_page_enabled
: Enable public page for the artifactlist_outgoing_webhooks
app_slug
: Identifier of the Bitrise appdelete_outgoing_webhook
app_slug
: Identifier of the Bitrise appwebhook_slug
: Identifier of the webhookupdate_outgoing_webhook
app_slug
: Identifier of the Bitrise appwebhook_slug
: Identifier of the webhookevents
: List of events to trigger the webhookurl
: URL of the webhookheaders
(optional): Headers to be sent with the webhookcreate_outgoing_webhook
app_slug
: Identifier of the Bitrise appevents
: List of events to trigger the webhookurl
: URL of the webhookheaders
(optional): Headers to be sent with the webhooklist_cache_items
app_slug
: Identifier of the Bitrise appdelete_all_cache_items
app_slug
: Identifier of the Bitrise appdelete_cache_item
app_slug
: Identifier of the Bitrise appcache_item_id
: Identifier of the cache itemget_cache_item_download_url
app_slug
: Identifier of the Bitrise appcache_item_id
: Identifier of the cache itemlist_pipelines
app_slug
: Identifier of the Bitrise appget_pipeline
app_slug
: Identifier of the Bitrise apppipeline_id
: Identifier of the pipelineabort_pipeline
app_slug
: Identifier of the Bitrise apppipeline_id
: Identifier of the pipelinereason
(optional): Reason for aborting the pipelinerebuild_pipeline
app_slug
: Identifier of the Bitrise apppipeline_id
: Identifier of the pipelinelist_group_roles
app_slug
: Identifier of the Bitrise approle_name
: Name of the rolereplace_group_roles
app_slug
: Identifier of the Bitrise approle_name
: Name of the rolegroup_slugs
: List of group slugslist_workspaces
get_workspace
workspace_slug
: Slug of the Bitrise workspaceget_workspace_groups
workspace_slug
: Slug of the Bitrise workspacecreate_workspace_group
workspace_slug
: Slug of the Bitrise workspacegroup_name
: Name of the groupget_workspace_members
workspace_slug
: Slug of the Bitrise workspaceinvite_member_to_workspace
workspace_slug
: Slug of the Bitrise workspaceemail
: Email address of the useradd_member_to_group
group_slug
: Slug of the groupuser_slug
: Slug of the userme
create_connected_app
platform
: The mobile platform for the connected app (ios/android).store_app_id
: The app store identifier for the connected app.workspace_slug
: Identifier of the Bitrise workspace.id
: (Optional) An uuidV4 identifier for your new connected app.manual_connection
: (Optional) Indicates a manual connection.project_id
: (Optional) Specifies which Bitrise Project to associate with.store_app_name
: (Optional) App name for manual connections.store_credential_id
: (Optional) Selection of credentials added on Bitrise.list_connected_apps
workspace_slug
: Identifier of the Bitrise workspace.items_per_page
: (Optional) Maximum number of connected apps per page.page
: (Optional) Page number to return.platform
: (Optional) Filter for a specific mobile platform.project_id
: (Optional) Filter for a specific Bitrise Project.search
: (Optional) Search by bundle ID, package name, or app title.get_connected_app
id
: Identifier of the Release Management connected app.update_connected_app
connected_app_id
: The uuidV4 identifier for your connected app.store_app_id
: The store identifier for your app.connect_to_store
: (Optional) Check validity against the App Store or Google Play.store_credential_id
: (Optional) Selection of credentials added on Bitrise.list_installable_artifacts
connected_app_id
: Identifier of the Release Management connected app.after_date
: (Optional) Start of the interval for artifact creation/upload.artifact_type
: (Optional) Filter for a specific artifact type.before_date
: (Optional) End of the interval for artifact creation/upload.branch
: (Optional) Filter for the Bitrise CI branch.distribution_ready
: (Optional) Filter for distribution ready artifacts.items_per_page
: (Optional) Maximum number of artifacts per page.page
: (Optional) Page number to return.platform
: (Optional) Filter for a specific mobile platform.search
: (Optional) Search by version, filename or build number.source
: (Optional) Filter for the source of installable artifacts.store_signed
: (Optional) Filter for store ready installable artifacts.version
: (Optional) Filter for a specific version.workflow
: (Optional) Filter for a specific Bitrise CI workflow.generate_installable_artifact_upload_url
connected_app_id
: Identifier of the Release Management connected app.installable_artifact_id
: An uuidv4 identifier for the installable artifact.file_name
: The name of the installable artifact file.file_size_bytes
: The byte size of the installable artifact file.branch
: (Optional) Name of the CI branch.with_public_page
: (Optional) Enable public install page.workflow
: (Optional) Name of the CI workflow.get_installable_artifact_upload_and_processing_status
connected_app_id
: Identifier of the Release Management connected app.installable_artifact_id
: The uuidv4 identifier for the installable artifact.set_installable_artifact_public_install_page
connected_app_id
: Identifier of the Release Management connected app.installable_artifact_id
: The uuidv4 identifier for the installable artifact.with_public_page
: Boolean flag for enabling/disabling public install page.list_build_distribution_versions
connected_app_id
: The uuidV4 identifier of the connected app.items_per_page
: (Optional) Maximum number of versions per page.page
: (Optional) Page number to return.list_build_distribution_version_test_builds
connected_app_id
: The uuidV4 identifier of the connected app.version
: The version of the build distribution.items_per_page
: (Optional) Maximum number of test builds per page.page
: (Optional) Page number to return.create_tester_group
connected_app_id
: The uuidV4 identifier of the connected app.name
: The name for the new tester group.auto_notify
: (Optional) Indicates automatic notifications for the group.notify_tester_group
connected_app_id
: The uuidV4 identifier of the connected app.id
: The uuidV4 identifier of the tester group.test_build_id
: The unique identifier of the test build.add_testers_to_tester_group
connected_app_id
: The uuidV4 identifier of the connected app.id
: The uuidV4 identifier of the tester group.user_slugs
: The list of users identified by slugs to be added.update_tester_group
connected_app_id
: The uuidV4 identifier of the connected app.id
: The uuidV4 identifier of the tester group.auto_notify
: (Optional) Setting for automatic email notifications.name
: (Optional) The new name for the tester group.list_tester_groups
connected_app_id
: The uuidV4 identifier of the connected app.items_per_page
: (Optional) Maximum number of tester groups per page.page
: (Optional) Page number to return.get_tester_group
connected_app_id
: The uuidV4 identifier of the connected app.id
: The uuidV4 identifier of the tester group.get_potential_testers
connected_app_id
: The uuidV4 identifier of the connected app.id
: The uuidV4 identifier of the tester group.items_per_page
: (Optional) Maximum number of potential testers per page.page
: (Optional) Page number to return.search
: (Optional) Search for testers by email or username.The Bitrise MCP server organizes tools into API groups that can be enabled or disabled via command-line arguments. The table below shows which API groups each tool belongs to:
Tool | apps | builds | workspaces | webhooks | build-artifacts | group-roles | cache-items | pipelines | account | read-only | release-management |
---|---|---|---|---|---|---|---|---|---|---|---|
list_apps | ✅ | ✅ | |||||||||
register_app | ✅ | ||||||||||
finish_bitrise_app | ✅ | ||||||||||
get_app | ✅ | ✅ | |||||||||
delete_app | ✅ | ||||||||||
update_app | ✅ | ||||||||||
get_bitrise_yml | ✅ | ✅ | |||||||||
update_bitrise_yml | ✅ | ||||||||||
list_branches | ✅ | ✅ | |||||||||
register_ssh_key | ✅ | ||||||||||
register_webhook | ✅ | ||||||||||
list_builds | ✅ | ✅ | |||||||||
trigger_bitrise_build | ✅ | ||||||||||
get_build | ✅ | ✅ | |||||||||
abort_build | ✅ | ||||||||||
get_build_log | ✅ | ✅ | |||||||||
get_build_bitrise_yml | ✅ | ✅ | |||||||||
list_build_workflows | ✅ | ✅ | |||||||||
list_artifacts | ✅ | ✅ | |||||||||
get_artifact | ✅ | ✅ | |||||||||
delete_artifact | ✅ | ||||||||||
update_artifact | ✅ | ||||||||||
list_outgoing_webhooks | ✅ | ✅ | |||||||||
delete_outgoing_webhook | ✅ | ||||||||||
update_outgoing_webhook | ✅ | ||||||||||
create_outgoing_webhook | ✅ | ||||||||||
list_cache_items | ✅ | ✅ | |||||||||
delete_all_cache_items | ✅ | ||||||||||
delete_cache_item | ✅ | ||||||||||
get_cache_item_download_url | ✅ | ✅ | |||||||||
list_pipelines | ✅ | ✅ | |||||||||
get_pipeline | ✅ | ✅ | |||||||||
abort_pipeline | ✅ | ||||||||||
rebuild_pipeline | ✅ | ||||||||||
list_group_roles | ✅ | ✅ | |||||||||
replace_group_roles | ✅ | ||||||||||
list_workspaces | ✅ | ✅ | |||||||||
get_workspace | ✅ | ✅ | |||||||||
get_workspace_groups | ✅ | ✅ | |||||||||
create_workspace_group | ✅ | ||||||||||
get_workspace_members | ✅ | ✅ | |||||||||
invite_member_to_workspace | ✅ | ||||||||||
add_member_to_group | ✅ | ||||||||||
me | ✅ | ✅ | |||||||||
create_connected_app | ✅ | ||||||||||
list_connected_apps | ✅ | ||||||||||
get_connected_app | ✅ | ||||||||||
update_connected_app | ✅ | ||||||||||
list_installable_artifacts | ✅ | ||||||||||
generate_installable_artifact_upload_url | ✅ | ||||||||||
get_installable_artifact_upload_and_processing_status | ✅ | ||||||||||
set_installable_artifact_public_install_page | ✅ | ||||||||||
list_build_distribution_versions | ✅ | ||||||||||
list_build_distribution_version_test_builds | ✅ | ||||||||||
create_tester_group | ✅ | ||||||||||
notify_tester_group | ✅ | ||||||||||
add_testers_to_tester_group | ✅ | ||||||||||
update_tester_group | ✅ | ||||||||||
list_tester_groups | ✅ | ||||||||||
get_tester_group | ✅ | ||||||||||
get_potential_testers | ✅ |
By default, all API groups are enabled. You can specify which groups to enable using the --enabled-api-groups
command-line argument with a comma-separated list of group names.