Selenium MCP 服务器

一个提供MCP客户端与Selenium WebDriver无缝集成的服务器,支持自然语言交互的浏览器自动化测试、网页抓取和页面分析。

  • by Agbobli5373
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 Agbobli5373/selenium-mcp-server

使用说明

Selenium MCP 服务器

一个模型上下文协议(MCP)服务器,它实现了MCP客户端与Selenium WebDriver之间的无缝集成。该服务器支持通过自然语言与网页浏览器进行交互,用于自动化测试、网页抓取和页面分析。

文档

查看 docs/ 一个包含简洁API参考、使用示例和贡献说明的文件夹。

特点/功能

  • 自然语言接口:使用对话命令控制浏览器
  • 全面浏览器自动化:48种工具涵盖Selenium核心操作
  • 多浏览器支持:Chrome、Firefox 和 Microsoft Edge
  • AI优化发现:专门用于页面分析和测试生成的工具
  • 灵活的工具控制:通过环境变量限制可用工具
  • TypeScript 实现:全面的类型安全性和更优的错误处理

先决条件

  • Node.js 18.0.0 或更高版本
  • TypeScript 5.0.0 或更高版本
  • 目标浏览器的浏览器驱动程序:
    • Chrome:ChromeDriver(通常由selenium-webdriver自动管理)
    • Firefox:GeckoDriver
  • Edge:EdgeDriver

快速入门

零安装设置(推荐)

  1. 添加到您的MCP配置中(例如。, .cursor/mcp.json 或 VS Code 设置):
{
  "servers": {
    "selenium": {
      "command": "npx",
      "args": ["selenium-mcp-server-agbobli@latest"]
    }
  }
}
  1. 重启您的MCP客户端(Cursor、VS Code等)

  2. 开始在您的AI助手中使用浏览器自动化功能!

团队安装

对于希望在全球范围内安装的团队:

npm install -g selenium-mcp-server-agbobli

然后使用 "command": "selenium-mcp-server-agbobli" 在您的MCP配置中。

驱动程序设置

针对每种支持的浏览器的驱动程序安装与配置指南:

  • Chrome(ChromeDriver)
    • 建议:允许 selenium-webdriver 自动管理ChromeDriver。
    • 手动安装(本地项目):
# bash
npm install --save-dev chromedriver
  • 在Windows(cmd.exe)上,你可以在启动包装器之前将驱动程序添加到PATH中:
# cmd.exe
set PATH=%PATH%;C:\path\to\chromedriver && node wrapper.cjs
  • 或者在代码中创建 WebDriver 实例时提供驱动程序路径。

  • Firefox(GeckoDriver)

    • 从Mozilla GeckoDriver发布页面下载或通过npm安装:
# bash
npm install --save-dev geckodriver
  • 将geckodriver二进制文件添加到PATH环境变量中,或者将其位置传递给您的WebDriver构建器。

  • Edge(msedgedriver)

    • 从 Microsoft Edge WebDriver 发布页面下载,或(如果可用)使用 npm 包。
    • 将 msedgedriver 二进制文件添加到 PATH 环境变量中,或者在初始化驱动程序时指定其位置。

注释:

  • 确保驱动程序版本与已安装浏览器的主要版本相匹配。
  • 对于持续集成(CI)环境,请在构建镜像中安装相应的驱动程序二进制文件,或者使用能够自动管理驱动程序的工具。

使用示例

  1. 直接启动包装器(用于本地测试)
# bash
node wrapper.cjs
# You should see: Selenium MCP Server running on stdio
  1. 使用有限的工具集启动包装器(Linux/macOS)
# bash
export MCP_TOOLS='["start_browser","navigate","click_element","send_keys"]'
node wrapper.cjs
  1. 使用有限的工具集(Windows cmd.exe)启动包装器
# cmd.exe
set MCP_TOOLS=["start_browser","navigate","click_element","send_keys"] && node wrapper.cjs
  1. 示例MCP客户端服务器配置(Windows)
{
  "servers": {
    "selenium": {
      "command": "node",
      "args": ["C:\\absolute\\path\\to\\selenium-mcp-server\\wrapper.cjs"]
    }
  }
}
  1. 示例:通过MCP客户端启动浏览器
  • 配置您的MCP客户端以连接到 wrapper.cjs 处理(参见上面的配置)。
  • 使用 start_browser 从客户端使用工具打开Chrome/Firefox/Edge,然后 navigate 到一个URL,并且 get_page_source 或使用其他工具来检查页面。

MCP客户端使用代码片段

以下是简洁明了的示例,已准备好复制使用,展示了MCP(可能是指某种客户端协议或功能)客户端的典型工具调用以及一段简短的伪代码流程。

工具调用示例(JSON有效载荷——请根据您的MCP客户端库进行适配):

启动浏览器

{
  "tool": "start_browser",
  "args": {
    "browser": "chrome",
    "options": { "headless": false, "arguments": ["--no-sandbox"] }
  }
}

导航到某一页

{
  "tool": "navigate",
  "args": { "url": "https://example.com" }
}

获取页面源代码

{
  "tool": "get_page_source",
  "args": {}
}

点击一个元素(示例:CSS 选择器)

{
  "tool": "click_element",
  "args": { "by": "css", "value": "button#submit" }
}

向输入发送键值

{
  "tool": "send_keys",
  "args": {
    "by": "css",
    "value": "input[name=email]",
    "text": "user@example.com"
  }
}

关闭浏览器

{
  "tool": "close_browser",
  "args": {}
}

示例序列(伪代码)

// JavaScript (pseudo-code; adapt to your MCP client library)
await mcpClient.callTool("start_browser", {
  browser: "chrome",
  options: { headless: true },
});
await mcpClient.callTool("navigate", { url: "https://example.com" });
const pageHtml = await mcpClient.callTool("get_page_source", {});
await mcpClient.callTool("click_element", { by: "css", value: "button#agree" });
await mcpClient.callTool("send_keys", {
  by: "css",
  value: "input#email",
  text: "foo@bar.com",
});
await mcpClient.callTool("close_browser", {});

注释

  • 工具的可用性可能会受到限制 MCP_TOOLS 在您的MCP客户端配置中设置环境变量。
  • 所有示例均为与协议无关的JSON有效载荷;请根据您所选的MCP客户端库的API进行适配。
  • 在自动化处理长时间运行的流程时,处理来自服务器的错误和超时情况。

安装

选项1:通过npm全局安装(推荐给团队使用)

npm install -g selenium-mcp-server-agbobli

然后使用 selenium-mcp-server-agbobli 在您的MCP配置中。

选项2:使用npx(无需安装)

使用 npx selenium-mcp-server-agbobli@latest 在您的MCP(可能是指某种配置或平台)配置中,用于零安装设置。

选项3:本地开发环境设置

  1. 克隆该项目
git clone https://github.com/agbobli5373/selenium-mcp-server.git
cd selenium-mcp-server
  1. 安装依赖项

使用 pnpm

pnpm install

使用纱线

yarn install
  1. 构建项目

使用 pnpm

pnpm build

使用纱线

yarn build
  1. 测试服务器(可选)
node dist/index.js

你应该看到: Selenium MCP Server running on stdio

配置

MCP客户端配置

选项1:使用npm全局安装(推荐)

全局安装后使用 npm install -g selenium-mcp-server-agbobli:

Windows:

{
  "servers": {
    "selenium": {
      "command": "selenium-mcp-server-agbobli"
    }
  }
}

macOS / Linux:

{
  "servers": {
    "selenium": {
      "command": "selenium-mcp-server-agbobli"
    }
  }
}

选项2:使用npx(零安装)

Windows:

{
  "servers": {
    "selenium": {
      "command": "npx",
      "args": ["selenium-mcp-server-agbobli@latest"]
    }
  }
}

macOS / Linux:

{
  "servers": {
    "selenium": {
      "command": "npx",
      "args": ["selenium-mcp-server-agbobli@latest"]
    }
  }
}

选项3:本地开发(针对贡献者)

Windows:

{
  "servers": {
    "selenium": {
      "command": "node",
      "args": ["C:\\path\\to\\your\\selenium-mcp-server\\dist\\index.js"]
    }
  }
}

macOS / Linux:

{
  "servers": {
    "selenium": {
      "command": "node",
      "args": ["/path/to/your/selenium-mcp-server/dist/index.js"]
    }
  }
}

将路径替换为绝对路径 dist/index.js 以适应您的环境。

环境变量

使用以下工具进行控制 MCP_TOOLS:

  • 不 MCP_TOOLS 设定(或不设定 env (部分):默认情况下,所有48种工具均可使用
  • MCP_TOOLS 使用特定工具:仅启用这些工具

示例 — 使用 npx 的默认模式(所有工具均可用):

{
  "servers": {
    "selenium": {
      "command": "npx",
      "args": ["selenium-mcp-server-agbobli@latest"]
    }
  }
}

示例——限制为全局安装的特定工具:

{
  "servers": {
    "selenium": {
      "command": "selenium-mcp-server-agbobli",
      "env": {
        "MCP_TOOLS": ["start_browser", "navigate", "click_element", "send_keys"]
      }
    }
  }
}

示例 — 使用 npx 限制为特定工具:

{
  "servers": {
    "selenium": {
      "command": "npx",
      "args": ["selenium-mcp-server-agbobli@latest"],
      "env": {
        "MCP_TOOLS": ["start_browser", "navigate", "click_element", "send_keys"]
      }
    }
  }
}

故障排除

常见问题及解决方法:

  • 服务器无法启动:
    • 验证是否已安装 Node.js v18+
    • 跑 npm run build 并检查构建错误
  • 连接问题:
    • 在MCP客户端配置中确认绝对路径
  • 浏览器驱动问题:
    • 确保安装了正确的WebDriver,并且浏览器版本兼容

开发说明

  • TypeScript 的源代码入口点位于 src/ (服务器和工具实现)。
  • 包装脚本: wrapper.cjs / wrapper.js — 由MCP客户端用于启动服务器。
  • 工具按以下分类组织 src/tools/ 以及客户端逻辑在下方 src/selenium-client/。

许可证

麻省理工学院许可证(MIT License)