Back to MCP directory
publicPublicdnsLocal runtime

mcp-server

TestingBot官方MCP服务器,使AI助手能够通过对话界面管理TestingBot的测试基础设施,包括实时测试、浏览器设备管理、测试管理、存储管理、截图测试、构建管理、用户团队管理、CDP会话和隧道管理等功能。

article

README

🚀 TestingBot MCP Server

TestingBot官方的模型上下文协议(MCP)服务器实现。该服务器能让AI助手与TestingBot的测试基础设施进行交互,你可以通过对话式界面管理测试、浏览器、设备等。

🚀 快速开始

要开始使用TestingBot MCP Server,你需要满足以下前提条件并完成安装和配置。

前提条件

  • Node.js >= 18(推荐:22.15.0或更高版本)
  • 拥有API凭证的TestingBot账户
  • 兼容MCP的客户端(Claude Desktop、带有Continue扩展的VS Code、Cursor等)

安装

快速设置

全局安装MCP服务器:

npm install -g @testingbot/mcp-server

或者将其添加到你的项目中:

npm install @testingbot/mcp-server

配置

环境变量

将你的TestingBot凭证设置为环境变量:

export TESTINGBOT_KEY="your-api-key"
export TESTINGBOT_SECRET="your-api-secret"

或者在你的项目中创建一个.env文件:

TESTINGBOT_KEY=your-api-key
TESTINGBOT_SECRET=your-api-secret
Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json(macOS)或%APPDATA%/Claude/claude_desktop_config.json(Windows)中添加以下内容:

{
  "mcpServers": {
    "testingbot": {
      "command": "npx",
      "args": ["-y", "@testingbot/mcp-server"],
      "env": {
        "TESTINGBOT_KEY": "your-api-key",
        "TESTINGBOT_SECRET": "your-api-secret"
      }
    }
  }
}
VS Code(带有Continue扩展)

.continue/config.json中添加以下内容:

{
  "mcpServers": [
    {
      "name": "testingbot",
      "command": "npx",
      "args": ["-y", "@testingbot/mcp-server"],
      "env": {
        "TESTINGBOT_KEY": "your-api-key",
        "TESTINGBOT_SECRET": "your-api-secret"
      }
    }
  ]
}
Cursor

.cursor/mcp.json中添加以下内容:

{
  "mcpServers": {
    "testingbot": {
      "command": "npx",
      "args": ["-y", "@testingbot/mcp-server"],
      "env": {
        "TESTINGBOT_KEY": "your-api-key",
        "TESTINGBOT_SECRET": "your-api-secret"
      }
    }
  }
}

✨ 主要特性

  • 🖥️ 实时测试 - 在真实的浏览器和设备上启动交互式手动测试会话
  • 🌐 浏览器与设备管理 - 查询可用的浏览器和真实设备
  • 🧪 测试管理 - 创建、检索、更新和删除包含详细信息的测试
  • 📦 存储管理 - 上传和管理移动应用文件(APK、IPA、ZIP)
  • 📸 截图测试 - 进行跨浏览器截图
  • 🏗️ 构建管理 - 将测试组织到构建中
  • 👤 用户账户 - 查看和更新账户信息
  • 👥 团队管理 - 管理团队设置和团队成员
  • 🔌 Chrome DevTools协议 - 创建CDP会话以实现高级浏览器自动化
  • 🚇 隧道管理 - 管理TestingBot隧道以进行本地测试

💻 使用示例

示例1:运行跨浏览器测试

用户:"显示所有可用于Web测试的浏览器"
助手:[列出所有Web浏览器]

用户:"在Windows 11上的最新版Chrome和最新版Firefox上对https://myapp.com进行截图"
助手:[创建截图任务并返回ID]

用户:"获取任务abc123的截图"
助手:[返回截图URL]

示例2:管理移动应用测试

用户:"从https://example.com/app.apk上传我的应用"
助手:[上传应用并返回tb://app123]

用户:"显示我所有上传的应用"
助手:[列出存储文件]

用户:"显示我最近的10个测试"
助手:[显示最近的测试结果]

示例3:构建管理

用户:"显示我最近的构建"
助手:[列出最近的构建]

用户:"显示构建12345的所有测试"
助手:[列出该构建中的测试]

用户:"将测试xyz789标记为通过,并将构建名称设置为'Release 1.0'"
助手:[更新测试]

示例4:团队与隧道管理

用户:"显示我的团队信息"
助手:[显示团队并发限制和设置]

用户:"列出所有团队成员"
助手:[列出团队中的所有用户]

用户:"显示所有活动隧道"
助手:[列出活动的TestingBot隧道]

示例5:CDP自动化

用户:"在Windows 11上的最新版Chrome上创建一个CDP会话"
助手:[创建会话并返回WebSocket URL]

用户:"显示会话abc123的测试执行步骤"
助手:[显示带有时间戳的详细命令历史记录]

📚 详细文档

可用工具

实时测试

startLiveSession

在TestingBot上启动交互式实时测试会话。打开真实的浏览器或移动设备进行手动测试。 参数

  • platformType:"desktop"或"mobile"
  • desiredURL:要打开的URL
  • desiredOS:操作系统(桌面端为Windows、Mac、Linux;移动端为android、ios)
  • desiredOSVersion:操作系统版本
  • desiredBrowser(仅桌面端):浏览器名称(chrome、firefox、safari、edge、ie)
  • desiredBrowserVersion(仅桌面端):浏览器版本或"latest"
  • desiredDevice(仅移动端):设备名称(例如,"iPhone 14"、"Galaxy S23") 示例提示

"在Windows 11上的最新版Chrome上启动实时测试会话,访问https://example.com" "在iOS 16的iPhone 14上打开https://myapp.com进行手动测试"

startDesktopLiveSession

用于启动桌面浏览器实时测试会话的便捷工具。 参数

  • desiredURL:要打开的URL
  • desiredOS:Windows、Mac或Linux
  • desiredOSVersion:操作系统版本
  • desiredBrowser:chrome、firefox、safari、edge或ie
  • desiredBrowserVersion(可选):浏览器版本或"latest"(默认:latest) 示例提示

"在Mac Monterey上的Firefox 120上启动桌面实时测试会话,访问https://example.com"

startMobileLiveSession

用于启动移动设备实时测试会话的便捷工具。 参数

  • desiredURL:要打开的URL
  • desiredOS:android或ios
  • desiredOSVersion:操作系统版本
  • desiredDevice:设备名称 示例提示

"在Android 13的Galaxy S23上启动移动实时测试会话,访问https://example.com"

浏览器与设备管理

getBrowsers

获取可用于测试的浏览器和平台列表。 参数

  • type(可选):按"web"或"mobile"过滤 示例提示

"显示所有可用于测试的浏览器" "有哪些可用的移动浏览器?"

getDevices

获取可用的移动设备(真实设备和模拟器)列表。 示例提示

"列出所有可用的iOS设备" "显示可用于测试的Android设备"

测试管理

getTests

分页检索最近的测试列表。 参数

  • offset(可选):分页偏移量(默认:0)
  • limit(可选):要检索的测试数量(默认:10,最大:100) 示例提示

"显示我最近的20个测试" "获取最近的测试结果"

getTestDetails

获取特定测试的详细信息,包括:

  • 测试状态、浏览器、平台和时间信息
  • 视频录制URL和截图URL
  • Selenium、浏览器和Appium日志
  • 带有命令和时间戳的测试执行步骤
  • 网络日志、异常日志和JS错误 参数
  • sessionId:测试的会话ID 示例提示

"获取测试会话abc123的详细信息" "显示测试xyz789的视频和日志" "显示测试abc123的执行步骤"

updateTest

更新测试元数据,如名称、状态或构建。 参数

  • sessionId:测试的会话ID
  • name(可选):测试的新名称
  • status(可选):"passed"或"failed"
  • build(可选):构建标识符
  • extra(可选):附加元数据(JSON字符串) 示例提示

"将测试abc123标记为通过" "将测试xyz789的名称更新为'Login Flow Test'"

deleteTest

按会话ID删除测试。 参数

  • sessionId:要删除的测试的会话ID 示例提示

"删除测试abc123"

stopTest

按会话ID停止正在运行的测试。 参数

  • sessionId:要停止的测试的会话ID 示例提示

"停止测试abc123"

构建管理

getBuilds

分页获取构建列表。 参数

  • offset(可选):分页偏移量(默认:0)
  • limit(可选):要检索的构建数量(默认:10,最大:100) 示例提示

"显示我最近的构建"

getTestsForBuild

获取与特定构建ID关联的所有测试。 参数

  • buildId:构建ID 示例提示

"显示构建12345的所有测试"

deleteBuild

删除构建及其关联的所有测试。 参数

  • buildId:要删除的构建ID 示例提示

"删除构建12345"

存储管理

uploadFile

将本地文件(APK、IPA或ZIP)上传到TestingBot存储。 参数

  • localFilePath:要上传的文件的路径 示例提示

"将/path/to/app.apk上传到TestingBot"

uploadRemoteFile

从远程URL将文件上传到TestingBot存储。 参数

  • remoteUrl:要上传的文件的URL 示例提示

"将https://example.com/app.ipa上传到TestingBot"

getStorageFiles

列出TestingBot存储中的所有文件。 参数

  • offset(可选):分页偏移量(默认:0)
  • limit(可选):要检索的文件数量(默认:10,最大:100) 示例提示

"显示我所有上传的应用"

deleteStorageFile

从TestingBot存储中删除文件。 参数

  • appUrl:要删除的文件的app_url 示例提示

"从存储中删除应用tb://app123"

截图测试

takeScreenshot

在多个浏览器和平台上对URL进行截图。 参数

  • url:要截图的URL
  • browsers:浏览器配置数组
    • browserName:浏览器名称(chrome、firefox、safari等)
    • version(可选):浏览器版本或"latest"
    • os:操作系统(WIN11、MAC等)
  • resolution(可选):屏幕分辨率(默认:"1920x1080")
  • waitTime(可选):截图前等待的秒数(默认:5,最大:60)
  • fullPage(可选):捕获整页或视口(默认:false) 示例提示

"在Chrome和Firefox上对https://example.com进行截图" "在移动设备上对我的主页进行截图"

retrieveScreenshots

按截图ID检索截图结果。 参数

  • screenshotIdtakeScreenshot返回的截图ID 示例提示

"获取任务abc123的截图"

getScreenshotList

获取所有截图任务的列表。 参数

  • offset(可选):分页偏移量(默认:0)
  • limit(可选):要检索的任务数量(默认:10,最大:100) 示例提示

"显示我最近的截图任务"

用户管理

getUserInfo

获取当前用户账户信息,包括使用的分钟数、套餐详情和限制。 示例提示

"显示我的账户信息" "我已经使用了多少分钟?"

updateUserInfo

更新用户账户信息。 参数

  • firstName(可选):名字
  • lastName(可选):姓氏
  • email(可选):电子邮件地址 示例提示

"将我的电子邮件更新为newemail@example.com"

团队管理

getTeam

获取团队信息,包括并发限制、允许的并行虚拟机和移动并发。 示例提示

"显示我的团队信息" "我的团队的并发限制是多少?"

getUsersInTeam

列出团队中的所有用户及其角色和访问级别。 参数

  • offset(可选):分页偏移量(默认:0)
  • limit(可选):要检索的用户数量(默认:10,最大:100) 示例提示

"显示所有团队成员" "列出我团队中的用户"

getUserFromTeam

按用户ID获取特定团队成员的详细信息。 参数

  • userId:要检索的用户ID 示例提示

"显示用户12345的详细信息"

Chrome DevTools协议(CDP)

createCdpSession

创建Chrome DevTools协议会话以实现高级浏览器自动化。返回一个WebSocket URL以连接到浏览器。 参数

  • browserName:浏览器名称(chrome、firefox、safari、edge等)
  • browserVersion(可选):浏览器版本或"latest"(默认:latest)
  • platform:操作系统平台
  • screenResolution(可选):屏幕分辨率(例如,"1920x1080")
  • name(可选):会话名称
  • build(可选):构建标识符 示例提示

"在Windows 11上的最新版Chrome上创建一个CDP会话" "在Firefox 120上启动一个CDP会话以进行自动化操作"

隧道管理

getTunnelList

获取所有活动的TestingBot隧道列表。隧道允许测试防火墙后面或本地机器上的网站。 示例提示

"显示所有活动隧道" "列出我的TestingBot隧道"

deleteTunnel

按ID删除活动的TestingBot隧道。这将终止隧道连接。 参数

  • tunnelId:要删除的隧道ID 示例提示

"删除隧道12345"

开发

设置

# 克隆仓库
git clone https://github.com/testingbot/mcp-server.git
cd testingbot-mcp-server

# 安装依赖
npm install

# 设置环境变量
cp .env.example .env
# 使用你的凭证编辑.env

命令

# 构建项目(运行lint、格式化、测试和编译)
npm run build

# 开发模式并开启监听
npm run dev

# 运行测试
npm test

# 代码检查
npm run lint

# 代码格式化
npm run format

本地运行

# 开发模式
npm run dev

# 生产模式
npm start

使用MCP Inspector进行测试

在开发过程中使用MCP Inspector测试工具:

npx @modelcontextprotocol/inspector node dist/index.js

然后在浏览器中打开http://localhost:5173。

🔧 技术细节

项目结构

testingbot-mcp-server/
├── src/
│   ├── index.ts              # 入口点
│   ├── server-factory.ts     # MCP服务器设置
│   ├── config.ts             # 配置管理
│   ├── lib/
│   │   ├── types.ts          # TypeScript类型
│   │   ├── constants.ts      # 常量和枚举
│   │   ├── error.ts          # 错误类
│   │   ├── logger.ts         # 日志设置
│   │   ├── utils.ts          # 实用函数
│   │   └── get-auth.ts       # 认证辅助函数
│   └── tools/
│       ├── browsers.ts       # 浏览器与设备工具
│       ├── tests.ts          # 测试管理工具
│       ├── builds.ts         # 构建管理工具
│       ├── storage.ts        # 存储工具
│       ├── screenshots.ts    # 截图工具
│       ├── user.ts           # 用户管理工具
│       ├── team.ts           # 团队管理工具
│       ├── cdp.ts            # Chrome DevTools协议工具
│       ├── tunnels.ts        # 隧道管理工具
│       └── live.ts           # 实时测试会话工具
├── tests/
│   └── tools/                # 单元测试
├── dist/                     # 编译输出
└── package.json

📄 许可证

本项目采用MIT许可证 - 详情请参阅LICENSE文件。

支持

相关项目

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client