返回市场
硒元素-MCP服务器

硒元素-MCP服务器

作者:themindmod3 星标更新:2025-04-03

项目介绍

Selenium MCP Server

smithery 徽章

这是一个使用 Selenium 与 WebDriver 实例进行交互的 MCP 服务器。基于 MCP-Server-Starter 模板构建。

概述

此服务器允许 AI 代理通过 Selenium WebDriver 控制一个网络浏览器会话,从而实现诸如网页抓取、自动化测试和表单填写等功能,这些功能都是通过模型上下文协议(Model Context Protocol)实现的。

核心组件

  • 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/sdkselenium-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';

// 基本服务器设置(详情见 src/index.ts)
const server = new Server({
  name: "selenium-mcp-server",
  version: "0.1.0",
  capabilities: {
    tools: {}, // 启用工具能力
  }
});

// Selenium WebDriver 设置(详情见 src/seleniumService.ts)
let driver: WebDriver;

async function initializeWebDriver() {
  driver = await new Builder().forBrowser('chrome').build(); // 或 'firefox' 等。
}

// 示例工具实现(详情见 src/tools/)
server.registerTool('selenium_navigate', {
  description: '导航浏览器到特定 URL。',
  inputSchema: { /* ... zod schema ... */ },
  outputSchema: { /* ... zod schema ... */ },
  handler: async (params) => {
    await driver.get(params.url);
    return { success: true };
  }
});

// 连接传输
async function startServer() {
  await initializeWebDriver();
  const transport = new StdioServerTransport();
  await server.connect(transport);
  console.log("Selenium MCP Server 通过 stdio 连接。");

  // 平稳关闭
  process.on('SIGINT', async () => {
    console.log("正在关闭 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 Inspector 或标准 Node.js 调试技术。

与 MCP 主机的集成

(保留原始 README 中与 Cursor、Claude Desktop、Smithery 等相关的部分,并根据需要更新路径和命令)

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 的最佳实践,包括模式、错误处理和内容类型。

更多学习资料

致谢

基于 Seth Rose 创建的模板