smithery 徽章
这是一个使用 Selenium 与 WebDriver 实例进行交互的 MCP 服务器。基于 MCP-Server-Starter 模板构建。
此服务器允许 AI 代理通过 Selenium WebDriver 控制一个网络浏览器会话,从而实现诸如网页抓取、自动化测试和表单填写等功能,这些功能都是通过模型上下文协议(Model Context Protocol)实现的。
git clone <your-repo-url> selenium-mcp-server
cd selenium-mcp-server
npm install
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。服务器使用 @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';
// 基本服务器设置(详情见 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 buildnpm start(执行 node build/index.js)npm run lintnpm run format使用 MCP Inspector 或标准 Node.js 调试技术。
(保留原始 README 中与 Cursor、Claude Desktop、Smithery 等相关的部分,并根据需要更新路径和命令)
npm run build设置 > 功能 > MCP:添加一个新的 MCP 服务器。stdio 作为传输类型。Selenium Server(或其他类似名称)。node /path/to/selenium-mcp-server/build/index.js。npm run buildclaude_desktop_config.json:
{
"mcpServers": {
"selenium-mcp-server": {
"command": "node",
"args": [
"/path/to/selenium-mcp-server/build/index.js"
]
}
}
}
src/tools/ 中每个工具一个文件)。driver.quit())。基于 Seth Rose 创建的模板: