安徽东皖建设集团有限公司网站,专业的镇江网站建设,闵行区天气,域名价格查询网站基于Java开发的浏览器自动化MCP服务器
这是使用 Java 语言开发的一个简单的浏览器自动化 MCP 服务器#xff0c;并通过 Cherry Studio 进行测试。
功能概述
支持导航到指定 URL提供截图功能以捕获页面状态支持点击、选择、填写表单字段等常见浏览器操作集成日志记录和异常处…基于Java开发的浏览器自动化MCP服务器
这是使用 Java 语言开发的一个简单的浏览器自动化 MCP 服务器并通过 Cherry Studio 进行测试。
功能概述
支持导航到指定 URL提供截图功能以捕获页面状态支持点击、选择、填写表单字段等常见浏览器操作集成日志记录和异常处理机制
安装依赖
将以下 Maven 依赖添加到你的项目中
添加playwright依赖
dependencygroupIdcom.microsoft.playwright/groupIdartifactIdplaywright/artifactIdversion1.41.2/version
/dependency使用 MCP 官方的 Java SDK
dependencygroupIdio.modelcontextprotocol.sdk/groupIdartifactIdmcp/artifactIdversion0.10.0/version
/dependency对于 HTTP SSE 传输实现添加以下依赖之一
基于 Spring WebFlux 的 SSE 客户端和服务器传输
dependencygroupIdio.modelcontextprotocol.sdk/groupIdartifactIdmcp-spring-webflux/artifactId
/dependency基于 Spring WebMVC 的 SSE 服务器传输
dependencygroupIdio.modelcontextprotocol.sdk/groupIdartifactIdmcp-spring-webmvc/artifactId
/dependency代码实现
初始化Playwright
创建 Playwright 实例并启动一个无头 Edge 浏览器。打开一个新的页面对象 (Page) 用于后续操作。
private Playwright playwright;
private Browser browser;
private Page page;/*** 初始化Playwright*/
private void initializePlaywright() {if (playwright null) {playwright Playwright.create();}if (browser null) {browser playwright.chromium().launch(new BrowserType.LaunchOptions().setChannel(msedge).setHeadless(false));}if (page null) {page browser.newPage();}
}工具方法
创建MCP服务中的工具这里只展示navigate导航到指定 URL。
/*** 创建一个工具用于导航到指定URL* return 工具结果*/
private McpServerFeatures.SyncToolSpecification navigate(){String desc navigate to a URL;String schema {type : object,properties : {url : {type : string}}};return new McpServerFeatures.SyncToolSpecification(new McpSchema.Tool(navigate, desc, schema),(exchange, arguments) - {ListMcpSchema.Content result new ArrayList();try {String url (String) arguments.get(url);initializePlaywright();page.navigate(url);result.add(new McpSchema.TextContent(Navigated to url));return new McpSchema.CallToolResult(result, false);}catch (Exception e){// 处理异常result.add(new McpSchema.TextContent(e.getMessage()));return new McpSchema.CallToolResult(result, true);}});
}启动MCP服务
在 Spring 的 PostConstruct 注解下启动 MCP 同步服务器。配置了服务器信息名称、版本和能力支持工具、日志等。添加多个工具到服务器中每个工具都对应一种网页操作如导航、截图、点击等。
PostConstruct
public void start() {// 创建并配置MCP同步服务器McpSyncServer syncServer McpServer.sync(transportProvider).serverInfo(PlayWright-Mcp-Server, 1.0.0).capabilities(McpSchema.ServerCapabilities.builder().tools(true).logging().build()).build();try {// 添加工具、资源和提示syncServer.addTool(navigate());syncServer.addTool(parseThePage());syncServer.addTool(screenshot());syncServer.addTool(click());syncServer.addTool(iframeClick());syncServer.addTool(select());syncServer.addTool(fill());syncServer.addTool(hover());syncServer.addTool(evaluate());syncServer.addTool(consoleLogs());syncServer.addTool(closePage());// 发送日志通知syncServer.loggingNotification(McpSchema.LoggingMessageNotification.builder().level(McpSchema.LoggingLevel.DEBUG).logger(custom-logger).data(Server initialized).build());}catch (Exception e){// 处理异常例如打印错误信息log.error(创建JSON Schema时发生错误: {} , e.getMessage());e.printStackTrace();}
}关闭资源
使用 PreDestroy 注解确保在 Bean 销毁前释放 Playwright 资源关闭页面、浏览器、Playwright 实例。
PreDestroy
public void close() {if (page ! null) {page.close();page null;}if (browser ! null) {browser.close();browser null;}if (playwright ! null) {playwright.close();playwright null;}
}驱动安装
PlayWright需要浏览器驱动程序自动检测是否存在驱动不存在就会自动安装但安装取决于网路经常会失败所以还是手动安装的好。
mvn exec:java -e -D exec.mainClasscom.microsoft.playwright.CLI -D exec.argsinstall默认安装三大浏览器驱动webkit、chromium、firefox。 你还可以通过提供参数来安装特定的浏览器
mvn exec:java -e -D exec.mainClasscom.microsoft.playwright.CLI -D exec.argsinstall chromium客户端测试
配置mcp服务 提问
代码地址
https://github.com/daydayup-zyn/Playwright-MCP