
IronBee DevTools MCP Server: Setup for Claude, Cursor and Other Apps
Lets Claude, Cursor and other assistants drive a real browser: open pages, click, read the console and network, and debug live code.
IronBee DevTools lets Claude, Cursor and other assistants drive a real Chromium browser on your computer. They can open pages, click and fill forms, read the console and network calls, check page speed and set debug probes on live code. It is published by IronBee for its own DevTools product and runs locally with no sign-in. The same package also ships separate servers for Node.js, backend (HTTP, gRPC, databases), Android, Python and terminal work, started with their own commands. This page covers the default browser server. Its execute tool runs scripts with full control of the page, so point it only at sites and logins you trust.
Good for
- Front-end developers who want the assistant to check a fix in a real browser
- QA engineers who test web flows and keep reusable scripts
- Developers chasing slow pages or failing network calls
- Teams that debug Node.js or backend services with the same tool
Works in
12 should work
Tap an app to see how to set it up and any known problems.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Client does not support this transport.
Client does not support this transport.
Install IronBee DevTools MCP
Claude Code
- 1
Copy this prompt.
Add the IronBee DevTools MCP server to Claude Code. Run this command: claude mcp add ironbee-devtools -- npx -y @ironbee-ai/devtools Then check that it loaded and tell me if I need to sign in or restart.
- 2
Paste it into Claude Code. It shows the change and asks before running it.
Requires Node.js.
Built from the package data we hold. Not yet tested by us.
Tools
Opens a web address in the browser
Loads the URL and, by default, returns a text outline of the page with handles you can click or fill.
Try: “Open https://example.com/login and tell me what is on the page.”
Network ·
navigation_go-toGoes back or forward in the page history
Moves one step back or forward in the tab's history and returns the new page outline.
Try: “Go back to the previous page.”
Network ·
navigation_go-back-or-forwardReloads the current page
Refreshes the page and returns the new outline, so you can check a fix after a code change.
Try: “Reload the page and tell me if the error is gone.”
Network ·
navigation_reloadOutlines the page as a tree of labelled elements
Returns the page as a text tree of roles and names, with short handles (e1, e2) the click and fill tools accept.
Try: “Take a snapshot of the checkout form and list its fields.”
Read ·
a11y_take-aria-snapshotFinds hidden, off-screen or covered elements
Combines the browser's accessibility tree with size, visibility and overlap checks, to explain why a click misses an element that looks visible.
Try: “Why can't the Buy button be clicked? Check if something covers it.”
Read ·
a11y_take-ax-tree-snapshotReturns the page HTML
Returns the HTML of the whole page or one element. Scripts are stripped unless you ask to keep them.
Try: “Show me the HTML of the navigation bar.”
Read ·
content_get-as-htmlReturns the visible text of the page
Returns the text a visitor can see, for the whole page or one section, cut off at a length limit.
Try: “Read me the text of the pricing section.”
Read ·
content_get-as-textSaves the current page as a PDF file
Prints the page to a PDF in a folder you choose, or the system temp folder by default.
Try: “Save this page as a PDF.”
Write ·
content_save-as-pdfStarts a video recording of the browser
Begins recording the browser session so you can replay what the assistant did.
Try: “Start recording, then walk through the signup flow.”
Write ·
content_start-recordingStops recording and saves the video
Ends the recording and writes the video file to a folder you choose, then returns its path.
Try: “Stop the recording and tell me where the video is saved.”
Write ·
content_stop-recordingTakes a screenshot of the page
Saves a PNG or JPEG of the page or an element to disk and returns the file path. Full-page and annotated shots are options.
Try: “Take a full-page screenshot of the homepage.”
Write ·
content_take-screenshotClicks an element on the page
Clicks the element you name by handle, text description or CSS selector. It can wait for the next page and return its outline.
Try: “Click the Sign in button.”
Write ·
interaction_clickDrags one element onto another
Drags a source element to a target element, for sliders, sortable lists and drag-and-drop uploads.
Try: “Drag the first card into the Done column.”
Write ·
interaction_dragTypes into a form field
Fills an input with the text you give it. Combined with click, it can complete and submit forms.
Try: “Fill the email field with test@example.com.”
Write ·
interaction_fillMoves the mouse over an element
Hovers an element, for menus and tooltips that only show on hover.
Try: “Hover over the Products menu and list what opens.”
Write ·
interaction_hoverPresses a keyboard key
Sends a key press, such as Enter or Escape, to the page or to a chosen element.
Try: “Press Escape to close the dialog.”
Write ·
interaction_press-keyChanges the simulated screen size
Sets the page's viewport width and height, so you can test phone, tablet and desktop layouts.
Try: “Resize the viewport to 390 by 844 and screenshot the homepage.”
Write ·
interaction_resize-viewportResizes the real browser window
Changes the size of the actual browser window. It works best in Chromium with the simulated viewport turned off.
Try: “Make the browser window 1280 by 800.”
Write ·
interaction_resize-windowPicks an option in a dropdown
Chooses a value in a select menu by handle or selector.
Try: “Choose Canada in the country dropdown.”
Write ·
interaction_selectScrolls the page or a scrollable box
Scrolls by an amount, to an element, or to the top, bottom, left or right of the page or a container.
Try: “Scroll to the bottom of the page.”
Read ·
interaction_scrollReads the browser console log
Returns console messages captured from the page, filtered by level, search text or time.
Try: “Show me the console errors since the page loaded.”
Read ·
o11y_get-console-messagesLists the requests the page made
Returns captured network requests, filterable by type and status. Headers and response bodies are included only if you ask.
Try: “Which API calls returned a 500 on this page?”
Read ·
o11y_get-http-requestsMeasures page speed and layout stability
Collects Core Web Vitals (LCP, INP, CLS) plus TTFB and FCP, with Google's ratings and suggestions.
Try: “Check the Core Web Vitals for this page.”
Read ·
o11y_get-web-vitalsCreates a trace ID for this session
Generates a new OpenTelemetry-style trace ID and attaches it to the session so later requests share it.
Try: “Start a new trace ID before I test the checkout.”
Write ·
o11y_new-trace-idShows the current trace ID
Returns the trace ID and trace state set for this session, if any.
Try: “What trace ID is this session using?”
Read ·
o11y_get-trace-contextSets or clears the trace ID
Pins a trace ID or trace state you choose on the session, or clears it with an empty value.
Try: “Set the trace ID to the one from the failing request.”
Write ·
o11y_set-trace-contextReads one trace back from the IronBee platform
Fetches every recorded span of one distributed trace as a tree. It reads from the IronBee service, so it needs that service to be set up.
Try: “Show me the full trace for the last request.”
Network ·
o11y_get-traceReads all traces of this session
Fetches all spans recorded under the current IronBee session, optionally narrowed to one activity.
Try: “List every trace recorded in this session.”
Network ·
o11y_get-session-tracesReads the logs linked to one trace
Fetches the browser console output and app log lines recorded under one trace ID from the IronBee platform.
Try: “Show the logs that belong to this trace.”
Network ·
o11y_get-trace-logsReads all logs of this session
Fetches every log line recorded under the current IronBee session, optionally narrowed to one activity.
Try: “Show all log lines from this session.”
Network ·
o11y_get-session-logsFinds the React component behind an element
Looks up which React component renders a DOM element, using React internals. Results are best-effort and vary by build.
Try: “Which React component renders the header banner?”
Read ·
react_get-component-for-elementFinds the page elements a React component draws
Maps a React component to the DOM elements it renders, using React internals. Works best with the React DevTools extension.
Try: “Where on the page does the CartSummary component show up?”
Read ·
react_get-element-for-componentMaps minified code to original source
Uses source maps to turn a bundle URL, line and column into the original file, line and column.
Try: “Where in the source is line 1 column 4521 of bundle.min.js?”
Read ·
debug_resolve-source-locationSets a probe that records state without pausing
Adds a tracepoint at a script location that captures the call stack and local variables each time it runs, without stopping the page.
Try: “Put a tracepoint at line 42 of checkout.js.”
Write ·
debug_put-tracepointSets a probe that logs a value
Adds a logpoint at a script location that evaluates an expression you give it each time that line runs.
Try: “Log the cart total whenever line 88 of cart.js runs.”
Write ·
debug_put-logpointChooses when errors are captured
Sets whether to capture snapshots on no exceptions, uncaught ones only, or all of them.
Try: “Capture a snapshot on every uncaught exception.”
Write ·
debug_put-exceptionpointAdds an expression to evaluate at each hit
Adds a watch expression that is evaluated on every tracepoint hit and shown in the snapshot.
Try: “Watch user.name at every tracepoint.”
Write ·
debug_add-watchLists tracepoints, logpoints and watches
Returns the probes and watch expressions currently set, optionally only one kind.
Try: “List my active probes.”
Read ·
debug_list-probesRemoves one probe or watch
Removes a tracepoint, logpoint or watch expression by its ID.
Try: “Remove the tracepoint on checkout.js.”
Delete ·
debug_remove-probeRemoves all probes of a kind
Removes all tracepoints, logpoints and watches, or only the kinds you name.
Try: “Clear all probes.”
Delete ·
debug_clear-probesReads what the probes captured
Returns captured snapshots from tracepoints, logpoints and exception captures, trimmed to the top call frame and local variables by default.
Try: “What did the tracepoint capture?”
Read ·
debug_get-probe-snapshotsDeletes captured probe snapshots
Clears stored snapshots for all probe types or the ones you name, or for one probe.
Try: “Clear the captured snapshots.”
Delete ·
debug_clear-probe-snapshotsSaves a reusable script
Stores a JavaScript scenario that can call other tools, on disk in the project folder or globally.
Try: “Save this login flow as a scenario called login.”
Write ·
scenario-addEdits a saved script
Changes a saved scenario's description, script, parameters or metadata. A metadata merge can remove keys.
Try: “Update the login scenario to use the new button label.”
Delete ·
scenario-updateDeletes a saved script
Deletes a scenario by name from the project or global folder.
Try: “Delete the old-login scenario.”
Delete ·
scenario-deleteLists saved scripts
Lists the scenarios in the project and global folders, optionally filtered by their metadata.
Try: “What scenarios do I have saved?”
Files ·
scenario-listSearches saved scripts by description
Searches scenario names and descriptions across project and global scenarios and ranks the matches.
Try: “Find a scenario that logs in.”
Files ·
scenario-searchLists tool calls recorded during a scenario step
While a scenario run is paused for the assistant, returns the browser tool calls made since the pause began.
Try: “Show what you did since the scenario paused.”
Read ·
scenario-recorded-actionsRuns a saved script
Runs a saved scenario by name. It uses the same JavaScript sandbox as the execute tool and can call any other tool.
Try: “Run the login scenario.”
Runs code ·
scenario-runChanges requests before they are sent
Adds a rule that adds or overrides headers or method on requests matching a URL pattern.
Try: “Add a test header to all calls to /api/*.”
Write ·
stub_intercept-http-requestFakes the reply to a request
Adds a rule that answers matching requests with a canned status, headers and body, or blocks them, with optional delay.
Try: “Make /api/user return a 500 error.”
Write ·
stub_mock-http-responseLists active request rules
Returns the intercept and mock rules currently installed in the session.
Try: “Which request rules are active?”
Read ·
stub_listRemoves request rules
Removes one rule by ID, or all rules for the session when no ID is given.
Try: “Remove all mock rules.”
Delete ·
stub_clearWaits until the page stops loading
Waits until the page has few requests in flight for a set time, so screenshots and snapshots are stable.
Try: “Wait for the page to finish loading, then screenshot it.”
Read ·
sync_wait-for-network-idleRuns JavaScript that can call other tools
Runs a script you or the assistant write in a restricted sandbox with the Playwright page object. It can call any other tool up to 50 times and run code in the page.
Try: “Run a script that logs in, opens the settings page and returns its title.”
Runs code ·
executeUsed by the assistant behind the scenes
Shows the state of debugging
Reports whether debugging is on and how many tracepoints, logpoints, watches and snapshots exist.
Try: “What is the debugging status?”
Read ·
debug_statusWaits for background reporting to finish
Waits for queued background work such as event and artifact uploads to settle before a run ends.
Try: “Flush pending uploads before we finish.”
Read ·
flushLists the secrets given to this run
Lists secret names and the placeholder to use in tool input. It never returns the secret values.
Try: “Which secrets can I use in this session?”
Read ·
secrets_list
Read from the source code
Permissions
high risk · 6 things to watch
High risk
It can control a real browser and run scripts in it, so a bad page or prompt could click, submit forms or delete saved scripts for you. Use a separate browser profile with no real logins, and only open sites you trust.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only mode
Watch out for
It runs scripts with full control of the page
The execute tool and saved scenarios run JavaScript with the Playwright page, so they can click, submit forms and read anything in a logged-in session. There is no read-only mode, so only open sites you trust. npmjs.com
It can click, type and submit in logged-in sessions
Click, fill and select act like you. Use a separate browser profile for tests and keep real accounts out of it. npmjs.com
It can delete saved scripts and probes
scenario-delete removes a saved script file, and scenario-update can drop metadata keys. The probe and request-rule clear tools only remove in-memory debug state. npmjs.com
It writes screenshots, PDFs and videos to disk
Screenshots, PDFs and recordings go to the folder you give or the system temp folder. Scenario scripts are stored as files under the project folder or a global folder. npmjs.com
It sends anonymous usage events by default
The package sends tool names, durations, success flags, client name, OS and Node version to PostHog unless you set TELEMETRY_ENABLE=false. It also downloads browsers on first run. npmjs.com
Optional Jira and Linear tools are off by default
They appear only when you set Jira or Linear credentials, and the write tools need a separate write flag. npmjs.com
Security advisories
No published security advisories as of Nov 1, 2026.
Technical details
| Talks to | Any website you ask it to open. us.posthog.com (anonymous usage events; opt out with TELEMETRY_ENABLE=false). IronBee platform, only for the trace and session tools and when configured |
|---|---|
| Sign-in and keys | No account or API key. Optional keys (Figma, Jira, Linear, IronBee platform) are read from environment variables you set. |
Questions
Is IronBee DevTools official?
Yes. IronBee publishes it for its own IronBee DevTools product. The npm package links to ironbee.ai.
Which AI apps does it work with?
Any app that runs local MCP servers. The README gives setup for Claude Desktop, Claude Code, Cursor, VS Code, Windsurf and GitHub Copilot, and it also supports a local web address for apps that connect that way.
Do I need an API key or account?
No. The browser server runs on your computer with no sign-in. Figma, Jira, Linear and IronBee platform features need their own keys, and the Figma comparison and Jira and Linear tools stay off until you set them.
Does it download a browser?
Yes. It uses Playwright browsers. The package can fetch them on first launch, or you can run the prefetch command from the README once to download them with progress shown.
Can I run it read-only?
No. Clicking, typing and running scripts are part of the default tools, and there is no read-only switch.
Does it send my data anywhere?
Pages you open are loaded from your computer. The package sends anonymous usage events to PostHog unless you set TELEMETRY_ENABLE=false. The trace and session tools talk to the IronBee service.
What else is in the package?
Separate servers for Node.js debugging, backend checks (HTTP, gRPC, GraphQL, WebSocket, logs, Postgres, MySQL, SQLite), Android, Python and terminals. They start with their own commands and are not listed here.
Is it free to use?
The package is free to install and use. Its license is Elastic License 2.0, which is source-available and not an open source license.
Information
updated Nov 2, 2026
- Publisher
- Official
- Package
@ironbee-ai/devtools- Registry
- npm
- Transport
- stdio, Streamable HTTP
- Auth
- None
- Version
- 0.52.0
- License
- Elastic-2.0
Sources
Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.
Show all 2Hide
- www.npmjs.com · npmjs.com
- registry.npmjs.org · registry.npmjs.org