Steel MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| STEEL_LOCAL | No | Determines if Steel Voyager runs in local (true) or cloud (false) mode. | false |
| STEEL_API_KEY | No | Required only when STEEL_LOCAL = false. Used to authenticate requests with the Steel endpoint. | |
| STEEL_BASE_URL | No | The base URL for the Steel API. Override this if self-hosting the Steel server (either locally or in your own cloud environment). If STEEL_LOCAL = true and STEEL_BASE_URL is unset, it defaults to http://localhost:3000. | https://api.steel.dev |
| GLOBAL_WAIT_SECONDS | No | Optional. Number of seconds to wait after each tool action (for instance, to allow slow-loading pages). |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| steel_scrapeA | Read a web page as markdown or HTML through a real browser, so JavaScript-rendered pages and sites that block plain HTTP fetches still work. Starts no browser session, so there is nothing to release afterwards. Always returns the page links and metadata alongside the content. Use this first for anything you only need to read; reach for steel_session_create only when you need to click, type or move through several pages. |
| steel_screenshotA | Capture a page image. URL captures are user-facing PNG artifacts; session captures are model-visible JPEG evidence. Pixels are not action targets, so use steel_snapshot to click or type. |
| steel_pdfA | Render a page to PDF and return a link to the file. Starts no browser session. Use steel_scrape if you want to read the text — the PDF link is for handing a document to a person. |
| steel_session_createC | Billed; profiles/credentials via session_options; release. |
| steel_session_releaseA | Shut down the current browser and stop the meter. Safe to call twice. Its current URL and session-only page state are gone afterwards. A profile is saved only when persistence was requested. Read what you need first; this reports the final URL and title. |
| steel_navigateA | Navigate a live session and wait for it to settle. Reports the final URL and changes; set include_snapshot to also read the page. |
| steel_snapshotA | Return the page as a compact accessibility tree with a @eN reference on every element you can click or type into. This is the read to use before acting. Elements with no reference cannot be targeted. If you already know what you are looking for, steel_find is much cheaper. |
| steel_findA | Find labelled elements by text, safe regex or role and return their @eN refs. |
| steel_actA | Click, type, fill a form, select an option, hover, scroll, press a key, go back, or dismiss a cookie or consent overlay. Target elements by the @eN reference from steel_snapshot or steel_find, or by a CSS selector. Always reports what actually changed, and says so plainly when nothing did. |
| steel_wait_forA | Wait for named text, a CSS selector or URL substring; pass at least one. |
| steel_session_diagnosticsA | Read live/released activity or list live handles; never starts a browser. |
| steel_session_handoffA | Pause for a person to take exclusive control of this same live browser, then resume only after hand-back. Use for sensitive input, local files, review, or any manual step. |
| steel_session_replayA | Call only when the user explicitly asks to watch or replay a finished session. Returns its Steel dashboard link without starting a browser; use steel_session_diagnostics to inspect or explain activity. |
| steel_batchA | Run known reversible steps whose later targets need no fresh read. Stops on failure or login/challenge; hand off the same session and resume only unrun steps. Stop before payment/final confirmation. |
| steel_session_optionsC | Find profiles/credentials; plan setup. |
| steel_session_live_viewC | App-only viewer and control lease; no page content. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| session-viewer | Watches and securely takes control of the same live browser, inline in the conversation. |
TDQS
Scored across 16 tools
Most tools have clearly distinct purposes, with stateless reading (scrape, screenshot, pdf) separated from session interaction (navigate, act, snapshot). A few pairs like steel_screenshot/steel_snapshot and steel_session_live_view/steel_session_replay have similar names, but detailed descriptions resolve the boundaries.
All tools share the steel_ prefix and snake_case, but the pattern mixes bare verbs (scrape, navigate, act) with session_ prefixed noun_verb forms (session_create, session_release, session_handoff). This is consistent enough to be predictable, with minor deviations like steel_pdf and steel_wait_for.
16 tools is slightly above the typical 3-15 range, but the breadth covers stateless captures, session lifecycle, element targeting, and diagnostics. Each tool addresses a distinct need, so the count feels justified rather than bloated.
The surface covers the core browser automation lifecycle: create/release sessions, navigate, read, interact, wait, and diagnose. Obvious gaps include a full-HTML/markdown read within a live session and session-scoped PDF rendering, but these can be worked around with snapshot or separate stateless calls.