cd358bdac3
docs(mcp): optimize mcp showcase and add how to get report (#662)
* docs(mcp): optimize mcp showcase and add how to get report

* docs: optimize docs
2025-04-28 14:18:09 +08:00

192 lines
6.2 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import SetupEnv from './common/setup-env.mdx';
# MCP 服务
Midscene 提供了 MCP 服务,允许 AI 助手通过自然语言命令控制浏览器,自动化执行 UI 任务,以及生成 Midscene 自动化脚本。
:::info 什么是 MCP
[MCP](https://modelcontextprotocol.io/introduction) 是一种标准化的方式,使 AI 模型能够与外部工具和功能进行交互。MCP 服务器暴露一组工具后AI 模型可以调用这些工具来执行各种任务。对于 Midscene 来说,这些工具允许 AI 模型控制浏览器、导航网页、与 UI 元素交互等等。
:::
## 使用场景
* 控制浏览器执行自动化任务
* 生成 Midscene 的自动化脚本
### 使用示例
> 给 Sauce Demo 站点生成 Midscene 测试用例
<video src="https://lf3-static.bytednsdoc.com/obj/eden-cn/ozpmyhn_lm_hymuPild/ljhwZthlaukjlkulzlp/midscene/en-midscene-mcp-Sauce-Demo.mp4" controls/>
## 设置 Midscene MCP
### 前提条件
1. OpenAI API 密钥或其他支持的 AI 模型提供商,更多信息请查看 [选择 AI 模型](./choose-a-model)。
2. 对于 Chrome 浏览器集成(桥接模式):
- 安装 Midscene Chrome 扩展(从 [Chrome Web Extension](https://chromewebstore.google.com/detail/midscenejs/gbldofcpkknbggpkmbdaefngejllnief?hl=zh-CN&utm_source=ext_sidebar) 下载)
- 在扩展中切换到"桥接模式"并点击"允许连接"
### 配置
将 Midscene MCP 服务器添加到你的 MCP 配置中:
```json
{
"mcpServers": {
"mcp-midscene": {
"command": "npx",
"args": ["-y", "@midscene/mcp"],
"env": {
"MIDSCENE_MODEL_NAME": "REPLACE_WITH_YOUR_MODEL_NAME",
"OPENAI_API_KEY": "REPLACE_WITH_YOUR_OPENAI_API_KEY",
"MCP_SERVER_REQUEST_TIMEOUT": "800000"
}
}
}
}
```
有关配置 AI 模型的更多信息,请参阅[选择 AI 模型](./choose-a-model)。
## 可用工具
Midscene MCP 提供以下浏览器自动化工具:
| 功能分类 | 工具名称 | 功能描述 |
|---------|---------|---------|
| **导航** | midscene_navigate | 在当前标签页导航到指定 URL |
| **标签页管理** | midscene_get_tabs | 获取所有打开的浏览器标签页列表 |
| | midscene_set_active_tab | 通过 ID 切换到特定标签页 |
| **页面交互** | midscene_aiTap | 点击通过自然语言描述的元素 |
| | midscene_aiInput | 在表单字段或元素中输入文本 |
| | midscene_aiHover | 悬停在元素上 |
| | midscene_aiKeyboardPress | 按下特定键盘按键 |
| | midscene_aiScroll | 滚动页面或特定元素 |
| **验证和观察** | midscene_aiWaitFor | 等待页面上的条件为真 |
| | midscene_aiAssert | 断言页面上的条件为真 |
| | midscene_screenshot | 对当前页面截图 |
| **Playwright 代码示例** | midscene_playwright_example | 提供了 Midscene 的 Playwright 代码示例 |
### 导航
- **midscene_navigate**:在当前标签页导航到指定 URL
```
参数:
- url要导航到的 URL
```
### 标签页管理
- **midscene_get_tabs**:获取所有打开的浏览器标签页列表,包括它们的 ID、标题和 URL
```
参数:无
```
- **midscene_set_active_tab**:通过 ID 切换到特定标签页
```
参数:
- tabId要激活的标签页 ID
```
### 页面交互
- **midscene_aiTap**:点击通过自然语言描述的元素
```
参数:
- locate要点击元素的自然语言描述
```
- **midscene_aiInput**:在表单字段或元素中输入文本
```
参数:
- value要输入的文本
- locate要输入文本的元素的自然语言描述
```
- **midscene_aiHover**:悬停在元素上
```
参数:
- locate要悬停元素的自然语言描述
```
- **midscene_aiKeyboardPress**:按下特定键盘按键
```
参数:
- key要按下的按键例如 'Enter'、'Tab'、'Escape'
- locate可选在按键前要聚焦的元素描述
- deepThink可选如果为 true使用更精确的元素定位
```
- **midscene_aiScroll**:滚动页面或特定元素
```
参数:
- direction'up'、'down'、'left' 或 'right'
- scrollType'once'、'untilBottom'、'untilTop'、'untilLeft' 或 'untilRight'
- distance可选以像素为单位的滚动距离
- locate可选要滚动的元素描述
- deepThink可选如果为 true使用更精确的元素定位
```
### 验证和观察
- **midscene_aiWaitFor**:等待页面上的条件为真
```
参数:
- assertion要等待的条件的自然语言描述
- timeoutMs可选最大等待时间毫秒
- checkIntervalMs可选检查条件的频率
```
- **midscene_aiAssert**:断言页面上的条件为真
```
参数:
- assertion要检查的条件的自然语言描述
```
- **midscene_screenshot**:对当前页面截图
```
参数:
- name截图的名称
```
## 常见问题
### Midscene MCP 对比其他浏览器 MCP 有什么优势?
- Midscene MCP 默认支持了 Bridge 模式,能够**直接控制你当前正在使用的浏览器****无需重新登录或者下载浏览器**
- Midscene MCP 内置了对于浏览器页面控制和操作的最佳 Prompt 模板和操作执行实践,对比其他 MCP 实现,**能够提供更加稳定和可靠的浏览器自动化体验**
- Midscene MCP 执行完成任务后将会自动生成执行用例报告,**随时可观看执行过程**
### 本地如果出现多个 Client 会导致 Server port 占用
> 问题描述
当用户在本地多个 Client Claude Desktop、Cursor MCP、 中同时使用了 Midscene MCP 将会出现端口占用导致服务报错
> 如何解决
- 将多余的 client 中的 MCP server 暂时先关闭
- 执行命令
```bash
# For macOS/Linux:
lsof -i:3766 | awk 'NR>1 {print $2}' | xargs -r kill -9
# For Windows:
FOR /F "tokens=5" %i IN ('netstat -ano ^| findstr :3766') DO taskkill /F /PID %i
```
### 如何获取 Midscene 执行的报告
在每次执行完任务后都会生成 Midscene 任务报告,可以在命令行直接打开该 html 报告
```bash
# 将打开的地址替换为你的报告文件名
open report_file_name.html
```
![image](https://lf3-static.bytednsdoc.com/obj/eden-cn/ozpmyhn_lm_hymuPild/ljhwZthlaukjlkulzlp/midscene/image.png)