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:要打开的URLdesiredOS:操作系统(桌面端为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:要打开的URLdesiredOS:Windows、Mac或LinuxdesiredOSVersion:操作系统版本desiredBrowser:chrome、firefox、safari、edge或iedesiredBrowserVersion(可选):浏览器版本或"latest"(默认:latest) 示例提示:
"在Mac Monterey上的Firefox 120上启动桌面实时测试会话,访问https://example.com"
startMobileLiveSession
用于启动移动设备实时测试会话的便捷工具。 参数:
desiredURL:要打开的URLdesiredOS:android或iosdesiredOSVersion:操作系统版本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:测试的会话IDname(可选):测试的新名称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:要截图的URLbrowsers:浏览器配置数组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获取特定团队成员的详细信息。 参数:
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文件。
支持
- 📧 邮箱:support@testingbot.com
- 🐛 问题反馈:GitHub Issues
- 📖 文档:TestingBot MCP Documentation
微信扫一扫