浏览器自动化桥接服务

ManulMcpServer是一个VS Code扩展,将GitHub Copilot与确定性浏览器自动化连接起来,允许通过自然语言生成和执行自动化脚本。

  • by alexbeatnik
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 alexbeatnik/ManulMcpServer

使用说明

ManulCpServer

GitHub Copilot和确定性浏览器自动化之间的桥梁。 ManulMcpServer是一个VS代码扩展,它公开 手动发动机 作为本地人 主控程序 服务器——使Copilot Chat(以及任何兼容MCP的代理)能够驱动真实的浏览器,运行 .hunt 测试脚本,并从自然语言生成自动化,所有这些都在您现有的开发工作流程中。

状态:阿尔法。 与ManulEngine一起积极开发。API和文件格式可能会演变。


为什么选择ManulCpServer

  • Copilot Chat内的确定性自动化。 Copilot在ManulEngine的启发式元素解析器的支持下获得了浏览器控制权——元素定位不需要LLM。
  • 自然语言到可执行DSL。 说 “登录SauceDemo并验证库存页面” --服务器将其标准化为 .hunt 执行步骤,运行它们,并返回一个可回放的脚本。
  • 编辑优先创作。 语法高亮显示、IntelliSense、悬停文档、内联诊断和一键运行 .hunt 文件夹。
  • CI/CD就绪。 相同 .hunt 在Copilot Chat中运行的脚本可以在您的管道中无头运行 manul <path>.
  • 可解释且可审计。 每个动作都是一条可读的DSL线,每个元素的分辨率得分为0.0-1.0,并带有解释模式——没有黑框点击。

快速演示

1.写一个 .hunt 文件

@context: Login flow smoke test
@title: SauceDemo Login

STEP 1: Login
    NAVIGATE to 'https://www.saucedemo.com/'
    VERIFY that 'Username' is present
    Fill 'Username' field with 'standard_user'
    Fill 'Password' field with 'secret_sauce'
    Click the 'Login' button
    VERIFY that 'Sauce Labs Backpack' is present

DONE.

2.从编辑器中运行

点击 ▷ 编辑器标题栏中的按钮,或按 Ctrl+Shift+R (Cmd+Shift+R 在Mac上)。

3.从Copilot聊天运行

打开Copilot聊天,直接使用MCP工具:

# Run a single step
@manul Run step: NAVIGATE to 'https://www.saucedemo.com/'

# Run a full goal — Copilot calls manul_run_goal under the hood
@manul Log in to SauceDemo with standard_user / secret_sauce
       and verify the inventory page loads

# Scan the page after navigation
@manul Scan the current page for interactive elements

副驾驶用途 manul_run_step 对于个人行为, manul_run_goal 对于多步流,以及 manul_scan_page 以发现页面元素。进球后,让Copilot保存生成的 .hunt 文件——它调用 manul_save_hunt 写信给 tests/.


集成模式

副驾驶聊天(主要工作流程)

ManulMcpServer自动注册为MCP服务器。Copilot Chat发现Manul工具,可以:

  • 运行单个DSL步骤或自然语言操作(manul_run_step)
  • 执行多步骤目标并生成可回放的目标 .hunt 文件(manul_run_goal)
  • 阅读页面内容并发现互动元素(manul_scan_page, manul_read_page_text)
  • 无需执行即可验证和规范DSL(manul_validate_hunt, manul_normalize_step)

CI/CD管道

.hunt 通过Copilot生成的脚本是纯文本的——将它们提交到您的仓库中,并在CI中无头运行:

pip install manul-engine==0.0.9.28
playwright install chromium
manul tests/ --headless --html-report

CLI在通过时生成退出代码0,在失败时生成1,并可选择生成自包含的HTML报告。

其他MCP客户端

任何兼容MCP的代理或客户端都可以连接到ManulMcpServer的stdio网桥。该服务器宣传了11个具有完整JSON模式输入定义的工具,使自定义代理工具、产品仪表板或内部工具的集成变得简单。


安装

1.安装扩展

code --install-extension manul-mcp-server-0.0.7.vsix

或从安装 VS代码市场.

2.安装运行时依赖项

pip install manul-engine==0.0.9.28
playwright install

3.重新加载VS代码

Ctrl+Shift+P → 开发者:重新加载窗口

在重新加载之后, ManulMcpServer 出现在MCP服务器面板中,Copilot Chat会自动获得手动工具。

先决条件

  • VS代码 1.107+
  • Node.js 上 PATH (管理MCP入口启动网桥 node -e)
  • python 3.10+ manul-engine 安装
  • 剧作家浏览器 (playwright install)

工作区 .venv 检测: 首先打开目标工作区文件夹,或设置 manul.pythonPath 精确的解释器路径。


配置

打开设置(Ctrl+,)并搜索 manul:

设置 默认值 说明
manul.pythonPath python3 Python解释器。自动发现工作区 .venv 当设置为默认值时。
manul.executablePath '' 自定义浏览器或Electron应用程序的路径。配合使用 OPEN APP 用于桌面自动化。
manul.headless false 在没有可见窗口的情况下运行浏览器。
manul.apiBaseUrl http://127.0.0.1:8000 编辑器运行命令的ManulEngine HTTP API URL。
manul.requestTimeoutMs 60000 发动机调用超时(ms)。
manul.logNormalizedDsl true 在输出面板中记录自动校正的DSL。
manul.mcpServerLabel ManulMcpServer MCP服务器视图中的标签。

示例 settings.json:

{
  "manul.pythonPath": "/home/user/project/.venv/bin/python",
  "manul.headless": true,
  "manul.executablePath": "/opt/my-electron-app/app"
}

两条执行路径: MCP工具(manul_run_step, manul_run_goal等)使用 捆绑Python运行器 直接——不需要服务器。编辑器标题栏 跑 命令使用手动引擎 HTTP API 在 manul.apiBaseUrl (开始吧 manul serve).


MCP工具参考

工具 说明
manul_run_step 在实时浏览器中运行单个DSL步骤或自然语言操作
manul_run_goal 将目标转换为DSL步骤,执行它们,返回 .hunt 提案
manul_run_hunt 验证并执行 .hunt 以文本形式传递的文档
manul_run_hunt_file 跑a .hunt 文件从磁盘
manul_validate_hunt 验证 .hunt 语法和返回诊断--不执行
manul_normalize_step 预览自然语言如何映射到规范DSL
manul_preview_goal 预览目标到DSL的转换,无需执行
manul_scan_page 列出当前页面上的所有交互元素
manul_read_page_text 读取当前页面的所有可见文本内容
manul_get_state 查询浏览器状态、引擎版本和会话状态
manul_save_hunt 保存a .hunt 文件到磁盘(工作区被监禁)

所有工具都使用同步请求/响应。浏览器会话是持久的——它在首次使用时打开,并在工具调用期间保持活动状态以进行检查/重试。


故障排除

问题 修复
No module named 'manul_engine' 安装 manul-engine 进入由以下人员选择的口译员 manul.pythonPath,或打开工作区 .venv 被发现。
node: command not found MCP桥需要Node.js PATH.安装Node.js并重新加载VS代码。
MCP服务器忽略工作区 .venv 在VS Code中打开项目文件夹,或设置 manul.pythonPath 明确地。
编辑 跑 命令失败,但MCP工具工作 编辑器命令需要 manul serve 跑步。MCP工具直接使用捆绑的流道。
浏览器未打开 检查 manul.headless 是 false.确保 playwright install 已运行。

生态系统

ManulMcpServer是Manul自动化堆栈的一层:

组件 角色 链接
手动发动机 确定性自动化运行时(Python)。启发式元素解析器, .hunt DSL、CLI运行器。 PyPI · GitHub
手动发动机扩展 ManulEngine的VS代码扩展,带有调试面板、解释模式和测试资源管理器集成。 市场 · 打开VSX · GitHub
ManulCpServer (这个) MCP桥,使Copilot Chat和其他代理能够访问ManulEngine。 市场 · 打开VSX · GitHub
ManulAI本地代理商 用于浏览器自动化的自主AI代理,由ManulEngine提供支持。 市场 · 打开VSX · GitHub

键盘快捷键

快捷键 Mac 命令
Ctrl+Shift+R Cmd+Shift+R 运行Hunt文件
Ctrl+Shift+Enter Cmd+Shift+Enter 运行步骤

活动时a .hunt 文件在编辑器中被聚焦。


新增功能

0.0.8

  • 兼容性: 将嵌入式DSL合约元数据同步到ManulEngine 0.0.9.29.
  • DSL: 添加 REPEAT N TIMES:, FOR EACH {var} IN {collection}:,以及 WHILE condition: 循环命令——验证、语法高亮、完成、代码片段和代理契约。
  • 文件: 更新 contracts/MANUL_MCP_AGENT_CONTRACT.md 和 .github/copilot-instructions.md 带有循环引用。
  • 发布: 已将扩展/包版本更新为 0.0.8.

0.0.7

  • 兼容性: 将嵌入式DSL合约元数据同步到ManulEngine 0.0.9.28.
  • DSL: 添加 IF / ELIF / ELSE 条件分支——验证、语法突出显示、完成、片段和代理契约。
  • DSL: 将每个引擎的规范命令标签更新为全部大写 casePolicy (CLICK, FILL, TYPE, SELECT, CHECK, UNCHECK, DRAG).
  • 文件: 更新 contracts/MANUL_MCP_AGENT_CONTRACT.md 和 .github/copilot-instructions.md 具有条件分支引用。
  • 发布: 已将扩展/包版本更新为 0.0.7.

0.0.6

  • 兼容性: 将嵌入式DSL合约元数据同步到ManulEngine 0.0.9.27.
  • 文件: 添加 contracts/MANUL_MCP_AGENT_CONTRACT.md --人工智能代理通过MCP使用ManulEngine的机器可读合同(工具模式、DSL参考、工作流指南、响应形状、安全约束)。
  • 文件: 更新 .github/copilot-instructions.md 完整的v0.0.9.27 DSL参考,包括 OPEN APP, UPLOAD, MOCK, VERIFY VISUAL、严格的占位符/值断言, CALL PYTHON, SCAN PAGE, DEBUG VARS,元数据标头(@import:, @export:, @data:, @schedule:),以及钩块([SETUP]/[TEARDOWN]).
  • 发布: 已将扩展/包版本更新为 0.0.6.

0.0.5

  • 兼容性: 将嵌入式DSL合约元数据同步到ManulEngine 0.0.9.26.
  • DSL: 增加了对以下内容的支持 @import:, @export:,以及 USE 在验证、完成、悬停文档、代码片段和语法突出显示中。
  • 桌面自动化: 添加 manul.executablePath 并传播 MANUL_EXECUTABLE_PATH 通过MCP桥进入捆绑的Python运行器 OPEN APP 流动。
  • 发布: 已将扩展/包版本更新为 0.0.5.

0.0.4

  • 稳定性: 固定PythonRunner ensureProcess() 竞争条件——并发调用者不再生成重复的进程。
  • 稳定性: 浏览器现在在步骤失败时保持活动状态以进行检查/重试,而不是关闭会话。
  • 安全: Python中添加了工作区监狱路径验证 save_hunt 处理程序并提取到共享 pathValidator.ts.
  • 演出 页面扫描现在只在最后一步或失败时运行,而不是在每一步之后运行。
  • 演出 影子根遍历使用目标选择器,而不是 querySelectorAll('*').
  • 可维护性: 集中式配置默认为 src/config/defaults.ts --不再有重复的归一化器。
  • 可维护性: 共享DSL线路迭代器(src/dsl/parser.ts)消除了重复的钩块状态机。
  • DX: 悬停提供者被重写为来自契约的数据驱动循环——如果分支,则不再进行硬编码。
  • DX: 从合约派生的限定词建议正则表达式 interactionMode 而不是硬编码列表。
  • DX: Run Hunt文件的键盘快捷键(Ctrl+Shift+R)并运行步骤(Ctrl+Shift+Enter).
  • DX: 添加 manul_read_page_text 用于读取可见页面文本的MCP工具。
  • 测试: 添加了vitest,其中包含67个单元测试,涵盖验证器、构建器、解析器和配置默认值。
  • 将DSL合同更新到v0.0.9.21。

0.0.3

  • 管理用户范围 mcp.json 安装、激活、设置更改和卸载时同步。
  • 用户范围MCP引导现在通过以下方式解析最新安装的扩展目录 node -e 而不是过时的版本化脚本路径。
  • 更新文档以反映外部运行时要求和工作区 .venv 行为。

许可证

阿帕奇-2.0