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)。
入门指南
- 克隆存储库:
git clone selenium-mcp-server
cd selenium-mcp-server- 安装依赖项:
npm install- 配置WebDriver:
- 确保您的WebDriver(例如。, chromedriver)已安装并位于您的PATH中。 - 修改 src/seleniumService.ts (您将创建此文件)如果需要指定浏览器选项或WebDriver路径。
- 构建服务器:
npm run build- 运行服务器:
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的相关部分,必要时更新路径和命令)
光标集成
- 构建您的服务器:
npm run build - 在光标中:
Settings>Features>MCP:添加新的MCP服务器。 - 注册您的服务器:
- 选择 stdio 作为运输类型。 - 姓名: Selenium Server (或类似)。 - 命令: node /path/to/selenium-mcp-server/build/index.js.
- 保存.
Claude桌面集成
- 构建您的服务器:
npm run build - 修改
claude_desktop_config.json:
{
"mcpServers": {
"selenium-mcp-server": {
"command": "node",
"args": [
"/path/to/selenium-mcp-server/build/index.js"
]
}
}
}- 重新启动克劳德桌面.
最佳实践
- 使用TypeScript和Zod进行类型安全和验证。
- 保持工具模块化(例如,每个工具一个文件
src/tools/). - 优雅地处理WebDriver错误(例如,找不到元素、导航问题)。
- 确保WebDriver正确关闭(例如。,
driver.quit()服务器退出时)。 - 遵循MCP关于模式、错误处理和内容类型的最佳实践。
了解更多
鸣谢
基于Seth Rose创建的模板:
- 网站:
- 120143143;:
- 🦋 (蓝天):
