openBrowserLABSCO SUMMARY
Browser automation with the debugging surface attached.
Beyond clicking and typing it hands back console messages, the network request list and a depth-limited DOM tree — which is what turns it from a scraper into something an agent can diagnose a page with. Scrolling reports where it started and finished, so the agent can tell a no-op from a move.
What it is
A Playwright-based browser automation server: open a browser, point it at a URL, then interact with the page or pull data out of it.
What you get
- Session control with openBrowser and closeBrowser, headless or visible
- Navigation and interaction: navigate, goForward, click, type, hover, dragAndDrop, selectOption and pressKey
- Coordinate-level mouse control with moveMouse, mouseMove, mouseClick and mouseDrag, plus resize and scroll
- Waiting that is not a sleep: waitForText and waitForSelector
- Page readback: getPageSource, getPageText, getPageTitle, getPageUrl, getMetaTags, getScripts and getStylesheets
- Structured extraction: getLinks, getImages, getForms, getElementContent, and getElementHierarchy for the DOM tree to a depth you choose
- Diagnostics: getConsoleMessages and getNetworkRequests
- executeJavaScript and evaluateWithReturn run your own script in the page
- screenshot and takeScreenshot capture the full page, the viewport or a single element; uploadFiles and handleDialog cover file inputs and alerts
Requirements
Node, plus the Playwright browser binaries installed once. Built from source and run as a local process, with no account or key. Every tool needs a live session, so the browser has to be opened first.
Setup effort
Build from source — git clone https://github.com/jomon003/PlayMCP.git
USE CASES
Scraping a page that only renders in a browser
Open the browser, navigate, and take the rendered text rather than the empty HTML shell a fetch returns.
Filling in a form you would rather not do by hand
Click into fields, type, pick from dropdowns and submit with a keypress.
Working out why a page is broken
Read the console output and the request list from the live page instead of guessing at the failure.
Pulling structured data off a page
Take the links with their text, the images with their attributes, or the form fields, as data rather than as HTML.
Understanding an unfamiliar page's structure
Walk the DOM to a set depth from a chosen root, with text and attributes included when you need them.
Capturing evidence for a bug report
Screenshot the whole page or just the element that is wrong, straight to a file.
38 tools
Listed in project docs. Your client may show a different list.
closeBrowsernavigategoForwardclicktypehoverdragAndDropselectOptionpressKeymoveMousemouseMovemouseClickmouseDragscrollresizewaitForTextwaitForSelectorscreenshottakeScreenshotgetPageSourcegetPageTextgetPageTitlegetPageUrlgetElementContentgetElementHierarchygetScriptsgetStylesheetsgetMetaTagsgetLinksgetImagesgetFormsgetConsoleMessagesgetNetworkRequestsexecuteJavaScriptevaluateWithReturnuploadFileshandleDialogBEFORE YOU INSTALL
What to know first
Tools you get
38 tools named in the project's documentation.
Requires
Node.js 16+
Where it runs
Both documented clients run the server on your machine.
INSTALLATION
Connect your client
Server setup
git clone https://github.com/jomon003/PlayMCP.git
cd PlayMCP
npm install
npm run build
npx playwright installMCP Clients
Claude Desktop
{
"mcpServers": {
"playmcp-browser": {
"type": "stdio",
"command": "node",
"args": [
"/Users/<YOUR_USERNAME>/PlayMCP/dist/server.js"
],
"description": "Browser automation with Playwright"
}
}
}/Users/<YOUR_USERNAME>/PlayMCP is the full path of the PlayMCP folder you cloned. dist/server.js is there after npm run build.
VS Code
{
"servers": {
"playmcp-browser": {
"type": "stdio",
"command": "node",
"args": [
"<YOUR_PATH_TO_PLAY_MCP>/dist/server.js"
]
}
}
}<YOUR_PATH_TO_PLAY_MCP> is the full path of the PlayMCP folder you cloned. dist/server.js is there after npm run build.