A Model Context Protocol server that provides browser automation capabilities using Puppeteer. This server enables LLMs to interact with web pages, take screenshots, and execute JavaScript in a real browser environment.
A Model Context Protocol server that provides browser automation capabilities using Puppeteer. This server enables LLMs to interact with web pages, take screenshots, and execute JavaScript in a real browser environment.
puppeteer_navigate
url
(string, required): URL to navigate tolaunchOptions
(object, optional): PuppeteerJS LaunchOptions. Default null. If changed and not null, browser restarts. Example: { headless: true, args: ['--user-data-dir="C:/Data"'] }
allowDangerous
(boolean, optional): Allow dangerous LaunchOptions that reduce security. When false, dangerous args like --no-sandbox
, --disable-web-security
will throw errors. Default false.puppeteer_screenshot
name
(string, required): Name for the screenshotselector
(string, optional): CSS selector for element to screenshotwidth
(number, optional, default: 800): Screenshot widthheight
(number, optional, default: 600): Screenshot heightpuppeteer_click
selector
(string): CSS selector for element to clickpuppeteer_hover
selector
(string): CSS selector for element to hoverpuppeteer_fill
selector
(string): CSS selector for input fieldvalue
(string): Value to fillpuppeteer_select
selector
(string): CSS selector for element to selectvalue
(string): Value to selectpuppeteer_evaluate
script
(string): JavaScript code to executeThe server provides access to two types of resources:
Console Logs (console://logs
)
Screenshots (screenshot://<name>
)
Here's the Claude Desktop configuration to use the Puppeter server:
NOTE The docker implementation will use headless chromium, where as the NPX version will open a browser window.
{
"mcpServers": {
"puppeteer": {
"command": "docker",
"args": ["run", "-i", "--rm", "--init", "-e", "DOCKER_CONTAINER=true", "mcp/puppeteer"]
}
}
}
{
"mcpServers": {
"puppeteer": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-puppeteer"]
}
}
}
You can customize Puppeteer's browser behavior in two ways:
Environment Variable: Set PUPPETEER_LAUNCH_OPTIONS
with a JSON-encoded string in the MCP configuration's env
parameter:
{
"mcpServers": {
"mcp-puppeteer": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-puppeteer"],
"env": {
"PUPPETEER_LAUNCH_OPTIONS": "{ \"headless\": false, \"executablePath\": \"C:/Program Files/Google/Chrome/Application/chrome.exe\", \"args\": [] }",
"ALLOW_DANGEROUS": "true"
}
}
}
}
Tool Call Arguments: Pass launchOptions
and allowDangerous
parameters to the puppeteer_navigate
tool:
{
"url": "https://example.com",
"launchOptions": {
"headless": false,
"defaultViewport": {"width": 1280, "height": 720}
}
}
Docker build:
docker build -t mcp/puppeteer -f src/puppeteer/Dockerfile .
This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.