🚀 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关联的所有测试。
参数:
"显示构建12345的所有测试"
deleteBuild
删除构建及其关联的所有测试。
参数:
"删除构建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检索截图结果。
参数:
screenshotId:takeScreenshot返回的截图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获取特定团队成员的详细信息。
参数:
"显示用户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隧道。这将终止隧道连接。
参数:
"删除隧道12345"
开发
设置
git clone https://github.com/testingbot/mcp-server.git
cd testingbot-mcp-server
npm install
cp .env.example .env
命令
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文件。
支持
相关项目