Browser automation and web scraping
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.
[!CAUTION] 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.
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 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
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"]
}
}
}
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
mcp
key is not needed in the.vscode/mcp.json
file.
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"
]
}
}
}
}
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.
by: modelcontextprotocol
Retrieving and analyzing issues from Sentry.io
by: modelcontextprotocol
Channel management and messaging capabilities