🚀 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文件。
支持
相關項目