[pre-release, testing usage] A Model Context Protocol (MCP) server that enables AI Agents to request and manage Selenium browser instances through a secure API. Perfect for your automated browser testing needs! 🚀 [In development: creating usage examples and in-cluster setup]
接入配置
选择客户端,复制配置,再按项目文档补齐环境变量。
claude mcp add selenium-grid --env API_TOKEN='<API_TOKEN>' --env ALLOWED_ORIGINS='<ALLOWED_ORIGINS>' --env DEPLOYMENT_MODE='<DEPLOYMENT_MODE>' --env SELENIUM_GRID__USERNAME='<SELENIUM_GRID__USERNAME>' --env SELENIUM_GRID__PASSWORD='<SELENIUM_GRID__PASSWORD>' --env SELENIUM_GRID__VNC_PASSWORD='<SELENIUM_GRID__VNC_PASSWORD>' --env SELENIUM_GRID__VNC_VIEW_ONLY='<SELENIUM_GRID__VNC_VIEW_ONLY>' --env SELENIUM_GRID__MAX_BROWSER_INSTANCES='<SELENIUM_GRID__MAX_BROWSER_INSTANCES>' --env SELENIUM_GRID__SE_NODE_MAX_SESSIONS='<SELENIUM_GRID__SE_NODE_MAX_SESSIONS>' -- uvx mcp-selenium-grid server run --host 127.0.0.1 --port 8000~/.codex/config.toml
[mcp_servers.selenium-grid]
command = "uvx"
args = ["mcp-selenium-grid", "server", "run", "--host", "127.0.0.1", "--port", "8000"]
env = { API_TOKEN = "<API_TOKEN>", ALLOWED_ORIGINS = "<ALLOWED_ORIGINS>", DEPLOYMENT_MODE = "<DEPLOYMENT_MODE>", SELENIUM_GRID__USERNAME = "<SELENIUM_GRID__USERNAME>", SELENIUM_GRID__PASSWORD = "<SELENIUM_GRID__PASSWORD>", SELENIUM_GRID__VNC_PASSWORD = "<SELENIUM_GRID__VNC_PASSWORD>", SELENIUM_GRID__VNC_VIEW_ONLY = "<SELENIUM_GRID__VNC_VIEW_ONLY>", SELENIUM_GRID__MAX_BROWSER_INSTANCES = "<SELENIUM_GRID__MAX_BROWSER_INSTANCES>", SELENIUM_GRID__SE_NODE_MAX_SESSIONS = "<SELENIUM_GRID__SE_NODE_MAX_SESSIONS>" }
# codex mcp add selenium-grid --env API_TOKEN='<API_TOKEN>' --env ALLOWED_ORIGINS='<ALLOWED_ORIGINS>' --env DEPLOYMENT_MODE='<DEPLOYMENT_MODE>' --env SELENIUM_GRID__USERNAME='<SELENIUM_GRID__USERNAME>' --env SELENIUM_GRID__PASSWORD='<SELENIUM_GRID__PASSWORD>' --env SELENIUM_GRID__VNC_PASSWORD='<SELENIUM_GRID__VNC_PASSWORD>' --env SELENIUM_GRID__VNC_VIEW_ONLY='<SELENIUM_GRID__VNC_VIEW_ONLY>' --env SELENIUM_GRID__MAX_BROWSER_INSTANCES='<SELENIUM_GRID__MAX_BROWSER_INSTANCES>' --env SELENIUM_GRID__SE_NODE_MAX_SESSIONS='<SELENIUM_GRID__SE_NODE_MAX_SESSIONS>' -- uvx mcp-selenium-grid server run --host 127.0.0.1 --port 8000~/.cursor/mcp.json
{
"mcpServers": {
"selenium-grid": {
"command": "uvx",
"args": [
"mcp-selenium-grid",
"server",
"run",
"--host",
"127.0.0.1",
"--port",
"8000"
],
"env": {
"API_TOKEN": "<API_TOKEN>",
"ALLOWED_ORIGINS": "<ALLOWED_ORIGINS>",
"DEPLOYMENT_MODE": "<DEPLOYMENT_MODE>",
"SELENIUM_GRID__USERNAME": "<SELENIUM_GRID__USERNAME>",
"SELENIUM_GRID__PASSWORD": "<SELENIUM_GRID__PASSWORD>",
"SELENIUM_GRID__VNC_PASSWORD": "<SELENIUM_GRID__VNC_PASSWORD>",
"SELENIUM_GRID__VNC_VIEW_ONLY": "<SELENIUM_GRID__VNC_VIEW_ONLY>",
"SELENIUM_GRID__MAX_BROWSER_INSTANCES": "<SELENIUM_GRID__MAX_BROWSER_INSTANCES>",
"SELENIUM_GRID__SE_NODE_MAX_SESSIONS": "<SELENIUM_GRID__SE_NODE_MAX_SESSIONS>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"selenium-grid": {
"type": "stdio",
"command": "uvx",
"args": [
"mcp-selenium-grid",
"server",
"run",
"--host",
"127.0.0.1",
"--port",
"8000"
],
"env": {
"API_TOKEN": "<API_TOKEN>",
"ALLOWED_ORIGINS": "<ALLOWED_ORIGINS>",
"DEPLOYMENT_MODE": "<DEPLOYMENT_MODE>",
"SELENIUM_GRID__USERNAME": "<SELENIUM_GRID__USERNAME>",
"SELENIUM_GRID__PASSWORD": "<SELENIUM_GRID__PASSWORD>",
"SELENIUM_GRID__VNC_PASSWORD": "<SELENIUM_GRID__VNC_PASSWORD>",
"SELENIUM_GRID__VNC_VIEW_ONLY": "<SELENIUM_GRID__VNC_VIEW_ONLY>",
"SELENIUM_GRID__MAX_BROWSER_INSTANCES": "<SELENIUM_GRID__MAX_BROWSER_INSTANCES>",
"SELENIUM_GRID__SE_NODE_MAX_SESSIONS": "<SELENIUM_GRID__SE_NODE_MAX_SESSIONS>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"selenium-grid": {
"command": "uvx",
"args": [
"mcp-selenium-grid",
"server",
"run",
"--host",
"127.0.0.1",
"--port",
"8000"
],
"env": {
"API_TOKEN": "<API_TOKEN>",
"ALLOWED_ORIGINS": "<ALLOWED_ORIGINS>",
"DEPLOYMENT_MODE": "<DEPLOYMENT_MODE>",
"SELENIUM_GRID__USERNAME": "<SELENIUM_GRID__USERNAME>",
"SELENIUM_GRID__PASSWORD": "<SELENIUM_GRID__PASSWORD>",
"SELENIUM_GRID__VNC_PASSWORD": "<SELENIUM_GRID__VNC_PASSWORD>",
"SELENIUM_GRID__VNC_VIEW_ONLY": "<SELENIUM_GRID__VNC_VIEW_ONLY>",
"SELENIUM_GRID__MAX_BROWSER_INSTANCES": "<SELENIUM_GRID__MAX_BROWSER_INSTANCES>",
"SELENIUM_GRID__SE_NODE_MAX_SESSIONS": "<SELENIUM_GRID__SE_NODE_MAX_SESSIONS>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"selenium-grid": {
"command": "uvx",
"args": [
"mcp-selenium-grid",
"server",
"run",
"--host",
"127.0.0.1",
"--port",
"8000"
],
"env": {
"API_TOKEN": "<API_TOKEN>",
"ALLOWED_ORIGINS": "<ALLOWED_ORIGINS>",
"DEPLOYMENT_MODE": "<DEPLOYMENT_MODE>",
"SELENIUM_GRID__USERNAME": "<SELENIUM_GRID__USERNAME>",
"SELENIUM_GRID__PASSWORD": "<SELENIUM_GRID__PASSWORD>",
"SELENIUM_GRID__VNC_PASSWORD": "<SELENIUM_GRID__VNC_PASSWORD>",
"SELENIUM_GRID__VNC_VIEW_ONLY": "<SELENIUM_GRID__VNC_VIEW_ONLY>",
"SELENIUM_GRID__MAX_BROWSER_INSTANCES": "<SELENIUM_GRID__MAX_BROWSER_INSTANCES>",
"SELENIUM_GRID__SE_NODE_MAX_SESSIONS": "<SELENIUM_GRID__SE_NODE_MAX_SESSIONS>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"selenium-grid": {
"command": "uvx",
"args": [
"mcp-selenium-grid",
"server",
"run",
"--host",
"127.0.0.1",
"--port",
"8000"
],
"env": {
"API_TOKEN": "<API_TOKEN>",
"ALLOWED_ORIGINS": "<ALLOWED_ORIGINS>",
"DEPLOYMENT_MODE": "<DEPLOYMENT_MODE>",
"SELENIUM_GRID__USERNAME": "<SELENIUM_GRID__USERNAME>",
"SELENIUM_GRID__PASSWORD": "<SELENIUM_GRID__PASSWORD>",
"SELENIUM_GRID__VNC_PASSWORD": "<SELENIUM_GRID__VNC_PASSWORD>",
"SELENIUM_GRID__VNC_VIEW_ONLY": "<SELENIUM_GRID__VNC_VIEW_ONLY>",
"SELENIUM_GRID__MAX_BROWSER_INSTANCES": "<SELENIUM_GRID__MAX_BROWSER_INSTANCES>",
"SELENIUM_GRID__SE_NODE_MAX_SESSIONS": "<SELENIUM_GRID__SE_NODE_MAX_SESSIONS>"
}
}
}
}需要的环境变量
API_TOKENALLOWED_ORIGINSDEPLOYMENT_MODESELENIUM_GRID__USERNAMESELENIUM_GRID__PASSWORDSELENIUM_GRID__VNC_PASSWORDSELENIUM_GRID__VNC_VIEW_ONLYSELENIUM_GRID__MAX_BROWSER_INSTANCESSELENIUM_GRID__SE_NODE_MAX_SESSIONS
把占位值换成你自己的密钥;不要把密钥提交到代码仓库。