Steel Puppeteer
STDIOBrowser automation MCP server using Puppeteer for web interaction and screenshots
Browser automation MCP server using Puppeteer for web interaction and screenshots
A Model Context Protocol server that provides browser automation capabilities using Puppeteer and Steel. 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 totimeout (number, optional, default: 60000): Navigation timeout in millisecondswaitUntil (string, optional, default: "domcontentloaded"): When to consider navigation succeeded. Options: "load", "domcontentloaded", "networkidle0", "networkidle2"puppeteer_screenshot
name (string, required): Name for the screenshotselector (string, optional): CSS selector for element to screenshotpuppeteer_click
selector (string, required): CSS selector for element to clickpuppeteer_fill
selector (string, required): CSS selector for input fieldvalue (string, required): Value to fillpuppeteer_select
selector (string, required): CSS selector for element to selectvalue (string, required): Value to selectpuppeteer_hover
selector (string, required): CSS selector for element to hoverpuppeteer_evaluate
script (string, required): JavaScript code to executepuppeteer_get_content
selector (string, optional): CSS selector to get content from specific elements. If not provided, returns whole page contentpuppeteer_scroll
scrollDelay (number, optional, default: 100): Delay between scrolls in millisecondsmaxScrolls (number, optional, default: 50): Maximum number of scrollsThe server provides access to two types of resources:
Console Logs (console://logs)
Screenshots (screenshot://<name>)
To use the Steel Puppeteer server with Claude Desktop, add the following configuration to your Claude Desktop config file (typically located at ~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{ "mcpServers": { "steel-puppeteer": { "command": "node", "args": ["path/to/steel-puppeteer/dist/index.js"], "env": { "STEEL_LOCAL": "true" } } } }
Replace "path/to/steel-puppeteer/dist/index.js" with the actual path to the compiled JavaScript file on your system.
The Steel Puppeteer server can be configured using the following environment variables:
STEEL_LOCAL (optional, default: "false"): Set to "true" to use a local Steel instance instead of the cloud service.STEEL_API_KEY (required only if STEEL_LOCAL is "false"): Your Steel API key for authentication when using the cloud service.STEEL_URL (optional): The URL of your Steel instance if using a custom deployment.If you're running the Steel Puppeteer server directly (not through Claude Desktop), you can set these environment variables in your shell or create a .env file in the project root. Here's an example .env file for local usage:
STEEL_LOCAL=true
If you're using the Steel cloud service, your .env file would look like this:
STEEL_API_KEY=your-steel-api-key
STEEL_LOCAL=false
To start the Steel Puppeteer server:
Install dependencies:
npm install
Build the project:
npm run build
Start the server:
npm start
Open Claude Desktop and browse away! The server will start and listen on the specified port (default: 3000).
For more detailed configuration options and advanced usage, refer to the Steel documentation and the Puppeteer API reference.