关于 🤖 MCP Selenium Grid
MCP Selenium Grid 用于创建和管理 Selenium Grid 浏览器实例,面向浏览器自动化与测试工作流。它支持 Docker 和 Kubernetes 部署,并提供 Chrome、Firefox 与 Edge 实例管理。
主要功能
- 01管理 Chrome、Firefox 和 Edge
- 02支持 Docker 与 Kubernetes 后端
- 03通过令牌进行 API 身份验证
- 04管理多个浏览器实例
- 05提供 HTTP 与 SSE 端点
适用场景
- 01为浏览器自动化创建实例
- 02在 Docker 环境中管理测试浏览器
- 03通过 Kubernetes 管理浏览器实例
MCP 相关
它作为 MCP 服务,通过 `/mcp` HTTP Transport 和 `/sse` Server Sent Events 端点向客户端提供浏览器实例管理能力。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
🤖 MCP Selenium Grid
一个用于管理 Selenium Grid 浏览器实例的模型上下文协议(MCP)服务,适用于浏览器自动化和测试工作流。
MCP Selenium Grid 提供 MCP 服务,可在 Docker 和 Kubernetes 环境中创建和管理浏览器实例。它旨在与需要浏览器自动化能力的 AI Agent 和自动化工具配合使用。
主要功能
- 多浏览器支持:Chrome、Firefox 和 Edge
- 双后端支持:Docker 和 Kubernetes 部署模式
- 安全 API:通过基于令牌的身份验证管理浏览器
- 可扩展架构:支持多个浏览器实例
- 符合 MCP 规范:遵循模型上下文协议标准
🚀 快速开始
前置条件
📖 用法
MCP Selenium Grid 提供用于创建和管理浏览器实例的 Web API。服务运行在 localhost:8000,并在 /mcp(HTTP 传输)和 /sse(服务器发送事件)提供 MCP 端点。
注意:所有发送到服务根地址
http://localhost:8000的请求都会根据请求被重定向到/mcp或/sse端点,但你也可以直接使用/mcp(HTTP 传输)或/sse(服务器发送事件)端点。
已知问题和限制
-
使用
--stdio标志启用 STDIO 传输 时,MCP 服务的关闭方式与在终端中的关闭方式不同。要清理资源并移除容器或 Pod,请运行:uv run mcp-selenium-grid cleanuv run mcp-selenium-grid clean -d kubernetes
MCP 客户端配置
🐳 Docker 部署
对于基于 Docker 的部署,请确保 Docker 正在运行,并在 MCP 客户端设置中使用 Docker 配置。
{
"mcpServers": {
"mcp-selenium-grid": {
"command": "uvx",
"args": ["mcp-selenium-grid", "server", "run",
"--host", "127.0.0.1",
"--port", "8000",
"--stdio",
],
"env": {
"AUTH_ENABLED": "false",
"ALLOWED_ORIGINS": "[\"http://127.0.0.1:8000\"]",
"DEPLOYMENT_MODE": "docker",
"SELENIUM_GRID__USERNAME": "USER",
"SELENIUM_GRID__PASSWORD": "CHANGE_ME",
"SELENIUM_GRID__VNC_PASSWORD": "CHANGE_ME",
"SELENIUM_GRID__VNC_VIEW_ONLY": "false",
"SELENIUM_GRID__MAX_BROWSER_INSTANCES": "4",
"SELENIUM_GRID__SE_NODE_MAX_SESSIONS": "1",
"FASTMCP_EXPERIMENTAL_ENABLE_NEW_OPENAPI_PARSER": "true"
}
}
}
}
服务将在
http://localhost:8000提供,并在http://localhost:8000/docs提供交互式 API 文档。
☸️ Kubernetes 部署
3. Kubernetes 设置(可选)
本项目支持 Kubernetes 部署,以便扩展浏览器实例管理。我们使用 K3s 进行本地开发和测试。
安装 K3s(https://docs.k3s.io/quick-start)
# Install K3s
curl -sfL https://get.k3s.io | sh -
# Verify installation
k3s --version
# Start if not running
sudo systemctl start k3s
创建 K3s Kubernetes 上下文
安装 K3s 后,你可能需要为其创建专用的 kubectl 上下文:
# Copy K3s kubeconfig
mkdir -p ~/.kube
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config-local-k3s
sudo chown $USER:$USER ~/.kube/config-local-k3s
chmod 600 ~/.kube/config-local-k3s
# Create context
KUBECONFIG=~/.kube/config-local-k3s \
kubectl config set-context k3s-selenium-grid \
--cluster=default \
--user=default
部署 Selenium Grid
请运行以下命令查看可用命令和参数:
uvx mcp-selenium-grid helm --help
uvx mcp-selenium-grid helm deploy --help
uvx mcp-selenium-grid helm uninstall --help
使用默认参数部署:
uvx mcp-selenium-grid helm deploy
使用默认参数卸载:
# using default parameters
uvx mcp-selenium-grid helm uninstall --delete-namespace
{
"mcpServers": {
"mcp-selenium-grid": {
"command": "uvx",
"args": ["mcp-selenium-grid", "server", "run",
"--host", "127.0.0.1",
"--port", "8000",
"--stdio",
],
"env": {
"AUTH_ENABLED": "false",
"ALLOWED_ORIGINS": "[\"http://127.0.0.1:8000\"]",
"DEPLOYMENT_MODE": "kubernetes",
"SELENIUM_GRID__USERNAME": "USER",
"SELENIUM_GRID__PASSWORD": "CHANGE_ME",
"SELENIUM_GRID__VNC_PASSWORD": "CHANGE_ME",
"SELENIUM_GRID__VNC_VIEW_ONLY": "false",
"SELENIUM_GRID__MAX_BROWSER_INSTANCES": "4",
"SELENIUM_GRID__SE_NODE_MAX_SESSIONS": "1",
"KUBERNETES__KUBECONFIG": "~/.kube/config-local-k3s",
"KUBERNETES__CONTEXT": "k3s-selenium-grid",
"KUBERNETES__NAMESPACE": "selenium-grid-dev",
"KUBERNETES__SELENIUM_GRID_SERVICE_NAME": "selenium-grid",
"FASTMCP_EXPERIMENTAL_ENABLE_NEW_OPENAPI_PARSER": "true"
}
}
}
}
{
"mcpServers": {
"mcp-selenium-grid": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--init",
"--network=host",
"-v", "/home/user/.kube/config-local-k3s:/.kube/config-local-k3s:ro", // path to your kubeconfig file
"-e", "AUTH_ENABLED=false",
"-e", "ALLOWED_ORIGINS=[\\\"http://127.0.0.1:8000\\\"]",
"-e", "DEPLOYMENT_MODE=kubernetes", // required for docker
"-e", "SELENIUM_GRID__USERNAME=USER",
"-e", "SELENIUM_GRID__PASSWORD=CHANGE_ME",
"-e", "SELENIUM_GRID__VNC_PASSWORD=CHANGE_ME",
"-e", "SELENIUM_GRID__VNC_VIEW_ONLY=false",
"-e", "SELENIUM_GRID__MAX_BROWSER_INSTANCES=4",
"-e", "SELENIUM_GRID__SE_NODE_MAX_SESSIONS=1",
"-e", "KUBERNETES__KUBECONFIG=/.kube/config-local-k3s", // path to your kubeconfig file
"-e", "KUBERNETES__USE_HOST_DOCKER_INTERNAL=true",
"-e", "KUBERNETES__CONTEXT=k3s-selenium-grid",
"-e", "KUBERNETES__NAMESPACE=selenium-grid-dev",
"-e", "KUBERNETES__SELENIUM_GRID_SERVICE_NAME=selenium-grid",
"-e", "FASTMCP_EXPERIMENTAL_ENABLE_NEW_OPENAPI_PARSER=true",
"ghcr.io/catchnip/mcp-selenium-grid:latest"
]
}
}
}
服务将在
http://localhost:8000提供,并在http://localhost:8000/docs提供交互式 API 文档。
启用身份验证的服务
UVX
使用默认参数
uvx mcp-selenium-grid server run
自定义参数
API_TOKEN=CHANGE_ME uvx mcp-selenium-grid server run --host 127.0.0.1 --port 8000
Docker
默认参数
docker run -i --rm --init --network=host \
-v ~/.kube/config-local-k3s:/kube/config-local-k3s:ro \
-e KUBERNETES__KUBECONFIG=/kube/config-local-k3s \
ghcr.io/catchnip/mcp-selenium-grid:latest
自定义参数
docker run -i --rm --init \
--network=host \
-v ~/.kube/config-local-k3s:/kube/config-local-k3s:ro \
-e API_TOKEN=CHANGE_ME \
-e ALLOWED_ORIGINS='["http://127.0.0.1:8000"]' \
-e DEPLOYMENT_MODE=kubernetes \
-e SELENIUM_GRID__USERNAME=USER \
-e SELENIUM_GRID__PASSWORD=CHANGE_ME \
-e SELENIUM_GRID__VNC_PASSWORD=CHANGE_ME \
-e SELENIUM_GRID__VNC_VIEW_ONLY=false \
-e SELENIUM_GRID__MAX_BROWSER_INSTANCES=4 \
-e SELENIUM_GRID__SE_NODE_MAX_SESSIONS=1 \
-e KUBERNETES__KUBECONFIG=/kube/config-local-k3s \
--add-host=host.docker.inte.rnal:host-gateway \
-e KUBERNETES__USE_HOST_DOCKER_INTERNAL=true \
-e KUBERNETES__CONTEXT=k3s-selenium-grid \
-e KUBERNETES__NAMESPACE=selenium-grid-dev \
-e KUBERNETES__SELENIUM_GRID_SERVICE_NAME=selenium-grid \
ghcr.io/catchnip/mcp-selenium-grid:latest
注意:所有环境变量都有默认值。
MCP 服务配置(mcp.json)
{
"mcpServers": {
"mcp-selenium-grid": {
"url": "http://localhost:8000",
"headers": {
"Authorization": "Bearer CHANGE_ME"
}
}
}
}
{
"mcpServers": {
"mcp-selenium-grid": {
"url": "http://localhost:8000/mcp",
"headers": {
"Authorization": "Bearer CHANGE_ME"
}
}
}
}
{
"mcpServers": {
"mcp-selenium-grid": {
"url": "http://localhost:8000/sse",
"headers": {
"Authorization": "Bearer CHANGE_ME"
}
}
}
}
🤝 贡献
有关开发环境设置、测试和贡献指南,请参阅 CONTRIBUTING.md。
📄 许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。