MCP HubMCP Hub
steel-dev

steel-mcp-server

by: steel-dev

MCP Server for interacting with a Steel web browser

31created 05/12/2024
Visit
Steel
browser

📌Overview

Purpose: The Steel MCP Server is designed to enable large language models (LLMs) like Claude to navigate the web using browser automation for effective task completion.

Overview: This Model Context Protocol (MCP) server harnesses the capabilities of Puppeteer-based tools and Steel, allowing LLMs to perform standard web actions, including clicking, scrolling, typing, and capturing screenshots. It provides a robust framework for automating various web interactions, streamlining tasks for users.

Key Features:

  • Browser Automation: Leverages Puppeteer for automating browser tasks, allowing for interaction with web pages seamlessly.

  • Steel Integration: Facilitates browser session management, ensuring efficient handling of user interactions and resources.

  • Visual Element Identification: Enhances usability through numbered labels that simplify the selection of interactive elements on pages.

  • Basic Web Interaction: Supports fundamental actions such as navigation, clicking, form filling, and scrolling, making it versatile for various web tasks.

  • Screenshot Capabilities: Includes functions to capture and save screenshots, which can be referenced later for verification or records.

  • Local and Remote Support: Configurable to run in either local (self-hosted) or cloud modes, providing flexibility based on user needs.


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 standard web actions: clicking, scrolling, typing, taking screenshots, etc.

Ask Claude to assist 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

🚀 Quick Start

Run Steel Voyager inside Claude Desktop. Adjust environment options to switch between Steel Cloud and local/self-hosted instances.

Prerequisites

  1. Latest versions of Git and Node.js installed
  2. Claude Desktop installed
  3. (Optional) Steel Docker image running locally for self-host
  4. (Optional) Steel Cloud API key

A) Quick Start (Steel Cloud)

  1. Clone and build the project:

    git clone https://github.com/steel-dev/steel-mcp-server.git
    cd steel-mcp-server
    npm install
    npm run build
    
  2. Configure Claude Desktop (path: ~/Library/Application Support/Claude/claude_desktop_config.json) by adding a server entry:

    {
      "mcpServers": {
        "steel-puppeteer": {
          "command": "node",
          "args": ["path/to/steel-voyager/dist/index.js"],
          "env": {
            "STEEL_LOCAL": "false",
            "STEEL_API_KEY": "YOUR_STEEL_API_KEY_HERE",
            "GLOBAL_WAIT_SECONDS": "1"
          }
        }
      }
    }
    
    • Replace "YOUR_STEEL_API_KEY_HERE" with your Steel API key.
    • Ensure "STEEL_LOCAL" is set to "false" for cloud mode.
  3. Start Claude Desktop; it will launch this MCP server in Cloud mode.

  4. Optionally manage active Steel Browser sessions in your Steel dashboard.


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

  1. Ensure your local or self-hosted Steel service is running (e.g., with Steel Docker image).

  2. Clone and build the project (if not done):

    git clone https://github.com/steel-dev/steel-mcp-server.git
    cd steel-mcp-server
    npm install
    npm run build
    
  3. Configure Claude Desktop for local mode:

    {
      "mcpServers": {
        "steel-puppeteer": {
          "command": "node",
          "args": ["path/to/steel-voyager/dist/index.js"],
          "env": {
            "STEEL_LOCAL": "true",
            "STEEL_BASE_URL": "http://localhost:3000",
            "GLOBAL_WAIT_SECONDS": "1"
          }
        }
      }
    }
    
    • Set "STEEL_LOCAL": "true".
    • Adjust "STEEL_BASE_URL" to your hosted Steel URL if not localhost.
  4. Start Claude Desktop, connecting it to your local Steel instance.

  5. Optionally view sessions locally via your self-hosted dashboard or logs.


Once Claude Desktop starts, it will orchestrate the MCP server and enable web automation through Steel Voyager.

For more info or troubleshooting, see MCP setup docs: https://modelcontextprotocol.io/quickstart/user

Components

Tools

  • navigate
    Navigate to any URL
    Inputs:

    • url (string, required): URL to visit
  • search
    Google search by navigating to https://www.google.com/search?q=encodedQuery
    Inputs:

    • query (string, required): Search text
  • click
    Click elements by numbered labels
    Inputs:

    • label (number, required): Element label
  • type
    Type text into input fields by label
    Inputs:

    • label (number, required): Input field label
    • text (string, required): Text to type
    • replaceText (boolean, optional): Replace existing text if true
  • scroll_down
    Scroll down the page
    Inputs:

    • pixels (integer, optional): Amount to scroll; defaults to one page
  • scroll_up
    Scroll up the page
    Inputs:

    • pixels (integer, optional): Amount to scroll; defaults to one page
  • go_back
    Navigate back in browser history (no inputs needed)

  • wait
    Wait up to 10 seconds, useful for slow-loading content
    Inputs:

    • seconds (number, required): Seconds to wait (0–10)
  • save_unmarked_screenshot
    Capture current page without overlays and save as resource
    Inputs:

    • resourceName (string, optional): Name for the screenshot

Resources

  • Screenshots
    Saved screenshots accessible via MCP resource URIs in the form screenshot://RESOURCE_NAME.

Console logs are collected for debugging but are not exposed as retrievable MCP resources.

Key Features

  • Browser automation with Puppeteer
  • Steel integration for session management
  • Visual element identification with numbered labels
  • Screenshot capturing
  • Basic web interactions (navigation, clicking, typing)
  • Lazy-loading support via scrolling
  • Support for local and remote Steel instances

Understanding Bounding Boxes

Steel Puppeteer overlays visual indicators on interactive elements:

  • Each element (e.g., buttons, inputs) has a unique numbered label
  • Colored boxes outline element boundaries
  • Labels help identify elements for click or type commands

Configuration

Steel Voyager runs in two modes controlled by environment variables:

VariableDefaultDescription
STEEL_LOCAL"false"Runs Steel Voyager in local (true) or cloud (false) mode
STEEL_API_KEY(none)Required for cloud mode; authenticates requests
STEEL_BASE_URL"https://api.steel.dev"Base URL for Steel API; overridden when self-hosting locally or on custom domains
GLOBAL_WAIT_SECONDS(none)Optional wait time after tool actions for slow-loading pages

Local Mode

  • STEEL_LOCAL="true"
  • Optionally set STEEL_BASE_URL to your hosted Steel URL; defaults to http://localhost:3000
  • No API key required
  • Puppeteer connects via ws://0.0.0.0:3000

Example:

export STEEL_LOCAL="true"
export STEEL_BASE_URL="http://localhost:3000"  # if overriding default

Cloud Mode

  • STEEL_LOCAL="false"
  • Set STEEL_API_KEY for authentication
  • STEEL_BASE_URL defaults to https://api.steel.dev unless overridden
  • Puppeteer connects via wss://connect.steel.dev?sessionId=…&apiKey=…

Example:

export STEEL_LOCAL="false"
export STEEL_API_KEY="YOUR_STEEL_API_KEY_HERE"

Claude Desktop Configuration Example

Modify claude_desktop_config.json:

{
  "mcpServers": {
    "steel-puppeteer": {
      "command": "node",
      "args": ["path/to/steel-puppeteer/dist/index.js"],
      "env": {
        "STEEL_LOCAL": "false",
        "STEEL_API_KEY": "your_api_key_here"
      }
    }
  }
}
  • For local/self-hosted, use "STEEL_LOCAL": "true" and optionally set "STEEL_BASE_URL"
  • For cloud, set "STEEL_LOCAL": "false" and provide your API key

This config enables Claude Desktop to start Steel Voyager in the intended mode.

Installation & Running

Installing via Smithery

Install Steel MCP Server for Claude Desktop automatically:

npx -y @smithery/cli install @steel-dev/steel-mcp-server --client claude

Local Development

  1. Clone the repository

  2. Install dependencies:

    npm install
    
  3. Build the project:

    npm run build
    
  4. Start the server:

    npm start
    

Troubleshooting

  1. Verify Steel API key for cloud mode; ensure local Steel instance is running and reachable.
  2. Add delay using GLOBAL_WAIT_SECONDS if pages render improperly.
  3. Confirm pages fully load; check viewport size and system memory.
  4. Manual session cleanup may be necessary.
  5. Clear, well-crafted prompts improve Claude's performance.
  6. Use session viewer to diagnose model interruptions.
  7. Expect some latency after 15-20 browser actions due to context window filling.

Contributing

This project is experimental and under active development. Contributions are welcome!

  1. Fork the repository
  2. Create a feature branch
  3. Submit a pull request with clear descriptions, motivation, and documentation updates

Disclaimer

⚠️ Experimental project based on Web Voyager codebase. Use in production at your own risk.