使用说明
Appium MCP服务器-维基百科POC
🎯 项目概述
A. 定制模型上下文协议(MCP)服务器 这使得人工智能驱动的移动测试自动化能够对抗 维基百科安卓阿尔法APK 通过BrowserStack应用程序自动化在真实设备上运行。
重要:这是一个 服务器端 项目。MCP配置(
claude_desktop_config.json)生活在 客户端,位于Claude Desktop的配置文件夹中。
🚀 快速开始
⚡ 快速回答: 看 START-SERVER.md 获取分步说明!
- 安装依赖项:
npm install - 设置凭据:复制
.env.example到.env并填写您的BrowserStack详细信息 - 添加到Claude桌面配置 (参见 设置.md 或 START-SERVER.md)
- 重新启动克劳德桌面
- 开始使用工具 在克劳德的谈话中!
🏗️ 建筑
┌─────────────────────┐ stdio ┌──────────────────────┐
│ Claude Desktop / │ ◄──────────────────► │ Appium MCP Server │
│ VS Code Copilot │ │ (server.js) │
│ │ │ │
│ mcp.json or │ │ - Device control │
│ claude_desktop_ │ │ - Screen analysis │
│ config.json │ │ - Test generation │
└─────────────────────┘ └──────────────────────┘
│
│ HTTPS
▼
┌──────────────────────┐
│ BrowserStack │
│ App Automate │
│ Real Android Device │
│ (Samsung Galaxy S21)│
│ Wikipedia Alpha APK │
└──────────────────────┘
项目结构
appium-mcp-server/
├── src/
│ ├── server.js # Main MCP server
│ ├── appium/
│ │ └── session.js # BrowserStack connection management
│ ├── analysis/
│ │ └── screen.js # Screen analyzer
│ ├── gestures/
│ │ └── engine.js # Gesture execution (tap, swipe, scroll)
│ ├── coverage/
│ │ └── analyzer.js # Coverage gap analysis
│ └── cucumber/
│ ├── generator.js # Auto-generate Cucumber features
│ └── step-definitions/
│ └── common-steps.js # Reusable step definitions
├── features/
│ └── wikipedia/ # Wikipedia POC test scenarios
│ ├── app-launch.feature # App launch & language selection
│ └── search.feature # Search functionality (pass + demo failures)
├── scripts/
│ ├── browserstack-api.js # BrowserStack App Automate REST API client
│ ├── fetch-test-results.js # CLI: fetch and display test results
│ └── generate-dashboard.js # Generate HTML test dashboard
├── reports/ # Test execution reports (gitignored)
├── wdio.conf.js # WebdriverIO + Cucumber config
├── claude_desktop_config.example.json
└── package.json
🛠️ MCP工具可用
设备控制工具(需要活动Appium会话)
1. inspect_screen
- 分析当前移动屏幕
- 使用选择器列出所有可见元素
- 自动跟踪测试覆盖率
2. smart_action
- 自然语言命令:
"tap search button","scroll down" - 使用7策略回退链查找元素
- 跟踪每个动作的覆盖范围
3. 手势
- 执行特定手势:
tap,swipe,scroll,long_press - 按描述或XPath定位元素
4. 把手_火把_嘴
- 处理基于webview的身份验证流
- NATIVE和WEBVIEW之间的上下文切换
覆盖率分析工具
5. finalize_page
- 完整的页面覆盖率分析
- 测试元素与总数、覆盖率、差距分析
6. 分析地图
- 识别未经测试的元素和缺失的场景
- 优先建议(高/中/低)
7. 发电机_黄瓜
- 从屏幕浏览自动生成Cucumber特征文件
- 已准备好使用WebdriverIO运行
BrowserStack API工具(不需要活动会话)
8. get_test_results
- 使用通过/失败摘要获取最近的BrowserStack构建
- 按项目名称筛选,限制结果
- 查看所有具有状态和公共URL的会话
9. get_build_sessions
- 获取特定构建的所有会话
- 每个会话的详细状态信息
- 快速识别失败的测试
10. get_session_details
- 获取特定测试会话的详细信息
- 设备信息、操作系统版本、Appium版本
- 失败原因和调试URL
11. get_session_logs
- 获取完整的Appium日志以进行调试
- 显示确切的错误、尝试的选择器、堆栈跟踪
- 对于诊断测试失败至关重要
12. get_browserstack_plan
- 检查BrowserStack帐户限制
- 查看并行会话使用情况
- 监视队列状态
🔧 配置
环境变量
创建一个 .env 文件:
BROWSERSTACK_USERNAME=your_username
BROWSERSTACK_ACCESS_KEY=your_access_key
BS_APP_REFERENCE=bs://your_app_hash
Claude桌面配置
增添 %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"appiumMCP": {
"command": "node",
"args": ["d:\\Apps\\appium-mcp-server\\src\\server.js"],
"env": {
"BROWSERSTACK_USERNAME": "YOUR_BROWSERSTACK_USERNAME",
"BROWSERSTACK_ACCESS_KEY": "YOUR_BROWSERSTACK_ACCESS_KEY",
"BS_APP_REFERENCE": "bs://YOUR_APP_HASH"
}
}
}
}
📄 看
claude_desktop_config.example.json用于复制粘贴就绪模板
VS代码集成
增添 .vscode/mcp.json:
{
"mcpServers": {
"appiumMCP": {
"command": "node",
"args": ["d:\\Apps\\appium-mcp-server\\src\\server.js"]
}
}
}
从以下位置读取凭据 .env 文件自动。
🚀 运行测试
运行维基百科POC测试
npx wdio wdio.conf.js
运行特定标签
# Search tests only
npx wdio wdio.conf.js --cucumberOpts.tags="@search"
# Demo failures (broken tests for MCP fix demonstration)
npx wdio wdio.conf.js --cucumberOpts.tags="@broken"
从BrowserStack获取测试结果
node scripts/fetch-test-results.js
生成HTML仪表板
node scripts/generate-dashboard.js
📊 测试结构
维基百科功能
@search-3通过搜索测试(python、javascript、机器学习)@broken-3个故意破坏的测试(演示:MCP识别+修复故障)@app-launch-应用程序启动和语言选择
BrowserStack配置
- 设备:三星Galaxy S21
- 操作系统:安卓12.0
- 项目:MCP测试
- 构建:内部版本1.0
🔍 故障排除
MCP服务器未在Claude桌面中显示?
- 验证配置文件路径和JSON语法(无尾随逗号)
- 使用双反睫毛
\\在Windows路径中 - 完全重新启动Claude Desktop(检查任务管理器)
- 检查日志:
%APPDATA%\Claude\logs\
BrowserStack连接问题?
- 验证中的凭据
.env或配置JSON - 检查应用程序是否已上传:
BS_APP_REFERENCE必须与上传的APK哈希匹配 - 确认BrowserStack应用程序自动化计划已激活
手动测试服务器
node src/server.js
# Should output: "Appium MCP server with coverage analysis running"
📦 依赖项
@modelcontextprotocol/sdk-MCP服务器框架webdriverio-Appium自动化@wdio/cucumber-framework-Cucumber-BDD集成@wdio/allure-reporter-诱惑力测试报告@wdio/junit-reporter-JUnit XML报告
为Appium MCP POC演示而构建