Skip to content

MCP Tools

msw-mcp exposes five MCP tools that AI assistants can call to control MSW in the browser.


Add one or more new request handlers to the browser service worker at runtime.

Parameters:

Parameter Type Required Description
handlers string[] Yes Array of handler code strings
once boolean No If true, each handler only intercepts the first matching request, then deactivates

Available MSW utilities inside handler strings:

  • httphttp.get, http.post, http.put, http.delete, http.patch, …
  • HttpResponseHttpResponse.json, HttpResponse.text, HttpResponse.error, …
  • bypass — bypass the handler and perform the real network request
  • passthrough — explicitly pass through to the network
  • delay — add a response delay (await delay(500))

Example:

{
"handlers": [
"http.get('/api/users', () => HttpResponse.json([{ id: 1, name: 'Alice' }]))",
"http.post('/api/users', async ({ request }) => { const user = await request.json(); return HttpResponse.json({ ...user, id: Date.now() }, { status: 201 }) })"
]
}

One-time handler:

{
"handlers": [
"http.get('/api/feature-flag', () => HttpResponse.json({ enabled: true }))"
],
"once": true
}

After the first request, the handler deactivates and subsequent requests pass through.


Replace handlers that match specified URL patterns. Atomic operation — matched handlers are removed and new handlers added in one step.

Parameters:

Parameter Type Required Description
patterns string[] Yes URL patterns to match existing handlers
handlers string[] Yes New handler code strings to replace matched handlers
methods string[] No Only update handlers matching these HTTP methods

Update all methods for a pattern:

{
"patterns": ["/api/users"],
"handlers": ["http.get('/api/users', () => HttpResponse.json([]))"]
}

Update only GET, leave POST unchanged:

{
"patterns": ["/api/users"],
"handlers": ["http.get('/api/users', () => HttpResponse.json([]))"],
"methods": ["GET"]
}

Remove specific handlers by URL patterns and optional HTTP method filter.

Parameters:

Parameter Type Required Description
patterns string[] Yes URL patterns to match handlers for removal
methods string[] No Only remove handlers matching these HTTP methods
{ "patterns": ["/api/users"] }
{ "patterns": ["/api/users"], "methods": ["GET"] }

Reset MSW handlers. Without handlers, removes all runtime handlers and restores the initial base handlers. With handlers, replaces the entire set.

Parameters:

Parameter Type Required Description
handlers string[] No New handler code strings to set after reset
{}
{
"handlers": ["http.get('/api/user', () => HttpResponse.json({ id: 1 }))"]
}

Get the current status of the MSW service worker and all active handlers. No parameters.

Response:

{
"connected": true,
"workerStatus": "running",
"activeHandlers": [
"GET /api/users",
"POST /api/users",
"GET /api/products"
],
"handlerCount": 3
}
Field Type Description
connected boolean Whether a browser tab is connected via WebSocket
workerStatus string "running", "stopped", or "unknown"
activeHandlers string[] Summary of active handlers (method + URL)
handlerCount number Total number of active handlers