/chrome-devtools-mcp
Use Chrome DevTools MCP from .NET agents and .NET-focused repos to inspect, debug, and automate Chrome through an MCP client. USE FOR: the repo needs browser-level debugging for ASP.NET Core, Blazor, WebAssembly, or any .NET app with a web UI; the user wants an MCP server that
$ npx -y skills add managedcode/dotnet-skills --skill chrome-devtools-mcp --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/chrome-devtools-mcp
Context preview
The summary Claude sees to decide when to auto-load this skill.
Use Chrome DevTools MCP from .NET agents and .NET-focused repos to inspect, debug, and automate Chrome through an MCP client. USE FOR: the repo needs browser-level debugging for ASP.NET Core, Blazor, WebAssembly, or any .NET app with a web UI; the user wants an MCP server that
SKILL.md
chrome-devtools-mcp.SKILL.mdname: chrome-devtools-mcp
description: "Use Chrome DevTools MCP from .NET agents and .NET-focused repos to inspect, debug, and automate Chrome through an MCP client. USE FOR: the repo needs browser-level debugging for ASP.NET Core, Blazor, WebAssembly, or any .NET app with a web UI; the user wants an MCP server that can inspect console. DO NOT USE FOR: pure .NET code analysis, unit testing, or NuGet/package management; static HTML linting alone. INVOKES: inspect the repository context, edit targeted files, and run relevant build, test, lint, or validation commands when changes are made."
compatibility: "Requires an MCP-capable .NET agent/app or repo with a browser-debugging workflow; Chrome DevTools MCP runs as an external Node-based server and needs Chrome or Chrome for Testing."
Chrome DevTools MCP for .NET Repos
Trigger On
- the repo needs browser-level debugging for ASP.NET Core, Blazor, WebAssembly, or any .NET app with a web UI
- the user wants an MCP server that can inspect console output, network traffic, screenshots, traces, and DOM state
- the repo needs agent-friendly browser control instead of manual DevTools work
Do Not Use For
- pure .NET code analysis, unit testing, or NuGet/package management
- static HTML linting alone
- sensitive browser sessions that must not be exposed to an MCP client
Inputs
- the nearest `AGENTS.md`
- the MCP client config for the current agent or app
- the target Chrome mode: launch new, connect to existing browser, or attach to a WebSocket endpoint
- the target app URL or local dev server
Workflow
1. Choose the browser mode first.
- new ephemeral browser: default when you want a clean session
- existing browser: use `--browserUrl` or `--wsEndpoint`
- running browser with a user profile: use `--autoConnect` only when Chrome 144+ and remote debugging are already enabled
2. Prefer repo-local config over ad hoc shell commands.
- store the MCP server block in the repo or agent config so every run is repeatable
3. Start from the smallest useful surface.
- use `--slim` when you only need navigation, JavaScript execution, and screenshots
- leave the full toolset enabled when you need network, performance, or emulation
4. Be explicit about privacy and cost.
- disable usage statistics or CrUX-backed performance enrichment when policy or sensitivity requires it
5. Validate against the real app, not a mock page.
- use the app's local dev server, preview URL, or a production-like environment that reflects the bug
Current Upstream Notes
- Chrome DevTools MCP `v1.6.0` adds heap-snapshot aggregate filters and object-count/total-size details, `--allow-unrestricted-paths`, experimental GCF-encoded responses, and Lighthouse 13.4.0.
- The same release fixes page-id reuse across reconnects, snapshot element resolution, first-page pagination, selected-page fallback behavior, held modifier cleanup, and daemon startup races. Reproduce browser-state bugs after upgrading before adding client-side retries or page-id workarounds.
- Use the memory tools only when heap snapshots are the actual debugging need; close snapshots when finished so the browser session does not keep unnecessary memory pressure.
- For sensitive or scoped browser automation, prefer `allowedUrlPattern` / `blockedUrlPattern` over relying only on prompt instructions.
- When enabling category extensions, prompt the user for the category instead of silently broadening the tool surface.
Install And Configure
Use the same JSON MCP server block in whatever .NET agent/app host you use:
{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": ["-y", "chrome-devtools-mcp@latest"]
}
}
}Common variants:
{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": ["-y", "chrome-devtools-mcp@latest", "--slim", "--headless"]
}
}
}{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": ["-y", "chrome-devtools-mcp@latest", "--browserUrl", "http://127.0.0.1:9222"]
}
}
}For Codex CLI, the upstream repo documents:
codex mcp add chrome-devtools -- npx chrome-devtools-mcp@latest
Useful Flags
- `--slim`: three-tool surface for navigation, JavaScript execution, and screenshots only
- `--headless`: run without UI
- `--browserUrl` or `--wsEndpoint`: attach to an existing debuggable browser
- `--wsHeaders`: add custom WebSocket headers when `--wsEndpoint` is used
- `--autoConnect`: connect to a locally running Chrome 144+ instance instead of launching a new one
- `--channel stable|beta|dev|canary`: pick a Chrome channel
- `--isolated`: create and clean up a temporary profile
- `--userDataDir`: reuse a specific Chrome profile directory
- `--no-usage-statistics`: opt out of usage collection
- `--no-performance-crux`: stop sending performance trace URLs to CrUX
- `--acceptInsecureCerts`: only when the target environment uses self-signed or expired certs
- `--allow-unrestricted-paths`: opt out of filesystem path restrictions only for a trusted local workflow that genuinely needs arbitrary path access
- `--logFile <path>`: capture debug logs for bug reports
- `--experimentalScreencast`: only when ffmpeg is available and you need video capture
Practical Usage Patterns
- Debug a local ASP.NET Core or Blazor app:
- start the app
- connect with `--browserUrl` if the browser is already running, or let the server launch Chrome
- ask the agent to inspect console errors, network failures, and rendering behavior
- Investigate a flaky UI test:
- use `--headless --isolated`
- capture screenshots and console logs from the failing route
- compare the result to a known-good run
- Diagnose performance regressions:
- keep the full toolset enabled
- use performance tools only when you need trace data
- prefer `--slim` for quick smoke checks, not for performance work
- Work in a sandboxed or containerized environ
Read more
name: chrome-devtools-mcp description: "Use Chrome DevTools MCP from .NET agents and .NET-focused repos to inspect, debug, and automate Chrome through an MCP client. USE FOR: the repo needs browser-level debugging for ASP.NET Core, Blazor, WebAssembly, or any .NET app with a web UI; the user wants an MCP server that can inspect console. DO NOT USE FOR: pure .NET code analysis, unit testing, or NuGet/package management; static HTML linting alone. INVOKES: inspect the repository context, edit targeted files, and run relevant build, test, lint, or validation commands when changes are made." compatibility: "Requires an MCP-capable .NET agent/app or repo with a browser-debugging workflow; Chrome DevTools MCP runs as an external Node-based server and needs Chrome or Chrome for Testing."
Chrome DevTools MCP for .NET Repos
Trigger On
- the repo needs browser-level debugging for ASP.NET Core, Blazor, WebAssembly, or any .NET app with a web UI
- the user wants an MCP server that can inspect console output, network traffic, screenshots, traces, and DOM state
- the repo needs agent-friendly browser control instead of manual DevTools work
Do Not Use For
- pure .NET code analysis, unit testing, or NuGet/package management
- static HTML linting alone
- sensitive browser sessions that must not be exposed to an MCP client
Inputs
- the nearest `AGENTS.md`
- the MCP client config for the current agent or app
- the target Chrome mode: launch new, connect to existing browser, or attach to a WebSocket endpoint
- the target app URL or local dev server
Workflow
1. Choose the browser mode first.
- new ephemeral browser: default when you want a clean session
- existing browser: use `--browserUrl` or `--wsEndpoint`
- running browser with a user profile: use `--autoConnect` only when Chrome 144+ and remote debugging are already enabled
2. Prefer repo-local config over ad hoc shell commands.
- store the MCP server block in the repo or agent config so every run is repeatable
3. Start from the smallest useful surface.
- use `--slim` when you only need navigation, JavaScript execution, and screenshots
- leave the full toolset enabled when you need network, performance, or emulation
4. Be explicit about privacy and cost.
- disable usage statistics or CrUX-backed performance enrichment when policy or sensitivity requires it
5. Validate against the real app, not a mock page.
- use the app's local dev server, preview URL, or a production-like environment that reflects the bug
Current Upstream Notes
- Chrome DevTools MCP `v1.6.0` adds heap-snapshot aggregate filters and object-count/total-size details, `--allow-unrestricted-paths`, experimental GCF-encoded responses, and Lighthouse 13.4.0.
- The same release fixes page-id reuse across reconnects, snapshot element resolution, first-page pagination, selected-page fallback behavior, held modifier cleanup, and daemon startup races. Reproduce browser-state bugs after upgrading before adding client-side retries or page-id workarounds.
- Use the memory tools only when heap snapshots are the actual debugging need; close snapshots when finished so the browser session does not keep unnecessary memory pressure.
- For sensitive or scoped browser automation, prefer `allowedUrlPattern` / `blockedUrlPattern` over relying only on prompt instructions.
- When enabling category extensions, prompt the user for the category instead of silently broadening the tool surface.
Install And Configure
Use the same JSON MCP server block in whatever .NET agent/app host you use:
{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": ["-y", "chrome-devtools-mcp@latest"]
}
}
}Common variants:
{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": ["-y", "chrome-devtools-mcp@latest", "--slim", "--headless"]
}
}
}{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": ["-y", "chrome-devtools-mcp@latest", "--browserUrl", "http://127.0.0.1:9222"]
}
}
}For Codex CLI, the upstream repo documents:
codex mcp add chrome-devtools -- npx chrome-devtools-mcp@latest
Useful Flags
- `--slim`: three-tool surface for navigation, JavaScript execution, and screenshots only
- `--headless`: run without UI
- `--browserUrl` or `--wsEndpoint`: attach to an existing debuggable browser
- `--wsHeaders`: add custom WebSocket headers when `--wsEndpoint` is used
- `--autoConnect`: connect to a locally running Chrome 144+ instance instead of launching a new one
- `--channel stable|beta|dev|canary`: pick a Chrome channel
- `--isolated`: create and clean up a temporary profile
- `--userDataDir`: reuse a specific Chrome profile directory
- `--no-usage-statistics`: opt out of usage collection
- `--no-performance-crux`: stop sending performance trace URLs to CrUX
- `--acceptInsecureCerts`: only when the target environment uses self-signed or expired certs
- `--allow-unrestricted-paths`: opt out of filesystem path restrictions only for a trusted local workflow that genuinely needs arbitrary path access
- `--logFile <path>`: capture debug logs for bug reports
- `--experimentalScreencast`: only when ffmpeg is available and you need video capture
Practical Usage Patterns
- Debug a local ASP.NET Core or Blazor app:
- start the app
- connect with `--browserUrl` if the browser is already running, or let the server launch Chrome
- ask the agent to inspect console errors, network failures, and rendering behavior
- Investigate a flaky UI test:
- use `--headless --isolated`
- capture screenshots and console logs from the failing route
- compare the result to a known-good run
- Diagnose performance regressions:
- keep the full toolset enabled
- use performance tools only when you need trace data
- prefer `--slim` for quick smoke checks, not for performance work
- Work in a sandboxed or containerized environ
Stop explaining .NET to your AI. Start building. We've all been there: asking Claude to use Entity Framework, only to get EF6 patterns in a .NET 8 project. Explaining to Copilot that Blazor Server and Blazor WebAssembly aren't the same thing.
Repo: managedcode/dotnet-skills
Other skills on dotnet-skills.
- /aspnet-core
Build, debug, modernize, or review ASP.NET Core applications with correct hosting, middleware, security, configuration, logging, and deployment patterns on current .NET. USE FOR: working on ASP.NET Core apps, services, or middleware; changing auth, routing, configuration,
Open skill - /aspire
Build, upgrade, and operate Aspire 13.4.x C# or TypeScript application hosts with the current CLI, AppHost, ServiceDefaults, integrations, dashboard, testing, MCP, and deployment patterns for distributed apps. USE FOR: Aspire.AppHost.Sdk, Aspire.Hosting.*,
Open skill - /azure-functions
Build, review, or migrate Azure Functions in .NET with correct execution model, isolated worker setup, bindings, DI, and Durable Functions patterns. USE FOR: working on Azure Functions in .NET; migrating from the in-process model to the isolated worker model; adding Durable
Open skill - /blazor
Build and review Blazor applications across server, WebAssembly, web app, and hybrid scenarios with correct component design, state flow, rendering, and hosting choices. USE FOR: building interactive web UIs with C# instead of JavaScript; choosing between Server, WebAssembly, or
Open skill - /entity-framework6
Maintain or migrate EF6-based applications with realistic guidance on what to keep, what to modernize, and when EF Core is or is not the right next step. USE FOR: EF6 codebases; runtime versus ORM migration decisions; EDMX, code-first, ObjectContext, and legacy data-access
Open skill - /entity-framework-core
Design, tune, or review EF Core data access with proper modeling, migrations, query translation, performance, and lifetime management for modern .NET applications. USE FOR: DbContext, migrations, model configuration, EF queries, tracking, loading, performance, transactions, and
Open skill

