Steel MCP Server
- "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
Prerequisites
- Latest versions of Git and Node.js installed
- Claude Desktop installed
- (Optional) Steel Docker image running locally, if you plan to self-host
- (Optional) If running Steel Cloud, bring your API key. Get one here.
A) Quick Start (Steel Cloud)
- Clone and build the project:
- Configure Claude Desktop (
~/Library/Application Support/Claude/claude_desktop_config.json
) by adding a server entry:
- Start Claude Desktop. It will automatically launch this MCP server in Cloud mode.
- (Optional) You can view or manage active Steel Browser sessions in your dashboard.
B) Quick Start (Local / Self-Hosted Steel)
- Ensure your local or self-hosted Steel service is running (e.g., using the open-source Steel Docker image).
- Clone and build the project (same as above if not done yet):
- Configure Claude Desktop (
~/Library/Application Support/Claude/claude_desktop_config.json
) for local mode:
- Start Claude Desktop, which will connect to your locally running Steel and launch Steel Voyager in local mode.
- (Optional) To view sessions locally, you can visit your self-hosted dashboard (localhost:5173) or logs specific to your Steel runtime environment.
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_NAME
The 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.
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
- 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
[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
- Set STEEL_LOCAL="true".
- (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.
- No API key is required in this mode.
- Puppeteer will connect via ws://0.0.0.0:3000
Cloud Mode
- Set STEEL_LOCAL="false".
- 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).
- STEEL_BASE_URL defaults to https://api.steel.dev; override this if you have a self-hosted Steel instance running on another endpoint.
- Puppeteer will connect via wss://connect.steel.dev?sessionId= &apiKey=
Claude Desktop Configuration
"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
Local Development
- Clone the repository
- Install dependencies:
- Build the project:
- Start the server:
Example Usage
Troubleshooting
- 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.
- 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.
- Ensure the page has fully loaded and check your viewport size settings. Make sure your system has sufficient available memory for capturing screenshots.
- 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.
- Prompting claude the right way can go a long way in improving performance and avoiding silly mistakes it may produce.
- Leverage the session viewer to analyse where your model may be getting stopped out.
- 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
- Fork the repository
- Create a feature branch
- Submit a pull request
- Clear description of changes
- Motivation
- Documentation updates
Disclaimer
Steel MCP Server
- "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
Prerequisites
- Latest versions of Git and Node.js installed
- Claude Desktop installed
- (Optional) Steel Docker image running locally, if you plan to self-host
- (Optional) If running Steel Cloud, bring your API key. Get one here.
A) Quick Start (Steel Cloud)
- Clone and build the project:
- Configure Claude Desktop (
~/Library/Application Support/Claude/claude_desktop_config.json
) by adding a server entry:
- Start Claude Desktop. It will automatically launch this MCP server in Cloud mode.
- (Optional) You can view or manage active Steel Browser sessions in your dashboard.
B) Quick Start (Local / Self-Hosted Steel)
- Ensure your local or self-hosted Steel service is running (e.g., using the open-source Steel Docker image).
- Clone and build the project (same as above if not done yet):
- Configure Claude Desktop (
~/Library/Application Support/Claude/claude_desktop_config.json
) for local mode:
- Start Claude Desktop, which will connect to your locally running Steel and launch Steel Voyager in local mode.
- (Optional) To view sessions locally, you can visit your self-hosted dashboard (localhost:5173) or logs specific to your Steel runtime environment.
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_NAME
The 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.
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
- 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
[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
- Set STEEL_LOCAL="true".
- (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.
- No API key is required in this mode.
- Puppeteer will connect via ws://0.0.0.0:3000
Cloud Mode
- Set STEEL_LOCAL="false".
- 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).
- STEEL_BASE_URL defaults to https://api.steel.dev; override this if you have a self-hosted Steel instance running on another endpoint.
- Puppeteer will connect via wss://connect.steel.dev?sessionId= &apiKey=
Claude Desktop Configuration
"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
Local Development
- Clone the repository
- Install dependencies:
- Build the project:
- Start the server:
Example Usage
Troubleshooting
- 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.
- 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.
- Ensure the page has fully loaded and check your viewport size settings. Make sure your system has sufficient available memory for capturing screenshots.
- 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.
- Prompting claude the right way can go a long way in improving performance and avoiding silly mistakes it may produce.
- Leverage the session viewer to analyse where your model may be getting stopped out.
- 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
- Fork the repository
- Create a feature branch
- Submit a pull request
- Clear description of changes
- Motivation
- Documentation updates