Bitrise开发环境MCP服务器
MCP Server for Bitrise开发环境,使AI助手能够从模板创建和管理远程开发会话,执行命令,传输文件,并与macOS GUI交互。
特性
- 基于模板的会话:从定义机器映像、启动脚本、模板变量和会话输入的模板创建会话。管理模板和已保存的输入凭据。
- 会话生命周期:创建、列出、启动、停止、更新和删除会话。批量删除已存档的会话。
- 命令执行:在强制交互式登录shell中通过SSH运行会话时运行shell命令(
bash -i -l -c),因此模板的PATH、brew工具、git lfs和语言版本管理器都是可见的。本地SSH代理被转发,因此git over SSH使用调用者的密钥。 - 文件传输:将本地文件/文件夹上传到会话,并将工件下载回来。
- GUI自动化 (仅限macOS):通过屏幕截图、鼠标点击、键盘输入、滚动和拖动操作与会话的图形显示进行交互。
- 远程访问:打开运行会话的SSH和VNC连接。
安装
- VS Code -VS代码IDE的安装
- **** -使用GitHub Copilot安装JetBrains、Visual Studio、Eclipse和Xcode
- Claude应用程序 -Claude Desktop和Claude Code CLI安装指南
- 光标 -Cursor IDE安装指南
- 帆板运动 -Windsurf IDE安装指南
- Gemini CLI -Gemini CLI安装指南
配置
| 变量 | 必填 | 描述 |
|---|
BITRISE_TOKEN | 是 | 个人访问令牌或开发令牌 |
BITRISE_WORKSPACE_ID | 是 | 用于工作区范围API调用的Bitrise工作区ID(段塞) |
BITRISE_API_BASE_URL | 否 | 后端API基本URL(默认值: https://codespaces-api.services.bitrise.io) |
LOG_LEVEL | 没有 | debug, info (默认), warn, error |
可用工具
用户
| 工具 | 说明 |
|---|
bitrise_devenv_me | 获取当前经过身份验证的Bitrise用户信息 |
会话生命周期
| 工具 | 说明 |
|---|
bitrise_devenv_list | 列出所有会话及其状态、名称和模板信息 |
bitrise_devenv_get | 获取特定会话的详细信息,包括状态、机器信息和SSH/VNC凭据 |
bitrise_devenv_create | 从模板创建新会话(包含名称、模板ID、会话输入和功能标志) |
bitrise_devenv_update | 更新会话的名称或描述 |
bitrise_devenv_start | 启动已停止(已存档)的会话 |
bitrise_devenv_stop | 停止正在运行的会话(将其存档以供以后重新启动) |
bitrise_devenv_delete | 永久删除会话 |
bitrise_devenv_delete_archived | 删除所有已存档(已停止)的会话 |
bitrise_devenv_list_session_notifications | 列出会话的通知(例如,代理已停止、权限提示)。支持通过时间戳光标进行分页和轮询。 |
模板
| 工具 | 说明 |
|---|
bitrise_devenv_list_templates | 列出所有可用模板 |
bitrise_devenv_get_template | 获取模板详细信息,包括脚本、图像、模板变量、会话输入和功能标志 |
bitrise_devenv_create_template | 使用图像、机器类型、脚本和输入创建新模板 |
bitrise_devenv_update_template | 更新现有模板 |
bitrise_devenv_delete_template | 删除模板 |
已保存的输入
| 工具 | 说明 |
|---|
bitrise_devenv_list_saved_inputs | 列出所有已保存的输入(凭据/值) |
bitrise_devenv_get_saved_input | 获取特定已保存输入的详细信息 |
bitrise_devenv_create_saved_input | 创建新的已保存输入(键/值,可选机密) |
bitrise_devenv_update_saved_input | 更新现有的已保存输入值 |
bitrise_devenv_delete_saved_input | 删除已保存的输入 |
图像和机器类型
| 工具 | 说明 |
|---|
bitrise_devenv_list_images | 列出模板的可用机器映像 |
bitrise_devenv_list_machine_types | 列出模板的可用机器类型 |
命令和文件操作
| 工具 | 说明 |
|---|
bitrise_devenv_execute | 通过SSH在正在运行的会话上运行shell命令(bash -i -l -c,完整登录shell,本地SSH代理转发)。退货 {exit_code, stdout, stderr} JSON。 |
bitrise_devenv_upload | 将本地文件/文件夹上载到会话 |
bitrise_devenv_download | 从会话中下载文件/文件夹 |
GUI交互(仅限macOS)
| 工具 | 说明 |
|---|
bitrise_devenv_screenshot | 捕获会话的macOS显示(1920x1080分辨率) |
bitrise_devenv_click | 点击显示器上的坐标(左/右/中,单/双) |
bitrise_devenv_mouse_drag | 在两点之间拖动鼠标 |
bitrise_devenv_type | 键入文本作为键盘输入 |
bitrise_devenv_scroll | 在当前鼠标位置向上/向下滚动 |
更喜欢 bitrise_devenv_execute 当动作可脚本化时,通过GUI工具。 打开“系统设置”窗格、启动应用程序、导航菜单或检查最前面的窗口状态是确定的 execute 呼叫-- `open "x-apple.systempreferences:
", open -a , osascript ...,或 defaults read/write` --与截图+坐标估计+点击链相比。仅当不存在可脚本化的路径时(例如第三方应用程序的自定义画布),才回退到GUI工具。
osascript超时安全网:常见的自动化(自动化/可访问性/屏幕录制)是在会话图像上预先批准的,因此osascript通常在没有提示的情况下运行。但是,一个不常见的操作仍然可能触发TCC权限对话框,并且在没有人点击“允许”的情况下,命令将挂起,直到2分钟的执行上限。将osascript调用打包为一小段 timeout例如。 timeout 15s osascript -e '...',所以你失败得很快,可以回到GUI工具。
远程访问
| 工具 | 说明 |
|---|
bitrise_devenv_open_remote_access | 打开SSH/VNC远程访问隧道并获取连接详细信息 |
使用说明
会话和模板
- 基于模板:会话总是从定义机器映像、启动脚本、模板变量和会话输入的模板创建的
- 会话输入:创建会话时,为会话输入提供值(直接值或引用已保存的机密输入)
- 已停止会话:已停止(已存档)的会话可以稍后重新启动
- 始终先检查:呼叫
bitrise_devenv_list 在创建以重用现有会话之前
命令执行
- 执行路径:命令通过从MCP服务器到会话VM的直接SSH连接运行,调用方式为
bash -i -l -c 。两者都登录(-l)和互动(-i)模式被迫如此 /etc/profile, ~/.bash_profile/~/.profile,以及 ~/.bashrc 都是完全开源的——PATH、brew安装的二进制文件、git lfs和语言版本管理器(nvm、pyenv、rbenv、asdf)都是可用的。 - 结构化输出:结果以JSON对象的形式返回
exit_code, stdout,以及 stderr 领域。 exit_code 是成功/失败的真理之源。 - Bash启动诊断:因为
-i 如果不使用TTY,bash在每次调用时都会向stderr发出两行无害的代码(cannot set terminal process group, no job control in this shell).这些不是用户命令中的错误,可以忽略。 - SSH代理转发:如果MCP主机有正在运行的本地SSH代理(
SSH_AUTH_SOCK 则将其转发到远程会话中。远程命令,如 git push git@github.com:..., git clone git@...,以及 ssh some-other-host 使用呼叫者的本地密钥进行身份验证——不需要设置每个会话的凭据。 - 超时:命令的执行限制为2分钟。
- Bash功能:管道、重定向、命令链和子shell都按预期工作。
- 不通过执行进行文件传输:请使用专用的上传/下载工具。
文件传输
- 上传:本地文件/文件夹被压缩到tar.gz,通过签名的URL上传,然后在会话中提取
- 下载:远程文件/文件夹被存档,通过签名的URL下载,然后在本地提取
屏幕分辨率
- 1920x1080:macOS GUI操作使用1920x1080屏幕分辨率
- 坐标系:点击并拖动坐标必须在实际屏幕坐标空间(1920x1080)中,而不是在屏幕截图图像像素坐标中