# @buoy-gg/mcp
Connect an MCP client to supported Buoy tools in a running app. Read captured state, invoke tool actions, and run configured benchmarks.
MCP guide ·
buoy.gg ·
All tools
[](https://www.npmjs.com/package/@buoy-gg/mcp) [](https://www.npmjs.com/package/@buoy-gg/mcp)
## Install
Sign in first. Run this in your app's folder:
```bash
npx --package=@buoy-gg/core buoy login
```
Your browser opens buoy.gg. Click Allow. This signs in your computer. The MCP uses that sign-in, so it needs no key. As a backup, it reads a key from the env files in the folder it runs in.
Then set up the MCP:
```bash
npx -y @buoy-gg/mcp@latest init
```
Run it from your app's directory. It registers a `buoy` server in your MCP configs and adds the `buoy-optimize` skill. Your React Native app also needs `@buoy-gg/external-sync`. A free account gets the basic tools and Buoy Optimize, and Pro adds the full MCP. Restart your editor, open your app, and start with `list_devices`.
The [MCP guide](https://buoy.gg/buoy/latest/docs/mcp) covers setup, what it captures and its limits. New to Buoy? Start with the [Quick start](https://buoy.gg/buoy/latest/docs/quick-start).
## Buoy Web
Let your AI use the web in its own Chrome tabs. It's free and needs no account.
```bash
npx -y @buoy-gg/mcp@latest init --web
```
This adds a `buoy-web` server for all your projects. Then add the Buoy Web Chrome extension and restart your editor. It only uses tabs it opened, and it never types passwords or card numbers. See the [Buoy Web guide](https://buoy.gg/buoy/latest/docs/buoy-web).
## Read screens
Use `native_inspect` to read a point without a tap.
Pass `pointX` and `pointY` in iOS Sim points.
Other hosts use pixels. On a real iPhone, this reads the app view.
The `x` and `y` fields still use screen fractions.
Use `screenshot_component` with `compareTo` to view a saved PNG
next to the live screen. The saved file comes first.
Use a full path, or start at the project root.
The saved file stays as it is.
## Do more in one call
`run_flow` can tap, type and swipe in one call.
A `swipe` step with `untilEnd: true` goes to the end of a list.
Pass `real: true` to make each tap a real touch.
`screen_recording` can take `steps`. It records them, then stops and saves.
## Many sims at once
The `sim_farm_*` tools run many slim iOS sims and Android phones on one Mac. They make Buoy Optimize faster. Ask your agent:
```text
Use buoy optimize and the sim farm on our slow feed screen.
```
The agent finds as many ideas as it can and tests them all. Each idea gets its own sim. The agent checks how each one looks and how much memory it uses. Each app acts like a real phone (an iPhone SE, or a 3 GB Android phone), so an idea that uses too much memory is out. Then the best ideas are timed on one quiet sim. You can run the farm yourself too:
```bash
npx -y @buoy-gg/mcp@latest farm status
npx -y @buoy-gg/mcp@latest farm phone use off
```
See the [Sim Farm guide](https://buoy.gg/buoy/latest/docs/tools/sim-farm).
## Many Chromes at once
The `chrome_farm_*` tools run many slim Chromes on one computer. Each one runs your web app with its own storage and its own debugging address. Your tests and your agent can drive them all at once:
```bash
npx -y @buoy-gg/mcp@latest farm chrome up 8 --url http://localhost:3000
npx -y @buoy-gg/mcp@latest farm chrome run 8 --url http://localhost:3000 -- node my-test.mjs
```
See the [Chrome Farm guide](https://buoy.gg/buoy/latest/docs/tools/chrome-farm).
---