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)。
操作步骤
- 克隆仓库:
git clone <your-repo-url> selenium-mcp-server cd selenium-mcp-server - 安装依赖:
npm install - 配置 WebDriver:
- 确保 WebDriver(例如
chromedriver)已安装并在系统的 PATH 中。 - 如有需要,修改
src/seleniumService.ts(你需要创建此文件)以指定浏览器选项或 WebDriver 路径。
- 确保 WebDriver(例如
- 构建服务器:
npm run build - 运行服务器:
或者,将其与 MCP 主机(如 Cursor 或 Claude Desktop)集成(请参阅下面的集成部分)。npm start
✨ 主要特性
此服务器允许 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 集成
- 构建服务器:
npm run build - 在 Cursor 中:
设置>功能>MCP:添加新的 MCP 服务器。 - 注册服务器:
- 选择
stdio作为传输类型。 - 名称:
Selenium Server(或类似名称)。 - 命令:
node /path/to/selenium-mcp-server/build/index.js。
- 选择
- 保存。
Claude Desktop 集成
- 构建服务器:
npm run build - 修改
claude_desktop_config.json:{ "mcpServers": { "selenium-mcp-server": { "command": "node", "args": [ "/path/to/selenium-mcp-server/build/index.js" ] } } } - 重启 Claude Desktop。
最佳实践
- 使用 TypeScript 和 Zod 进行类型安全和验证。
- 保持工具模块化(例如,在
src/tools/中每个工具一个文件)。 - 优雅地处理 WebDriver 错误(例如,元素未找到、导航问题)。
- 确保正确关闭 WebDriver(例如,在服务器退出时调用
driver.quit())。 - 遵循 MCP 在架构、错误处理和内容类型方面的最佳实践。
了解更多
🔧 技术细节
此服务器使用 @modelcontextprotocol/sdk 和 selenium-webdriver 库实现,通过将 Selenium WebDriver 操作暴露为 MCP 工具,实现 AI 代理对浏览器会话的控制。
📄 许可证
文档未提及相关信息。
致谢
基于 Seth Rose 创建的模板:
- 网站:https://www.sethrose.dev
- 𝕏 (Twitter):https://x.com/TheSethRose
- 🦋 (Bluesky):https://bsky.app/profile/sethrose.dev
微信扫一扫