Token导航 LogoToken导航TokenDH.com
uat (Op Zero Sh) logo
浏览器工具stdio官方级别未说明来源级核验

uat (Op Zero Sh)

MCP Server

UAT Engine是一个AI原生的测试引擎,通过Model Context Protocol(MCP)提供浏览器自动化、API测试和MCP服务器验证功能,适用于自动化测试和部署验证场景。

工具数

41

提示词数

0

GitHub Stars

0

资源数

0
浏览器自动化TypeScriptClaudeAPI测试ClaudeCursor

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

OpZero-sh

提供方

OpZero-sh

最后核验

2026/5/17 20:19

运行时

Docker

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

docker run --init -p 3200:3200 uat-engine

详细介绍

UAT发动机

基于模型上下文协议的人工智能原生测试

给你的AI代理一个浏览器、一个HTTP客户端和一个MCP探测器。让它测试任何东西。

46个用于浏览器自动化、API测试和MCP服务器验证的MCP工具-- 完全通过控制 模型上下文协议.

![License: MIT](LICENSE) ![TypeScript](tsconfig.json) ![Bun](https://bun.sh) ![MCP](https://modelcontextprotocol.io) ![Playwright](https://playwright.dev)

建造于 OpZero 的 --AI原生部署平台。

______________________________________________________________________

为什么选择UAT发动机?

人工智能代理正在发送代码,但谁来测试它呢?传统的测试框架需要人工编写和维护脚本。UAT Engine翻转模型:代理 描述要测试的内容,发动机手柄 怎么.

  • MCP本地 --插入任何MCP客户端(Claude、Cursor、自定义代理)。没有SDK,没有包装器,只有工具调用。
  • 浏览器+API+MCP --一个引擎包括UI验收测试、API集成测试和MCP服务器验证。
  • 声明性流程 --编写具有变量插值、条件、并行执行和跨步数据传递的YAML规范。零代码。
  • 幕后剧作家 --完全Chromium自动化,具有屏幕截图、跟踪、设备模拟和代理支持。
  • 生产硬化 --多级Docker镜像,非root执行,连接耗尽的优雅关机,就绪探测。
用于生产 OpZero.sh 验证Cloudflare、Netlify和Vercel之间的部署。

快速开始

# Install
bun install

# Start the MCP server
bun run start
# => Listening on http://localhost:3200/mcp

将任何MCP客户端指向 http://localhost:3200/mcp 并开始调用工具:

{
  "mcpServers": {
    "uat": {
      "type": "url",
      "url": "http://localhost:3200/mcp"
    }
  }
}

使用Docker

docker build -t uat-engine .
docker run --init -p 3200:3200 uat-engine

MCP工具

9个类别的46个工具。所有前缀均为 uat_.

会话管理

工具它做什么
uat_session_create启动浏览器会话(无头、视口、设备模拟、代理)
uat_session_list列出活动会话及其状态
uat_session_close关闭会话并释放资源

浏览器导航

工具它做什么
uat_navigate_goto导航到URL
uat_navigate_back回到历史
uat_navigate_forward在历史中前进
uat_navigate_reload重新加载页面
uat_navigate_wait等待条件(选择器、网络空闲、超时)

浏览器交互

工具它做什么
uat_interact_click按选择器单击元素
uat_interact_fill填写输入字段
uat_interact_select选择下拉选项
uat_interact_check切换复选框
uat_interact_press按键盘键
uat_interact_scroll滚动页面或至某个元素
uat_interact_upload将文件上传到输入

浏览器观察

工具它做什么
uat_observe_screenshot截图(整页或元素)
uat_observe_snapshot获取页面HTML快照
uat_observe_get_text从元素中提取文本内容
uat_observe_get_attribute读取元素属性
uat_observe_evaluate在页面上下文中执行JavaScript

断言

工具它做什么
uat_assert_visible断言元素可见
uat_assert_text断言元素文本匹配(精确、包含、正则表达式)
uat_assert_url断言当前URL与模式匹配
uat_assert_title断言页面标题
uat_assert_count断言元素计数(eq、gt、lt)
uat_assert_value断言输入字段值
uat_assert_status断言HTTP响应状态代码
uat_assert_body在响应体中声明值(支持虚线路径)

API测试

工具它做什么
uat_api_request发送带有标头、正文和身份验证的HTTP请求——返回带时间的结构化响应

MCP服务器测试

工具它做什么
uat_mcp_connect连接到远程MCP服务器
uat_mcp_list_tools发现连接上的可用工具
uat_mcp_call调用工具并测量响应时间
uat_mcp_disconnect断开与MCP服务器的连接

流程执行

工具它做什么
uat_flow_run执行YAML流规范
uat_flow_run_suite使用聚合的通过/失败运行多个流
uat_flow_list列出可用的流量规格
uat_flow_validate在不运行流规范的情况下对其进行验证
uat_flow_get_results从已完成的流运行中检索结果

录制

工具它做什么
uat_record_start开始录制剧作家的足迹
uat_record_stop停止录制并保存跟踪文件
uat_record_list列出已保存的录音

流量规格

流是声明性的YAML文件,将工具链接到完整的测试场景中。无需代码——代理编写YAML,引擎执行它。

示例:健康检查

name: health-check
description: Verify a page loads and has expected content
config:
  base_url: "${BASE_URL}"
steps:
  - action: goto
    url: "${BASE_URL}"
  - action: wait
    condition: networkidle
  - action: screenshot
    name: homepage-loaded
  - action: assert_title
    match: contains
    value: "${EXPECTED_TITLE}"
  - action: assert_visible
    selector: "nav"

示例:部署和验证(API+浏览器)

name: api-deploy-verify
description: Deploy via API, then verify the result in a browser
steps:
  - action: api_request
    method: POST
    url: "${BASE_URL}/api/deploy"
    headers:
      Authorization: "Bearer ${API_TOKEN}"
    body:
      files:
        index.html: "
smoke test
"
    assert_status: 200
    save_as: deploy

  - action: goto
    url: "${deploy.body.url}"

  - action: assert_text
    selector: "h1"
    value: "smoke test"

示例:MCP服务器验证

name: mcp-tools-check
description: Verify an MCP server responds with expected tools
steps:
  - action: mcp_connect
    url: "${MCP_URL}"
    auth: "Bearer ${MCP_TOKEN}"
  - action: mcp_list_tools
    save_as: tools
  - action: assert_body
    path: "tools.length"
    operator: gte
    value: 1
  - action: mcp_call
    tool: "repos_list"
    params: {}
    save_as: repos
  - action: mcp_disconnect

流量特征

  • 变量插值 -- ${VAR} 从会话上下文、流配置和环境变量解析。点状路径,如 ${deploy.body.url} 支持。
  • 跨步数据 -- save_as: name 存储步骤结果以供后续步骤使用
  • 条件 -- if: key / unless: key 用于条件步骤执行
  • 平行组 -- parallel: 块同时运行步骤
  • 行动路线 -- api_* 转到HTTP客户端, mcp_* 对于MCP探针, assert_* 对于断言,其他一切都归功于剧作家

码头工人

独立

docker build -t uat-engine .
docker run --init -p 3200:3200 uat-engine

Docker Compose(带网络)

docker network create devnet  # if not already created
docker compose up

compose配置包括:

  • init: true 用于正确的信号处理
  • read_only: true 带有显式tmpfs挂载的rootfs
  • 2GB内存/2 CPU限制(Chromium需要余量)
  • 健康检查 /health
  • 加入 devnet 服务发现网络

部署到铁路

railway up

railway.toml 对于部署配置。

建筑

mcp-server/src/
  index.ts              Entrypoint -- HTTP server, graceful shutdown, readiness probe
  types.ts              Shared TypeScript types
  engine/
    browser.ts          Playwright browser pool (singleton, isolated contexts per session)
    http-client.ts      HTTP client with structured responses
    mcp-probe.ts        MCP client for testing remote MCP servers
    trace-manager.ts    Playwright trace recording
    session-store.ts    In-memory session + context store
    flow-runner.ts      YAML flow execution engine
  tools/
    session.ts          Session lifecycle tools
    navigate.ts         Browser navigation tools
    interact.ts         Browser interaction tools
    observe.ts          Screenshot, snapshot, text extraction
    assert.ts           Assertion tools (browser + API)
    api.ts              HTTP request tool
    mcp-client.ts       MCP connect / list / call / disconnect
    flow.ts             Flow execution tools
    record.ts           Trace recording tools
flows/
  examples/             Starter flow specs

生产硬化

  • 多级Dockerfile --Builder安装deps,运行时仅复制生产工件
  • 非根执行 --运行为 pwuser (uid 1001)来自剧作家基础图像
  • 优雅关闭 --SIGTERM/SIGINT触发就绪探测失败、连接耗尽(10秒截止时间)、浏览器池关闭,然后干净退出
  • 就绪探针 -- /readiness 在排水过程中返回503,与 /health 活性
  • 请求超时 --每个MCP请求的截止时间为5分钟
  • 运输跟踪 --在停机时跟踪并排空活动连接

由OpZero制造

OpZero 的 是一个AI原生部署平台。从任何MCP客户端(Claude、Cursor或您自己的代理)将网站发送到Cloudflare、Netlify和Vercel。

UAT引擎是我们验证部署工作的方式 opzero.sh AI代理可以使用此引擎进行烟雾测试。

贡献

欢迎捐款。请先打开一个问题以进行非琐碎的更改。

bun install        # install deps
bun run dev        # start with watch mode
bun test           # run tests
bun run typecheck  # type check

许可证

麻省理工学院

目录标签

目录标签

浏览器自动化TypeScriptClaudeAPI测试AI测试本地部署MCP协议YAML测试流程

支持客户端

ClaudeCursor

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

token

运行时(runtime,运行环境)

Docker

工具数量(toolCount,工具数)

41

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiotoken部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP