Buoy MCP
OFFICIAL SERVERInspect and drive a running React Native or Flutter app, simulator farms and Chrome from your editor
End-to-end testing of running Flutter, mobile, desktop and web apps driven through MCP tools
By AI Dashboard Local · stdio TestingBrowser automationDeveloper tools
42 popularity score ★ 402 ↓ 173/wk
Opens the app, which asks before it adds the server.
npm install -g flutter-skillclaude mcp add flutter-skill -- flutter-skill server{
"mcpServers": {
"flutter-skill": {
"command": "flutter-skill",
"args": [
"server"
]
}
}
}{
"mcpServers": {
"flutter-skill": {
"command": "flutter-skill",
"args": [
"server"
]
}
}
}{
"servers": {
"flutter-skill": {
"type": "stdio",
"command": "flutter-skill",
"args": [
"server"
]
}
}
}[mcp_servers.flutter-skill]
command = "flutter-skill"
args = ["server"]gemini mcp add --scope user flutter-skill flutter-skill -- serverOpens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
git clone https://github.com/ai-dashboad/flutter-skill
cd flutter-skill
dart pub getclaude mcp add flutter-skill -- dart run '<ABSOLUTE_PATH_TO_CLONE>/bin/flutter_skill.dart' server{
"mcpServers": {
"flutter-skill": {
"command": "dart",
"args": [
"run",
"<ABSOLUTE_PATH_TO_CLONE>/bin/flutter_skill.dart",
"server"
]
}
}
}{
"mcpServers": {
"flutter-skill": {
"command": "dart",
"args": [
"run",
"<ABSOLUTE_PATH_TO_CLONE>/bin/flutter_skill.dart",
"server"
]
}
}
}{
"servers": {
"flutter-skill": {
"type": "stdio",
"command": "dart",
"args": [
"run",
"<ABSOLUTE_PATH_TO_CLONE>/bin/flutter_skill.dart",
"server"
]
}
}
}[mcp_servers.flutter-skill]
command = "dart"
args = ["run", "<ABSOLUTE_PATH_TO_CLONE>/bin/flutter_skill.dart", "server"]gemini mcp add --scope user flutter-skill dart -- run '<ABSOLUTE_PATH_TO_CLONE>/bin/flutter_skill.dart' serverFLUTTER_SKILL_AUTO_REPORT |
Optional: Set to false to stop the server opening a pre-filled GitHub issue or filing one when a critical error occurs. |
|---|---|
GITHUB_TOKEN |
Optional: If present, critical errors are filed as GitHub issues with this token instead of opening a browser page. |
flutter-skill is a local MCP server, written in Dart and shipped as an npm package, that connects an assistant to an app while it runs, so the assistant can test it by hand: look at the screen, tap, type, scroll, check what appears and report what broke. You describe the test in plain language; no test scripts are written.
It reaches the app in one of two ways. Native and cross-platform apps (Flutter on iOS, Android and web, React Native, Electron, Tauri, Android/Kotlin, iOS/Swift, KMP Desktop and .NET MAUI) must include the project's small SDK, which opens a bridge the server talks to. Websites need no SDK: the server drives Chrome over the DevTools protocol, launching it when asked. Beyond taps and text entry, its tools cover screenshots and accessibility-tree snapshots, assertions and waits, visual baselines and diffs, network mocking and recording, plain HTTP and API checks, accessibility and locale checks, performance stats, several devices at once, and exporting a recorded session as Playwright, Cypress, Espresso, XCUITest or other test code.
The README counts 253 tools in MCP mode, but the list is not fixed: in v0.9.36 the server answers tools/list from the current connection and tells the client to refresh the list after connect_cdp, launch_app, scan_and_connect or disconnect succeeds, so an assistant sees a short list until it connects to an app (lib/src/cli/server.dart). The same package also has an HTTP `serve` mode and CLI commands (explore, monkey, test) for scripts and CI; this page covers the stdio `server` mode.
| Runtime | Node.js 16+ |
|---|
Node.js 16 or newer for the npm package. The npm postinstall step downloads a native binary for macOS, Linux x64 or Windows x64; when no binary is present the launcher falls back to `dart run`, which needs the Dart or Flutter SDK on PATH. Chrome to test websites. To test a native app, add the platform's flutter-skill SDK to it (for Flutter, the flutter_skill package started in debug mode) and run it on a device, emulator or desktop.
In v0.9.36 only one MCP server runs at a time: a second one exits while the lock file ~/.flutter_skill.lock is held, which matters if several clients or windows start it (lib/src/cli/server.dart). Native apps can be driven only after the SDK is built into them; websites through Chrome need no SDK. The tool total is counted in the README; tools/list changes with what is connected. The MCP registry entry still describes v0.8.x ("8 platforms, 40+ tools"), not the current package. The README's platform test scores come from the makers' own test app.
Suits a developer who wants an assistant to try out a Flutter or other cross-platform app, or a website, on their own machine, and to turn a session into recorded test code, without writing tests first. It runs locally and needs no account. Pick something else for web-only browser work if you want a smaller tool set without an SDK step, or if you need several clients connected at once (one server instance at a time). Teams that want no files written outside the project should note what the npm install adds to the home folder.
launch_appscan_and_connectconnect_cdphot_reloadhot_restartlist_sessionsswitch_sessiondisconnectstop_appscreenshotsnapshotinspect_interactiveget_widget_treefind_elementget_visible_textpage_summaryexplore_actionsboundary_testtaplong_pressswipedragenter_textclear_textscroll_togo_backpress_keysmart_tapassert_textassert_visiblewait_for_elementvisual_baseline_savevisual_baseline_comparemock_apirecord_networkreplay_networkhttp_requestapi_requestcoverage_reportmulti_connectaccessibility_auditset_localeperf_reportsave_sessionrecord_startrecord_exportauth_otpnavigateevalget_cookiesset_local_storagegenerate_pdfemulate_devicethrottle_networkget_logsget_errorsdiagnose