プロトタイプ · プレビュー版:公式レジストリのすべてのサーバーを掲載し、30分ごとに同期しています。Google でログインするとレビューを書けます。プロトタイプ · 30分ごとに更新
PopNx MCPAIを使う人のためのMCPサーバー · やさしい言葉で解説

FlutterSDK Dusk

作者:fluttersdkバージョン 0.0.13i★ 3i–
レジストリ名io.github.fluttersdk/dusk

インストール方法

What it does

Drive live Flutter apps: snapshot the Semantics tree, tap, type, scroll and screenshot.

  • Connects –
  • Account or key No key needed
  • Category ウェブ・ブラウザ

インストール

使っているAIアプリを選んで、設定をコピーしてください。

チェック 3/3 合格 · あなたのパソコンで動きます

まず:どの AI を使っていますか?

使っているアプリを選ぶと、下に手順が表示されます。

Claude はまだ FlutterSDK Dusk につなげません

提供元はまだ MCP Registry にインストール方法を載せていません

ChatGPT はまだ FlutterSDK Dusk につなげません

提供元はまだ MCP Registry にインストール方法を載せていません

代わりにできること

B · ウェブ・ブラウザ の中で ChatGPT につなげる別のサーバー

同じカテゴリでよく使われているものから、キーなしでアドレスだけでつなげるものを選びました

Claude Code はまだ FlutterSDK Dusk につなげません

提供元はまだ MCP Registry にインストール方法を載せていません

Cursor はまだ FlutterSDK Dusk につなげません

提供元はまだ MCP Registry にインストール方法を載せていません

VS Code はまだ FlutterSDK Dusk につなげません

提供元はまだ MCP Registry にインストール方法を載せていません

Windsurf、Zed、Gemini CLI など MCP を使える他のアプリは追加方法がそれぞれ違います。アプリ一覧で確認してください

MCP を使えるアプリをすべて見る →

JSON 設定は下の「開発者向け」にあります

つまずいたら?FlutterSDK Dusk を使っている人に聞いてみましょう💬 ディスカッション →

ひと目でわかる

週あたりのダウンロードi
npm/PyPIにない
接続方法
–
最新バージョンi
0.0.13
レジストリ公開日i
2026年9月13日
コードの最終更新i
2026年11月15日
作者
fluttersdk
ウェブサイト
fluttersdk.com
レジストリでの状態
有効

できること

パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。

基本チェックi

誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月15日にチェック

  • ✓ 合格

    作者とリポジトリが一致

    レジストリ名は、リポジトリを所有するGitHubアカウント fluttersdk で確認済みです

  • ✓ 合格

    今もメンテナンスされている

    コードの最終更新:今日

  • ✓ 合格

    ライセンスがある

    MITを使用

  • – 対象外

    エンドポイントが応答する

    これはパソコンで動くため、インターネット上のエンドポイントはありません

  • – 対象外

    OAuthでサインイン

    パソコンで動き、代わりにローカルの設定を使います

  • … 未チェック

    ツールの説明に隠れた指示がない

    パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです

確認していること → · JSON

作者の方へ:再確認の依頼・情報の誤りの報告

話し合い

質問、コツの共有、使えないことの報告ができます。「役に立った」の多い順です。

まだ投稿はありません。最初の質問や共有をどうぞ。

ここの投稿は利用者によるもので、PopNx チームのものではありません。

ログインして投稿

ユーザーレビュー

まだレビューはありません

ログインしてレビューを書く

ウェブ・ブラウザのほかのサーバーとの比較i

  • このカテゴリのほかの1519件のうち86%よりスターが多い
  • このカテゴリのほかの1519件のうち30%より最近レジストリに公開
  • 基本チェックの結果が、このカテゴリのほかの1519件のうち100%と同じかそれ以上

レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。

よくある質問

FlutterSDK Duskは安全ですか?

当てはまる基本チェック3項目のうち3項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。

どんなキーやコードが必要ですか?

レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。

パソコンで動きますか、それともクラウドですか?

あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。

今もメンテナンスされていますか?

GitHubリポジトリの最終更新は今日、最新バージョン(0.0.13)がレジストリに届いたのは2 か月前です。

どのアプリで使えますか?

Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。

代わりに使えるものは?

同じカテゴリには:Browser Use, changedetection.io (official), Apify MCP Server, Actionbook, Flowershow

似た働きのほかの候補

同じカテゴリでほかの作者のもの。コマンドは確認済み。公式を先に、次にスター順。

カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i

Browser Use

Browser agents and stealth cloud browsers for AI: run web tasks, fill forms, extract data.

作者:browser-use広く使われている↓ 167.3万/週★ 12.1万25 日前更新

パソコンでもクラウドでも✓ 提供元 · browser-use.com

changedetection.io (official)

Official changedetection.io MCP: web page change tracking, back-in-stock and price alerts.

作者:dgtlmoon広く使われている★ 3.6万10 日前更新

クラウドで動く✓ 提供元 · changedetection.io

Apify MCP Server

Extract data from any website with thousands of scrapers, crawlers, and automations on Apify Store ⚡

作者:apify広く使われている★ 1.6万一昨日更新

クラウドで動く✓ 提供元 · apify.com

Actionbook

Let your AI agent operate any website through a real, logged-in browser session.

作者:actionbook成長中★ 163127 日前更新

クラウドで動く✓ 提供元 · actionbook.app

Flowershow

Publish Markdown and HTML from your AI session as a live website. No account needed.

作者:flowershow成長中★ 111420 日前更新

クラウドで動く✓ 提供元 · flowershow.app
  • Browser Use — クラウドでもパソコンにインストールでも使える · キーが必要 · Claude のディレクトリに掲載
  • changedetection.io (official) — クラウドで動き、インストール不要 · キー不要
  • Apify MCP Server — クラウドで動き、インストール不要 · キーが必要
  • Actionbook — クラウドで動き、インストール不要 · キー不要
  • Flowershow — クラウドで動き、インストール不要 · キー不要

作者のREADME

READMEを開く

作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。

Tapir

Give your AI agent eyes and hands on a running Flutter app.

Snapshot the Semantics tree, tap, type, scroll, screenshot and profile the live app from one CLI and one MCP server, with no flutter_test harness and no test file between actions.

Documentation · pub.dev · Issues

At a glance

FactValue
Packagetapir
Installdart pub add tapir, then dart run tapir tapir:install
Importpackage:tapir/tapir.dart (TapirPlugin.install(), behind if (!kReleaseMode))
Entry pointsdart run tapir , ./bin/dowel , TapirPlugin.install(), TapirPlugin.enrichers, TapirDowelProvider (package:tapir/cli.dart), dart run tapir mcp:serve
PlatformsAny Flutter target that exposes a VM Service in a debug or profile build: Android, iOS, web, macOS, Windows, Linux; viewport and device emulation need Chrome with a CDP port; tapir_hot_reload_and_snap writes to the flutter run stdin FIFO, so it needs a POSIX host; on a Windows host mcp:install writes a dart run entry, never ./bin/dowel
RequiresDart 3.13, Flutter 3.47; a plugin of dowel (^0.0.21)
Dependenciesdowel, image, meta, wind_kit_diagnostics_contracts, yaml, the Flutter SDK
LicenseMIT

Install

dart pub add tapir

dart run tapir tapir:install dart run tapir start --device=macos # dowel records the session every tapir:* command dials dart run tapir tapir:snap

tapir:install patches lib/main.dart (the import, WidgetsFlutterBinding.ensureInitialized() when missing, and TapirPlugin.install() inside a !kReleaseMode guard), then scaffolds the fast ./bin/dowel wrapper and registers tapir as a dowel plugin. Re-running it changes nothing. The installation guide also adds dowel as a direct dependency (dart pub add dowel). Wired by hand, main.dart looks like this:

import 'package:flutter/foundation.dart';

import 'package:flutter/widgets.dart'; import 'package:tapir/tapir.dart';

Future main() async { WidgetsFlutterBinding.ensureInitialized(); if (!kReleaseMode) { TapirPlugin.install(); } runApp(const MyApp()); // MyApp is the host app's root widget. }

The guard is !kReleaseMode, not kDebugMode: debug and profile builds carry tapir (tapir:perf_run measures a profile build) and a release build tree-shakes it. Without the guard tapir ships in release, and anyone who reaches that app's VM Service can drive it. --dart-define=TAPIR_DISABLE=1 skips registration in a build that must not expose the extensions. The example/ app gives each verb a live target widget.

Snapshot and refs

dart run tapir tapir:snap --interactiveOnly

- textbox "Email" [ref=e1]

typeable: true

- button "Sign in" [ref=e2]

TokenMinted byLifetime
e tapir:snapThe same Semantics node keeps its token across snapshots, and a token outlives its widget. A ref whose element left the tree is relocated by label (reresolved on the response) only when the snapshot recorded a binding for it, the live tree has the same number of nodes with that label and the match sits on the route the ref was minted on; otherwise it fails as defunct and you re-snap
q tapir:find, tapir:observeRe-resolved against the live tree on every action; survives rebuilds

Narrow a read with --within= , --interactiveOnly and --grep= ; they compose. --includeEnrichers adds Wind state (the host calls Wind.installDebugResolver() from wind_kit, read through wind_kit_diagnostics_contracts) and Magic state (MagicTapirIntegration.install() from package:magic_devtools/tapir.dart, after Magic.init(); it exists only in a magic_devtools release built on tapir, and tapir:install warns and skips it otherwise; see Magic integration). A ref line ending in [offscreen] or [occluded] names why an action would fail before you try it.

Actions and the actionability gate

dart run tapir tapir:tap --ref=e2 --snapshot=diff

dart run tapir tapir:fill --ref=e1 --text="ada@example.com" --json

Gestures (tap, hover, drag, scroll, dblclick, right_click, triple_click) and text verbs (type, clear, fill, press_key) dispatch real pointer and key events into the widget tree. tap, hover, drag, the click variants, type and fill first pass the gate (clear, scroll, press_key, select_option and set_checkbox skip it), in a fixed order, and a refusal names the reason an agent can branch on:

CheckRefusal substringRecovery
Defunct (preflight)defunct (...)Re-snap
Enablednot enabledRe-snap; the widget may enable later
Zero rectzero rectRe-snap or re-find
Off-viewport (scrolls into view first)off-viewporttapir:scroll into view, then retry
Stable across two framesnot stableWait for the animation; --no-checkStable
Receives events (hit test)obscured byDismiss the overlay (tapir:reset_overlays); --no-checkReceivesEvents

A green tick is dispatch, not effect. Add --json to print the whole response and read the effect block: effect.changed for tap and scroll, effect.verified and effect.value for type, fill and clear. When the hit test could not answer (routine on a web debug build) the response of a gated verb such as tap or type carries a checks block with receivesEvents: indeterminate instead of a silent pass; fill reports only its effect. tapir:run "tap --ref=e5" "snap --grep Counter" batches verbs into one round trip.

Waiting and observing

dart run tapir tapir:observe --roles=button,textbox   # q<N> handles, re-resolved per action

dart run tapir tapir:wait --text="Welcome back" --timeoutMs=5000

VerbReturns
tapir:waitWaits for --text, --textGone or --expression
tapir:wait_for_network_idleWaits until in-flight HTTP requests stay at zero for --idleMs
tapir:observeA flat candidate list of interactive widgets with q handles: observe once, act many times (no model call inside tapir)
tapir:console, tapir:exceptionsIn-app debugPrint output and FlutterErrors, overflow included; --since= scopes errors to one action
tapir:get_routesThe router's location and the top page (tapir:navigate and tapir:navigate_back change it)

When the app is not producing frames (a hidden window or a backgrounded tab) tapir forces frames outside the web and reports framesForced: true; where it cannot, every response carries a warnings block rather than a stale answer that looks fresh. See frame production.

Screenshots and web

dart run tapir tapir:screenshot --output=shot.jpg

dart run tapir start --device=chrome --cdp-port=9333 dart run tapir tapir:device --preset=pixel-8

SurfaceBehaviour
tapir:screenshotJPEG (default) or PNG of the viewport, or of one widget with --ref (and a sub-rect of it with --rect)
Web screenshotWith --cdp-port, the CLI captures through CDP Page.captureScreenshot; the tapir_screenshot MCP tool stays in-isolate and can time out under CanvasKit, so prefer the CLI on web
tapir:devicePresets iphone-x, iphone-13, iphone-15-pro, pixel-5, pixel-8, ipad-pro-12.9, desktop-1440, desktop-1920 (viewport, DPR, touch, user agent); the emulation ends with the command, the window size stays. tapir:resize --width --height overrides the viewport until exit, or longer with --hold
tapir:hot_reload_and_snapHot reload, then snapshot, screenshot and recent exceptions in one round trip

Performance tracing

dart run tapir tapir:perf_begin --mode=attribution

dart run tapir tapir:tap --ref=e7 dart run tapir tapir:perf_end

VerbDoes
tapir:perf_begin, tapir:perf_endBracket one interaction; attribution ranks the widget builds that cost time next to Wind and Magic counters, timing reports frame timings you can quote. A session in which the engine rendered nothing is refused (refused: true, exit 1), never reported as zeros that read as fast
tapir:perf_insightThe rows behind one insight of the last report
tapir:perf_run, tapir:perf_compare, tapir:perf_campaignRepeat a scenario from a clean start and write medians, judge one run against another, run a campaign of scenarios from cold starts
tapir:perf_trace --out=trace.jsonThe last session as a Chrome Trace JSON for ui.perfetto.dev

MCP server and clients

The tapir_* tools ride on the dowel MCP server, so the client config key is dowel. dart run tapir mcp:install writes the entry into .mcp.json: ./bin/dowel mcp:serve when the fast wrapper exists on a POSIX host, and dart run tapir mcp:serve otherwise (always on Windows, where ./bin/dowel is not used). Standard config for any client that reads .mcp.json:

{ "mcpServers": { "dowel": { "command": "./bin/dowel", "args": ["mcp:serve"], "cwd": "." } } }
ClientInstall
Claude Codeclaude mcp add dowel -- ./bin/dowel mcp:serve, then /mcp reconnect dowel after a change
VS Codecode --add-mcp '{"name":"dowel","type":"stdio","command":"dart","args":["run","tapir","mcp:serve"]}'
Cursor.cursor/mcp.json (project) or ~/.cursor/mcp.json (user)
Windsurf~/.codeium/windsurf/mcp_config.json
Goose, WarpPaste the standard config into Goose (Advanced settings, Extensions, Add custom extension) or Warp (Settings, AI, Manage MCP Servers)
Claude Desktopclaude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\)
Codexcodex mcp add dowel ./bin/dowel mcp:serve
Without tapirWith tapir
You hot reload, screenshot, drag the PNG into the chat, paste widget source and ask why the button does nothing.The agent calls tapir_snap, then tapir_tap on e7; the gate checks the button, the tap lands, a fresh snap confirms it.
You add Future.delayed and re-run to tell a timing issue from a bug.The gate refuses with a reason (not stable, obscured by, off-viewport) that names the cause.

For AI coding agents

DoBecause
Install tapir only behind if (!kReleaseMode)Anyone who reaches the VM Service of a build that carries tapir can drive the app

| Start the app with dart run tapir start, not flutter run | Every tapir:* co

冒頭だけを表示しています。続きはリポジトリで読めます