Skip to main content
Glama
README.md
# MSW AI Agent Bridge Monorepo

[![npm version](https://img.shields.io/npm/v/msw-cli)](https://www.npmjs.com/package/msw-cli)
[![npm version](https://img.shields.io/npm/v/msw-mcp?label=msw-mcp)](https://www.npmjs.com/package/msw-mcp)
[![CI](https://github.com/JasonBoy/msw-mcp/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/JasonBoy/msw-mcp/actions/workflows/ci.yml)
[![License: MIT](https://img.shields.io/github/license/JasonBoy/msw-mcp)](LICENSE)

This monorepo provides a suite of tools that bridge AI agents with Mock Service Worker (MSW). It enables dynamic addition, updating, and removal of MSW network mocks directly from a command-line interface or AI tool execution, completely independently of the application source code restarts.

## Demo

Walkthrough of the MCP-driven MSW workflow (browser bridge, live handler updates):

https://github.com/user-attachments/assets/06959759-b198-4cd1-ae2b-11ede32acd8e

## Key features

- 🤖 **Generate MSW handlers with AI**
- ⚡ **Update mocks without reloading the page**
- 🌉 **WebSocket bridge between Cli/MCP and the browser**
- 🛠️ **Scaffold MSW setup with `msw-cli setup` or MCP's `/msw-setup` prompt**
- 💻 **Terminal and script control via `msw-cli`**
- ⚙️ **Configurable port, persistence, and client targeting**
- ✨ **Agent skills for AI agents to use**

## Structure

This project is set up as a monorepo using `pnpm` and `turbo`.

- **`apps/docs`** (`@msw-mcp/docs`): Starlight documentation site for MSW Agent Tools (CLI, MCP, guides). Source lives under `apps/docs/src/content/docs/`.
- **`packages/msw-cli`**: The command-line interface (`msw-cli`) used by AI agents or developers to send dynamic handler updates. Run `msw-cli setup` to scaffold a project, then `msw-cli open` plus handler commands.
- **`packages/msw-mcp`**: The published Model Context Protocol server (`msw-mcp`) so assistants can manage mocks via MCP tools.
- **`packages/client`** (`@msw-mcp/client`): The browser/environment client that listens for updates and registers them with the local MSW setup.
- **`packages/core`** (`@msw-mcp/core`): The core daemon process and session management logic that brokers communication between the CLI or MCP server and the client.

## Documentation site

From the repo root:

```bash
pnpm --filter @msw-mcp/docs dev
```

Opens the local docs dev server (default Astro port, often `http://localhost:4321`). Production search (Pagefind) is easiest to verify after `pnpm --filter @msw-mcp/docs build` and `pnpm --filter @msw-mcp/docs preview`.

More detail: [apps/docs/README.md](apps/docs/README.md).

## Quick setup: msw-cli

1. Install the CLI globally: `npm install -g msw-cli` (or use your package manager’s equivalent).
2. In a new project, run **`msw-cli setup`** and follow the printed steps for MSW + `@msw-mcp/client`.
3. Start a session, then drive handlers from the shell:

   ```bash
   msw-cli open
   msw-cli add "http.get('/api/user', () => HttpResponse.json({ id: 1 }))"
   msw-cli status
   msw-cli close
   ```

Full command reference, flags, and workflows: [packages/msw-cli/README.md](packages/msw-cli/README.md).

## Quick setup: msw-mcp (MCP)

1. Register the server in your MCP client (example for JSON config):

   ```json
   {
     "mcpServers": {
       "msw-mcp": {
         "command": "npx",
         "args": ["msw-mcp@latest"]
       }
     }
   }
   ```

2. In the client, use the **`/msw-setup`** prompt (or follow manual steps) so the browser app loads `msw`, `@msw-mcp/client`, and the worker bridge.

Installation options (VS Code, Claude Code, Cursor, etc.), architecture, MCP tools, and manual setup: [packages/msw-mcp/README.md](packages/msw-mcp/README.md).

## Development Scripts

Run these scripts from the root directory using `pnpm`:

- **`pnpm build`**: Compiles all packages using Turborepo.
- **`pnpm dev`**: Starts the development pipelines for all packages.
- **`pnpm format`**: Formats the code using Prettier.
- **`pnpm lint`**: Runs linting checks across the repository.

## Getting Started

1. **Install dependencies:**

   ```bash
   pnpm install
   ```

2. **Build the project:**

   ```bash
   pnpm build
   ```

3. **Use the CLI:**  
   You can navigate to the CLI directory or use it directly via node after building:

   ```bash
   node packages/msw-cli/build/index.js help
   ```

## License

This project is licensed under the MIT License — see [LICENSE](LICENSE).