Provides browser automation capabilities including page navigation, element interaction (clicking, hovering, form filling), screenshot capture, and JavaScript execution in a real browser environment.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Puppeteer MCP Servertake a screenshot of news.ycombinator.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Puppeteer
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.
This server can access local files and local/internal IP addresses since it runs a browser on your machine. Exercise caution when using this MCP server to ensure this does not expose any sensitive data.
Components
Tools
puppeteer_navigate
Navigate to any URL in the browser
Inputs:
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-securitywill throw errors. Default false.
puppeteer_screenshot
Capture screenshots of the entire page or specific elements
Inputs:
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 heightencoded(boolean, optional): If true, capture the screenshot as a base64-encoded data URI (as text) instead of binary image content. Default false.
puppeteer_click
Click elements on the page
Input:
selector(string): CSS selector for element to click
puppeteer_hover
Hover elements on the page
Input:
selector(string): CSS selector for element to hover
puppeteer_fill
Fill out input fields
Inputs:
selector(string): CSS selector for input fieldvalue(string): Value to fill
puppeteer_select
Select an element with SELECT tag
Inputs:
selector(string): CSS selector for element to selectvalue(string): Value to select
puppeteer_evaluate
Execute JavaScript in the browser console
Input:
script(string): JavaScript code to execute
Resources
The server provides access to two types of resources:
Console Logs (
console://logs)Browser console output in text format
Includes all console messages from the browser
Screenshots (
screenshot://<name>)PNG images of captured screenshots
Accessible via the screenshot name specified during capture
Key Features
Browser automation
Console log monitoring
Screenshot capabilities
JavaScript execution
Basic web interaction (navigation, clicking, form filling)
Customizable Puppeteer launch options
Configuration to use Puppeteer Server
Usage with Claude Desktop
Here's the Claude Desktop configuration to use the Puppeter server:
Docker
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"
]
}
}
}NPX
{
"mcpServers": {
"puppeteer": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-puppeteer"]
}
}
}Usage with VS Code
For quick installation, use one of the one-click install buttons below...
For manual installation, add the following JSON block to your User Settings (JSON) file in VS Code. You can do this by pressing Ctrl + Shift + P and typing Preferences: Open User Settings (JSON).
Optionally, you can add it to a file called .vscode/mcp.json in your workspace. This will allow you to share the configuration with others.
Note that the
mcpkey is not needed in the.vscode/mcp.jsonfile.
For NPX installation (opens a browser window):
{
"mcp": {
"servers": {
"puppeteer": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-puppeteer"]
}
}
}
}For Docker installation (uses headless chromium):
{
"mcp": {
"servers": {
"puppeteer": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--init",
"-e",
"DOCKER_CONTAINER=true",
"mcp/puppeteer"
]
}
}
}
}Launch Options
You can customize Puppeteer's browser behavior in two ways:
Environment Variable: Set
PUPPETEER_LAUNCH_OPTIONSwith a JSON-encoded string in the MCP configuration'senvparameter:{ "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
launchOptionsandallowDangerousparameters to thepuppeteer_navigatetool:{ "url": "https://example.com", "launchOptions": { "headless": false, "defaultViewport": { "width": 1280, "height": 720 } } }
Build
Docker build:
docker build -t mcp/puppeteer -f src/puppeteer/Dockerfile .License
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.