浏览器自动化服务

一个基于MCP协议的会话式Selenium浏览器自动化服务,提供流式HTTP接口支持。

  • by GeneArguelles
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 GeneArguelles/selenium-mcp-appstore

使用说明

selenium-mcp(ChatGPT应用程序/mcp服务器)

A. 模型上下文协议(MCP) 提供以下功能的服务器 基于会话的Selenium浏览器自动化 结束 可流式传输的HTTP.

部署时,ChatGPT(或任何MCP客户端)连接到:

  • https://<your-domain>/mcp

这次“商店准备就绪”的清理发生了什么变化

此仓库最初包含一个具有自定义端点的FastAPI垫片,如 /mcp/schema 和 /mcp/invoke. 对于Apps SDK/现代MCP客户端,您需要 真实MCP服务器.

此回购现在包括 mcp_server_v2.py,建立在 官方MCP Python SDK(FastMCP).

暴露的工具

所有工具都是 基于会话 (创建一次会话,然后在同一浏览器中执行多个步骤):

  • create_session() → { session_id }
  • open_page(session_id, url, wait_css?, timeout_s?)
  • click(session_id, css_selector, timeout_s?)
  • type_text(session_id, css_selector, text, clear_first?, timeout_s?)
  • get_text(session_id, css_selector, timeout_s?)
  • screenshot(session_id) → base64 PNG
  • close_session(session_id)
  • reap_idle_sessions(max_idle_seconds?)

服务器还公开了受策略约束的Persona Engineering性能工具:

  • jmeter_ping()
  • jmeter_version(include_raw?)
  • jmeter_list_plans()
  • jmeter_run(plan, run_id?, properties?)
  • jmeter_status(run_id)
  • jmeter_run_details(run_id)
  • jmeter_jtl_header(run_id)
  • jmeter_artifact_manifest(run_id)
  • jmeter_metrics_summary(run_id)

这些工具将隔离的执行器作为单独的进程调用,并返回 版本化的 pe.jmeter.mcp.v1 响应合同。他们不接受武断 可执行文件、文件系统路径、环境变量、目标URL或原始JMeter 论据。

JMeter执行器CLI

该存储库还包含一个受策略约束的JMeter执行器,用于 Persona工程编排。其自动化界面发出一个版本 每次调用的JSON对象:

python -m jmeter_executor ping
python -m jmeter_executor list-plans
python -m jmeter_executor run --plan httpbin_smoke.jmx
python -m jmeter_executor status --run-id <run_id>

看 jmeter_executor/README.md 对于JSON合约、配置边界, 退出代码、安全不变量和Docker冒烟测试指令。

登记入住的 blazedemo_booking_smoke.jmx 该计划提供了一个有限制的选择加入 四步预约烟雾测试 https://blazedemo.com其CI验证使用 本地设备,不向公共站点发送常规工作流流量。看 jmeter_executor/BLAZEDEMO_SMOKE_RUNBOOK.md 为被统治者Persona 工程执行程序和评估政策。

在本地运行

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

# Runs Streamable HTTP MCP at http://localhost:8000/mcp
python mcp_server_v2.py

可选环境变量:

  • PORT (默认值 8000)
  • HOST (默认值 0.0.0.0)
  • CHROME_BINARY (如果Chrome不在PATH上)
  • CHROMEDRIVER_PATH (如果镀铬层不在PATH上)
  • JMETER_PROJECT_ROOT (默认为此存储库)
  • JMETER_BIN (默认为 jmeter)
  • JMETER_TIMEOUT_SECONDS (执行器超时;默认值 600)
  • JMETER_MCP_TIMEOUT_SECONDS (适配器超时;默认为执行器超时+30)
  • JMETER_ALLOWED_PROPERTIES (逗号分隔的部署策略)

部署

部署在HTTPS后面(渲染/飞行/铁路/云运行)。这个 MCP端点必须稳定:

  • https://<your-domain>/mcp

此回购包括 Procfile 它运行:

  • python mcp_server_v2.py

注意:对于生产环境,请在容器/运行时中安装Chrome+chromedriver。

如何测试(冒烟)

此repo包括一个基于curl的MCP烟雾测试,该测试:

  • 初始化MCP会话
  • 列出工具
  • 创建Selenium浏览器会话
  • 打开https://example.com,验证 h1
  • 截图(smoke.png)
  • 关闭浏览器会话

JMeter CI工作流还启动FastMCP服务器,将其客户端标识为 persona-engineering-smoke,通过预订入住计划 jmeter_run,以及 通过MCP查询结果状态和JTL标头。这证明了MCP的排序; 分类账、评估员和标准化报告集成仍然是单独的里程碑。

前提条件

  • bash
  • curl
  • jq
  • base64

跑

chmod +x smoke_mcp.sh
./smoke_mcp.sh