Selenium浏览器自动化服务

一个基于Selenium WebDriver的MCP服务器,允许AI代理通过Model Context Protocol控制浏览器会话,实现网页抓取、自动化测试和表单填写等功能。

  • by themindmod
  • TypeScript
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 themindmod/selenium-mcp-server

使用说明

Selenium MCP服务器

史密斯徽章

使用Selenium与WebDriver实例交互的MCP服务器。使用 MCP服务器启动器 模板。

概述

该服务器允许AI代理通过Selenium WebDriver控制web浏览器会话,通过模型上下文协议实现web抓取、自动测试和表单填充等任务。

核心组件

  • MCP服务器:将Selenium WebDriver操作作为MCP工具公开。
  • Selenium WebDriver:与浏览器交互。
  • MCP客户端:可以使用公开工具的AI主机(如Cursor、Claude Desktop)。

先决条件

  • Node.js(v18或更高版本)
  • npm(v7或更高版本)
  • WebDriver可执行文件 (例如,ChromeDriver、GeckoDriver)已安装并可在系统的PATH中使用。
  • 兼容的网络浏览器 (例如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
    
    或者,将其与Cursor或Claude Desktop等MCP主机集成(请参阅下面的集成部分)。

工具

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

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

TypeScript实现

服务器使用 @modelcontextprotocol/sdk 和 selenium-webdriver 图书馆。

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();

发展

  • 构建: npm run build
  • 运行: npm start (执行 node build/index.js)
  • 棉绒: npm run lint
  • 格式: npm run format

调试

使用MCP检查器或标准的Node.js调试技术。

与MCP主机集成

(保留Cursor、Claude Desktop、Smithery等原始README的相关部分,必要时更新路径和命令)

光标集成

  1. 构建您的服务器: npm run build
  2. 在光标中: Settings > Features > MCP:添加新的MCP服务器。
  3. 注册您的服务器:
    • 选择 stdio 作为运输类型。
    • 姓名: Selenium Server (或类似)。
    • 命令: node /path/to/selenium-mcp-server/build/index.js.
  4. 保存.

Claude桌面集成

  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. 重新启动克劳德桌面.

最佳实践

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

了解更多

鸣谢

基于Seth Rose创建的模板: