steel puppeteer.com
steel puppeteer.com logo

Steel Puppeteer

Integrates Puppeteer with Steel SDK for browser automation, enabling complex web interactions and data extraction.

Created byApr 22, 2025

Steel MCP Server

A Model Context Protocol (MCP) server that enables LLMs like Claude to navigate the web through Puppeteer-based tools and Steel. Based on the Web Voyager framework, it provides tools for all the standard web actions click clicking/scrolling/typing/etc and taking screenshots.
Ask Claude to help you with tasks like:
  • "Search for a recipe and save the ingredients list"
  • "Track a package delivery status"
  • "Find and compare prices for a specific product"
  • "Fill out an online job application"
<a href="https://glama.ai/mcp/servers/tbd32geble"><img width="380" height="200" src="https://glama.ai/mcp/servers/tbd32geble/badge" alt="Steel Server MCP server" /></a>

Quick Start

Below is a streamlined guide to run Steel Voyager inside Claude Desktop. You only need to adjust the environment options to switch between Steel Cloud and a local/self-hosted instance.

Prerequisites

  1. Latest versions of Git and Node.js installed
  1. Claude Desktop installed
  1. (Optional) Steel Docker image running locally, if you plan to self-host
  1. (Optional) If running Steel Cloud, bring your API key. Get one here.

A) Quick Start (Steel Cloud)

  1. Clone and build the project:
  1. Configure Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json) by adding a server entry:
  1. Start Claude Desktop. It will automatically launch this MCP server in Cloud mode.
  1. (Optional) You can view or manage active Steel Browser sessions in your dashboard.

B) Quick Start (Local / Self-Hosted Steel)

  1. Ensure your local or self-hosted Steel service is running (e.g., using the open-source Steel Docker image).
  1. Clone and build the project (same as above if not done yet):
  1. Configure Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json) for local mode:
  1. Start Claude Desktop, which will connect to your locally running Steel and launch Steel Voyager in local mode.
  1. (Optional) To view sessions locally, you can visit your self-hosted dashboard (localhost:5173) or logs specific to your Steel runtime environment.

That s it! Once Claude Desktop starts, it will orchestrate the MCP server behind the scenes and let you interact with the web automation capabilities through Steel Voyager.
For more info on getting set up or if you're having issues, check out the MCP set-up docs: https://modelcontextprotocol.io/quickstart/user

Components

Tools

  • navigate
  • search
  • click
  • type
  • scroll_down
  • scroll_up
  • go_back
  • wait
  • save_unmarked_screenshot

Resources

  • Screenshots: Each saved screenshot is accessible via an MCP resource URI in the form of: screenshot://RESOURCE_NAMEThe server stores these screenshots whenever you specify the "save_unmarked_screenshot" tool or when an action concludes (for most tools) with an annotated screenshot. These images can be retrieved through a standard MCP resource retrieval request.
(Note: While console logs are still collected for analysis and debugging, they are not exposed as retrievable resources in this implementation. They appear in the server s logs but are not served via MCP resource URIs.)

Key Features

  • Browser automation with Puppeteer
  • Steel integration for browser session management
  • Visual element identification through numbered labels
  • Screenshot capabilities
  • Basic web interaction (navigation, clicking, form filling)
  • Lazy-loading support through scrolling
  • Local and remote Steel instance support

Understanding Bounding Boxes

When interacting with pages, Steel Puppeteer adds visual overlays to help identify interactive elements:
  • Each interactive element (buttons, links, inputs) gets a unique numbered label
  • Colored boxes outline the elements' boundaries
  • Labels appear above or inside elements for easy reference
  • Use these numbers when specifying elements for click or type operations

Configuration

Steel Voyager can run in two modes: "Local" or "Cloud". This behavior is controlled by environment variables. Below is a concise overview:
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]

Local Mode

  1. Set STEEL_LOCAL="true".
  1. (Optional) Set STEEL_BASE_URL to point to the Steel server if you host it on a custom domain. Otherwise, Steel Voyager will default to http://localhost:3000.
  1. No API key is required in this mode.
  1. Puppeteer will connect via ws://0.0.0.0:3000
Example:
export STEEL_LOCAL="true"
export STEEL_BASE_URL="http://localhost:3000" # only if overriding

Cloud Mode

  1. Set STEEL_LOCAL="false".
  1. Set STEEL_API_KEY so Steel Voyager can authenticate with the Steel cloud service (or your self-hosted Steel if you changed STEEL_BASE_URL).
  1. STEEL_BASE_URL defaults to https://api.steel.dev; override this if you have a self-hosted Steel instance running on another endpoint.
  1. Puppeteer will connect via wss://connect.steel.dev?sessionId= &apiKey=
Example:
export STEEL_LOCAL="false"
export STEEL_API_KEY="YOUR_STEEL_API_KEY_HERE"

Claude Desktop Configuration

To use Steel Voyager with Claude Desktop, add something like this to your config file (often located at ~/Library/Application Support/Claude/claude_desktop_config.json):
Adjust the environment variables to match your desired mode:
If running locally/self hosted, keep "STEEL_LOCAL": "true" and optionally "STEEL_BASE_URL": "http://localhost:3000". If running in cloud mode, remove "STEEL_LOCAL": "true", add "STEEL_LOCAL": "false", and supply "STEEL_API_KEY": "<YourKey>" This will allow Claude Desktop to start Steel Voyager in the correct mode.

Installation & Running

Installing via Smithery

To install Steel MCP Server for Claude Desktop automatically via Smithery:

Local Development

  1. Clone the repository
  1. Install dependencies:
  1. Build the project:
  1. Start the server:

Example Usage

We asked Claude to impress us with it's new abilities and it decided to research the latest developments with sora then create an interactive visualization to demonstrate the data behind the model and how it works
*Sorry for quality, github forces us to keep the videos under 10mb :/

Troubleshooting

Common issues and solutions:
  1. Verify your Steel API key when using cloud service and ensure your local Steel instance is running. Check that you have proper network connectivity to the service.
  1. If you're having issues with how pages are being rendered or marked up and sent to claude, try to add a delay in your config via the GLOBAL_WAIT_SECONDS env variable.
  1. Ensure the page has fully loaded and check your viewport size settings. Make sure your system has sufficient available memory for capturing screenshots.
  1. Session clean up isn't the best right now so you may need to manually release sessions as they're spun up to execute tasks.
  1. Prompting claude the right way can go a long way in improving performance and avoiding silly mistakes it may produce.
  1. Leverage the session viewer to analyse where your model may be getting stopped out.
  1. After ~15-20 browser actions claude starts to slow down as it's context window gets filled but with images. It shouldn't be horrible but we've noticed some latency here, especially with the Claude Desktop client lagging behind.

Contributing

This project is experimental and under active development. Contributions are welcome!
  1. Fork the repository
  1. Create a feature branch
  1. Submit a pull request
Please include:
  • Clear description of changes
  • Motivation
  • Documentation updates

Disclaimer

This project is experimental and based on the Web Voyager codebase. Use in production environments at your own risk.

Steel MCP Server

A Model Context Protocol (MCP) server that enables LLMs like Claude to navigate the web through Puppeteer-based tools and Steel. Based on the Web Voyager framework, it provides tools for all the standard web actions click clicking/scrolling/typing/etc and taking screenshots.
Ask Claude to help you with tasks like:
  • "Search for a recipe and save the ingredients list"
  • "Track a package delivery status"
  • "Find and compare prices for a specific product"
  • "Fill out an online job application"
<a href="https://glama.ai/mcp/servers/tbd32geble"><img width="380" height="200" src="https://glama.ai/mcp/servers/tbd32geble/badge" alt="Steel Server MCP server" /></a>

Quick Start

Below is a streamlined guide to run Steel Voyager inside Claude Desktop. You only need to adjust the environment options to switch between Steel Cloud and a local/self-hosted instance.

Prerequisites

  1. Latest versions of Git and Node.js installed
  1. Claude Desktop installed
  1. (Optional) Steel Docker image running locally, if you plan to self-host
  1. (Optional) If running Steel Cloud, bring your API key. Get one here.

A) Quick Start (Steel Cloud)

  1. Clone and build the project:
  1. Configure Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json) by adding a server entry:
  1. Start Claude Desktop. It will automatically launch this MCP server in Cloud mode.
  1. (Optional) You can view or manage active Steel Browser sessions in your dashboard.

B) Quick Start (Local / Self-Hosted Steel)

  1. Ensure your local or self-hosted Steel service is running (e.g., using the open-source Steel Docker image).
  1. Clone and build the project (same as above if not done yet):
  1. Configure Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json) for local mode:
  1. Start Claude Desktop, which will connect to your locally running Steel and launch Steel Voyager in local mode.
  1. (Optional) To view sessions locally, you can visit your self-hosted dashboard (localhost:5173) or logs specific to your Steel runtime environment.

That s it! Once Claude Desktop starts, it will orchestrate the MCP server behind the scenes and let you interact with the web automation capabilities through Steel Voyager.
For more info on getting set up or if you're having issues, check out the MCP set-up docs: https://modelcontextprotocol.io/quickstart/user

Components

Tools

  • navigate
  • search
  • click
  • type
  • scroll_down
  • scroll_up
  • go_back
  • wait
  • save_unmarked_screenshot

Resources

  • Screenshots: Each saved screenshot is accessible via an MCP resource URI in the form of: screenshot://RESOURCE_NAMEThe server stores these screenshots whenever you specify the "save_unmarked_screenshot" tool or when an action concludes (for most tools) with an annotated screenshot. These images can be retrieved through a standard MCP resource retrieval request.
(Note: While console logs are still collected for analysis and debugging, they are not exposed as retrievable resources in this implementation. They appear in the server s logs but are not served via MCP resource URIs.)

Key Features

  • Browser automation with Puppeteer
  • Steel integration for browser session management
  • Visual element identification through numbered labels
  • Screenshot capabilities
  • Basic web interaction (navigation, clicking, form filling)
  • Lazy-loading support through scrolling
  • Local and remote Steel instance support

Understanding Bounding Boxes

When interacting with pages, Steel Puppeteer adds visual overlays to help identify interactive elements:
  • Each interactive element (buttons, links, inputs) gets a unique numbered label
  • Colored boxes outline the elements' boundaries
  • Labels appear above or inside elements for easy reference
  • Use these numbers when specifying elements for click or type operations

Configuration

Steel Voyager can run in two modes: "Local" or "Cloud". This behavior is controlled by environment variables. Below is a concise overview:
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]

Local Mode

  1. Set STEEL_LOCAL="true".
  1. (Optional) Set STEEL_BASE_URL to point to the Steel server if you host it on a custom domain. Otherwise, Steel Voyager will default to http://localhost:3000.
  1. No API key is required in this mode.
  1. Puppeteer will connect via ws://0.0.0.0:3000
Example:
export STEEL_LOCAL="true"
export STEEL_BASE_URL="http://localhost:3000" # only if overriding

Cloud Mode

  1. Set STEEL_LOCAL="false".
  1. Set STEEL_API_KEY so Steel Voyager can authenticate with the Steel cloud service (or your self-hosted Steel if you changed STEEL_BASE_URL).
  1. STEEL_BASE_URL defaults to https://api.steel.dev; override this if you have a self-hosted Steel instance running on another endpoint.
  1. Puppeteer will connect via wss://connect.steel.dev?sessionId= &apiKey=
Example:
export STEEL_LOCAL="false"
export STEEL_API_KEY="YOUR_STEEL_API_KEY_HERE"

Claude Desktop Configuration

To use Steel Voyager with Claude Desktop, add something like this to your config file (often located at ~/Library/Application Support/Claude/claude_desktop_config.json):
Adjust the environment variables to match your desired mode:
If running locally/self hosted, keep "STEEL_LOCAL": "true" and optionally "STEEL_BASE_URL": "http://localhost:3000". If running in cloud mode, remove "STEEL_LOCAL": "true", add "STEEL_LOCAL": "false", and supply "STEEL_API_KEY": "<YourKey>" This will allow Claude Desktop to start Steel Voyager in the correct mode.

Installation & Running

Installing via Smithery

To install Steel MCP Server for Claude Desktop automatically via Smithery:

Local Development

  1. Clone the repository
  1. Install dependencies:
  1. Build the project:
  1. Start the server:

Example Usage

We asked Claude to impress us with it's new abilities and it decided to research the latest developments with sora then create an interactive visualization to demonstrate the data behind the model and how it works
*Sorry for quality, github forces us to keep the videos under 10mb :/

Troubleshooting

Common issues and solutions:
  1. Verify your Steel API key when using cloud service and ensure your local Steel instance is running. Check that you have proper network connectivity to the service.
  1. If you're having issues with how pages are being rendered or marked up and sent to claude, try to add a delay in your config via the GLOBAL_WAIT_SECONDS env variable.
  1. Ensure the page has fully loaded and check your viewport size settings. Make sure your system has sufficient available memory for capturing screenshots.
  1. Session clean up isn't the best right now so you may need to manually release sessions as they're spun up to execute tasks.
  1. Prompting claude the right way can go a long way in improving performance and avoiding silly mistakes it may produce.
  1. Leverage the session viewer to analyse where your model may be getting stopped out.
  1. After ~15-20 browser actions claude starts to slow down as it's context window gets filled but with images. It shouldn't be horrible but we've noticed some latency here, especially with the Claude Desktop client lagging behind.

Contributing

This project is experimental and under active development. Contributions are welcome!
  1. Fork the repository
  1. Create a feature branch
  1. Submit a pull request
Please include:
  • Clear description of changes
  • Motivation
  • Documentation updates

Disclaimer

This project is experimental and based on the Web Voyager codebase. Use in production environments at your own risk.