Puppeteer MCP Server
Enables LLMs to perform browser automation including web navigation, element interaction, and screenshot capture using Puppeteer. It provides capabilities for executing JavaScript in the browser and monitoring console logs for debugging and data extraction.
README
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.
[!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.
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.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.