返回 MCP 目录
public公开dns本地运行

selenium-mcp-server

一个基于Selenium WebDriver的MCP服务器,允许AI代理通过MCP协议控制浏览器会话,实现网页自动化操作如导航、元素查找和表单填写等。

article

README

🚀 Selenium MCP Server

Selenium MCP Server 是一个使用 Selenium 与 WebDriver 实例进行交互的 MCP 服务器,它基于 MCP-Server-Starter 模板构建,可让 AI 代理通过 Selenium WebDriver 控制浏览器会话。

🚀 快速开始

前提条件

  • Node.js(v18 或更高版本)
  • npm(v7 或更高版本)
  • WebDriver 可执行文件(例如 ChromeDriver、GeckoDriver),需安装并添加到系统的 PATH 中。
  • 兼容的 Web 浏览器(例如 Chrome、Firefox)。

操作步骤

  1. 克隆仓库
    git clone <your-repo-url> selenium-mcp-server
    cd selenium-mcp-server
    
  2. 安装依赖
    npm install
    
  3. 配置 WebDriver
    • 确保 WebDriver(例如 chromedriver)已安装并在系统的 PATH 中。
    • 如有需要,修改 src/seleniumService.ts(你需要创建此文件)以指定浏览器选项或 WebDriver 路径。
  4. 构建服务器
    npm run build
    
  5. 运行服务器
    npm start
    
    或者,将其与 MCP 主机(如 Cursor 或 Claude Desktop)集成(请参阅下面的集成部分)。

✨ 主要特性

此服务器允许 AI 代理通过 Model Context Protocol 控制 Web 浏览器会话,支持网页抓取、自动化测试和表单填充等任务。

📦 安装指南

安装步骤请参考快速开始部分。

💻 使用示例

基础用法

import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { Builder, By, Key, until, WebDriver } from 'selenium-webdriver';

// Basic server setup (details in src/index.ts)
const server = new Server({
  name: "selenium-mcp-server",
  version: "0.1.0",
  capabilities: {
    tools: {}, // Enable tools capability
  }
});

// Selenium WebDriver setup (details in src/seleniumService.ts)
let driver: WebDriver;

async function initializeWebDriver() {
  driver = await new Builder().forBrowser('chrome').build(); // Or 'firefox', etc.
}

// Example tool implementation (details in src/tools/)
server.registerTool('selenium_navigate', {
  description: 'Navigates the browser to a specific URL.',
  inputSchema: { /* ... zod schema ... */ },
  outputSchema: { /* ... zod schema ... */ },
  handler: async (params) => {
    await driver.get(params.url);
    return { success: true };
  }
});

// Connect transport
async function startServer() {
  await initializeWebDriver();
  const transport = new StdioServerTransport();
  await server.connect(transport);
  console.log("Selenium MCP Server connected via stdio.");

  // Graceful shutdown
  process.on('SIGINT', async () => {
    console.log("Shutting down WebDriver...");
    if (driver) {
      await driver.quit();
    }
    process.exit(0);
  });
}

startServer();

📚 详细文档

工具

此服务器将提供以下工具:

  • selenium_navigate:将浏览器导航到指定的 URL。
  • selenium_findElement:使用 CSS 选择器在页面上查找元素。
  • selenium_click:点击元素。
  • selenium_sendKeys:向元素发送按键。
  • selenium_getPageSource:检索当前页面的源 HTML。
  • (可根据需要添加更多工具)

开发

  • 构建npm run build
  • 运行npm start(执行 node build/index.js
  • 代码检查npm run lint
  • 代码格式化npm run format

调试

可以使用 MCP Inspector 或标准的 Node.js 调试技术进行调试。

与 MCP 主机集成

Cursor 集成

  1. 构建服务器npm run build
  2. 在 Cursor 中设置 > 功能 > MCP:添加新的 MCP 服务器。
  3. 注册服务器
    • 选择 stdio 作为传输类型。
    • 名称:Selenium Server(或类似名称)。
    • 命令:node /path/to/selenium-mcp-server/build/index.js
  4. 保存

Claude Desktop 集成

  1. 构建服务器npm run build
  2. 修改 claude_desktop_config.json
    {
      "mcpServers": {
        "selenium-mcp-server": {
          "command": "node",
          "args": [
            "/path/to/selenium-mcp-server/build/index.js"
          ]
        }
      }
    }
    
  3. 重启 Claude Desktop

最佳实践

  • 使用 TypeScript 和 Zod 进行类型安全和验证。
  • 保持工具模块化(例如,在 src/tools/ 中每个工具一个文件)。
  • 优雅地处理 WebDriver 错误(例如,元素未找到、导航问题)。
  • 确保正确关闭 WebDriver(例如,在服务器退出时调用 driver.quit())。
  • 遵循 MCP 在架构、错误处理和内容类型方面的最佳实践。

了解更多

🔧 技术细节

此服务器使用 @modelcontextprotocol/sdkselenium-webdriver 库实现,通过将 Selenium WebDriver 操作暴露为 MCP 工具,实现 AI 代理对浏览器会话的控制。

📄 许可证

文档未提及相关信息。

致谢

基于 Seth Rose 创建的模板

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端