Selenium Mcp Server

Selenium Mcp Server

🚀 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  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 创建的模板

  • 0 关注
  • 0 收藏,21 浏览
  • system 提出于 2025-10-04 23:45

相似服务问题

相关AI产品