Bitrise MCP Server
by bitrise-io
The Bitrise MCP Server provides an interface to the Bitrise API, enabling app management, build operations, artifact management and more. It allows users to interact with Bitrise services through a standardized interface.
Last updated: N/A
Bitrise MCP Server
MCP Server for the Bitrise API, enabling app management, build operations, artifact management and more.
Features
- Comprehensive API Access: Access to Bitrise APIs including apps, builds, artifacts, and more.
- Authentication Support: Secure API token-based access to Bitrise resources.
- Detailed Documentation: Well-documented tools with parameter descriptions.
Setup
Environment Setup
Example setting up the environment
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
Bitrise API Token
- Go to your Bitrise Account Settings/Security.
- Navigate to the "Personal access tokens" section.
- Copy the generated token.
Use with Claude Desktop
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.
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
.
Example configuration:
{
"mcpServers": {
"bitrise": {
"command": "<ABSOLUTE_PATH_TO>/uvx",
"env": {
"BITRISE_TOKEN": "<YOUR_PAT>"
},
"args": [
"--from",
"git+https://github.com/bitrise-io/[email protected]",
"bitrise-mcp",
"--enabled-api-groups",
"cache-items,pipelines"
]
}
}
}
Tools
Apps
-
list_apps
- List all the apps available for the authenticated account
- Arguments:
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
- Add a new app to Bitrise
- Arguments:
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): github
-
finish_bitrise_app
- Finish the setup of a Bitrise app
- Arguments:
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 app
-
get_app
- Get the details of a specific app
- Arguments:
app_slug
: Identifier of the Bitrise app
-
delete_app
- Delete an app from Bitrise
- Arguments:
app_slug
: Identifier of the Bitrise app
-
update_app
- Update an app
- Arguments:
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 URL
-
get_bitrise_yml
- Get the current Bitrise YML config file of a specified Bitrise app
- Arguments:
app_slug
: Identifier of the Bitrise app
-
update_bitrise_yml
- Update the Bitrise YML config file of a specified Bitrise app
- Arguments:
app_slug
: Identifier of the Bitrise appbitrise_yml_as_json
: The new Bitrise YML config file content
-
list_branches
- List the branches with existing builds of an app's repository
- Arguments:
app_slug
: Identifier of the Bitrise app
-
register_ssh_key
- Add an SSH-key to a specific app
- Arguments:
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 service
-
register_webhook
- Register an incoming webhook for a specific application
- Arguments:
app_slug
: Identifier of the Bitrise app
Builds
-
list_builds
- List all the builds of a specified Bitrise app or all accessible builds
- Arguments:
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
- Trigger a new build/pipeline for a specified Bitrise app
- Arguments:
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 build
-
get_build
- Get a specific build of a given app
- Arguments:
app_slug
: Identifier of the Bitrise appbuild_slug
: Identifier of the build
-
abort_build
- Abort a specific build
- Arguments:
app_slug
: Identifier of the Bitrise appbuild_slug
: Identifier of the buildreason
(optional): Reason for aborting the build
-
get_build_log
- Get the build log of a specified build of a Bitrise app
- Arguments:
app_slug
: Identifier of the Bitrise appbuild_slug
: Identifier of the Bitrise build
-
get_build_bitrise_yml
- Get the bitrise.yml of a build
- Arguments:
app_slug
: Identifier of the Bitrise appbuild_slug
: Identifier of the build
-
list_build_workflows
- List the workflows of an app
- Arguments:
app_slug
: Identifier of the Bitrise app
Build Artifacts
-
list_artifacts
- Get a list of all build artifacts
- Arguments:
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
- Get a specific build artifact
- Arguments:
app_slug
: Identifier of the Bitrise appbuild_slug
: Identifier of the buildartifact_slug
: Identifier of the artifact
-
delete_artifact
- Delete a build artifact
- Arguments:
app_slug
: Identifier of the Bitrise appbuild_slug
: Identifier of the buildartifact_slug
: Identifier of the artifact
-
update_artifact
- Update a build artifact
- Arguments:
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 artifact
Webhooks
-
list_outgoing_webhooks
- List the outgoing webhooks of an app
- Arguments:
app_slug
: Identifier of the Bitrise app
-
delete_outgoing_webhook
- Delete the outgoing webhook of an app
- Arguments:
app_slug
: Identifier of the Bitrise appwebhook_slug
: Identifier of the webhook
-
update_outgoing_webhook
- Update an outgoing webhook for an app
- Arguments:
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 webhook
-
create_outgoing_webhook
- Create an outgoing webhook for an app
- Arguments:
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 webhook
Cache Items
-
list_cache_items
- List the key-value cache items belonging to an app
- Arguments:
app_slug
: Identifier of the Bitrise app
-
delete_all_cache_items
- Delete all key-value cache items belonging to an app
- Arguments:
app_slug
: Identifier of the Bitrise app
-
delete_cache_item
- Delete a key-value cache item
- Arguments:
app_slug
: Identifier of the Bitrise appcache_item_id
: Identifier of the cache item
-
get_cache_item_download_url
- Get the download URL of a key-value cache item
- Arguments:
app_slug
: Identifier of the Bitrise appcache_item_id
: Identifier of the cache item
Pipelines
-
list_pipelines
- List all pipelines and standalone builds of an app
- Arguments:
app_slug
: Identifier of the Bitrise app
-
get_pipeline
- Get a pipeline of a given app
- Arguments:
app_slug
: Identifier of the Bitrise apppipeline_id
: Identifier of the pipeline
-
abort_pipeline
- Abort a pipeline
- Arguments:
app_slug
: Identifier of the Bitrise apppipeline_id
: Identifier of the pipelinereason
(optional): Reason for aborting the pipeline
-
rebuild_pipeline
- Rebuild a pipeline
- Arguments:
app_slug
: Identifier of the Bitrise apppipeline_id
: Identifier of the pipeline
Group Roles
-
list_group_roles
- List group roles for an app
- Arguments:
app_slug
: Identifier of the Bitrise approle_name
: Name of the role
-
replace_group_roles
- Replace group roles for an app
- Arguments:
app_slug
: Identifier of the Bitrise approle_name
: Name of the rolegroup_slugs
: List of group slugs
Workspaces
-
list_workspaces
- List the workspaces the user has access to
-
get_workspace
- Get details for one workspace
- Arguments:
workspace_slug
: Slug of the Bitrise workspace
-
get_workspace_groups
- Get the groups in a workspace
- Arguments:
workspace_slug
: Slug of the Bitrise workspace
-
create_workspace_group
- Create a group in a workspace
- Arguments:
workspace_slug
: Slug of the Bitrise workspacegroup_name
: Name of the group
-
get_workspace_members
- Get the members in a workspace
- Arguments:
workspace_slug
: Slug of the Bitrise workspace
-
invite_member_to_workspace
- Invite a member to a workspace
- Arguments:
workspace_slug
: Slug of the Bitrise workspaceemail
: Email address of the user
-
add_member_to_group
- Add a member to a group
- Arguments:
group_slug
: Slug of the groupuser_slug
: Slug of the user
Account
me
- Get info from the currently authenticated user account
API Groups
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 | |------|------|--------|------------|----------|----------------|-------------|-------------|-----------|---------|-----------| | 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 | | | | | | | | | ✅ | ✅ |
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.