プロトタイプ · プレビュー版:公式レジストリのすべてのサーバーを掲載し、30分ごとに同期しています。レビューとアカウント機能は今後のステップで始まります。
PopNx MCPAIを使う人のためのMCPサーバー · やさしい言葉で解説

Baton

作者:kanumuri9593バージョン 0.2.10i★ –iパソコンで動く
レジストリ名io.github.kanumuri9593/baton

インストール

概要

作者による説明(英語の原文)

Run, hot-reload and screenshot Flutter, web, React Native and native iOS/Android apps.

PopNx MCPの3つの柱

この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。

できること

このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。

  • 接続方法: パソコンで動く
  • トランスポート: stdio
  • カテゴリ: 開発者ツール

インストール

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

インストールの前に

  • 基本チェック:1項目中1項目に合格
  • あなたのパソコンで、あなたのユーザーと同じ権限(ファイル、ネットワーク、アプリ)で動きます。
  • レジストリには、入力が必要なキーは載っていません。

必要なもの

  • npmNode.jsのインストール(npxコマンドに必要)

どのアプリを使っていますか?

上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。

Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます

{
  "mcpServers": {
    "baton": {
      "command": "npx",
      "args": [
        "-y",
        "baton-run"
      ]
    }
  }
}

ターミナルでこれを実行します

claude mcp add baton -- npx -y baton-run

Cursorで開く

または、設定を自分でコピーする

プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます

{
  "mcpServers": {
    "baton": {
      "command": "npx",
      "args": [
        "-y",
        "baton-run"
      ]
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

VS Codeで開く

または、設定を自分でコピーする

プロジェクトの .vscode/mcp.json に貼り付けます

{
  "servers": {
    "baton": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "baton-run"
      ]
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。

選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。

この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。

できること

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

基本チェックi

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

  • ✓ 合格

    作者とリポジトリが一致

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

  • … 未チェック

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

    このリポジトリはまだGitHubから読み取っていません

  • … 未チェック

    ライセンスがある

    このリポジトリはまだGitHubから読み取っていません

  • – 対象外

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

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

  • – 対象外

    OAuthでサインイン

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

  • … 未チェック

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

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

開発者ツールのほかのサーバーとの比較i

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

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

よくある質問

Batonは安全ですか?

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

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

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

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

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

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

GitHubリポジトリの最終更新は–、最新バージョン(0.2.10)がレジストリに届いたのは28 日前です。

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

Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。

代わりに使えるものは?

同じカテゴリには:GitHub, Desktop Commander, Cloudflare MCP

代わりの候補

同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。

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

GitHub

Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.

作者:github広く使われている★ 3.4万5 日前更新

パソコンでもクラウドでも

Desktop Commander

MCP server for terminal commands, file operations, and process management

作者:wonderwhy-er広く使われている↓ 71万/週★ 1万18 日前更新

パソコンで動く

Cloudflare MCP

Cloudflare MCP servers

作者:cloudflare広く使われている★ 444614 か月前更新

クラウドで動く✓ mcp.cloudflare.com

作者のREADME

READMEを開く

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

Baton

Run, hot-reload, check and screenshot your apps from any coding agent.

Flutter, Next.js, Vite, React Native / Expo, and native iOS and Android, from a terminal, the Baton app, or any MCP client.

= 24" src="https://img.shields.io/badge/node-%3E%3D24-339933">

Website · Set up your agent · Agent notes · PDF guides · Token study · Changelog

Baton is a local daemon that owns your running apps, with an MCP server and a CLI in front of it. Your agent starts an app on a simulator or in a browser, applies each edit with one check_change call, and gets back only what is new: the reload result, error lines, failed requests and a screenshot, with an OK / NOT OK verdict. You see the same runs in your terminal, in the Baton app, and in the band above Claude Code's prompt, and you can press the same buttons. Baton reads the .vscode/launch.json, package.json, pubspec.yaml, Xcode and Gradle projects you already have.

0.2.10 is a public developer preview. Open an issue with what broke or what you wanted.

Quick start

Requires Node.js 24+ on the machine that runs your apps. macOS, Linux and Windows.

npm install -g baton-run

baton setup # adds Baton to every coding agent installed on this machine

Restart your agent (or open a new chat) and ask it to "run the app and show me a screenshot".

Other ways in:

WayCommand
Claude Code plugin/plugin marketplace add kanumuri9593/Baton then /plugin install baton@baton
Codex plugincodex plugin marketplace add kanumuri9593/Baton then codex plugin add baton@baton
VS Code or Cursor, one clickthe install buttons at the top of this page
VS Code MCP gallerysearch @mcp baton in the Extensions view (GitHub MCP Registry listing)
MCP server, no installnpx -y baton-run as the server command (pin with baton-run@0.2.10)
Pinned GitHub installnpm install -g github:kanumuri9593/Baton#v0.2.10
From sourcegit clone https://github.com/kanumuri9593/Baton.git && cd Baton && npm install && npm run build

baton setup edits only the baton entry in each tool's config, keeps a .baton-backup of every file it changes, and is safe to run again. baton setup cursor codex limits it to those tools, --dry-run previews, --remove undoes it.

Any MCP client that takes an mcpServers block:

{

"mcpServers": { "baton": { "command": "npx", "args": ["-y", "baton-run@0.2.10"] } } }

The agent loop

inspect_project → boot_device → run_target → wait_for → edit → check_change → fix → check_change
  1. inspect_project (and list_targets) with cwd set to the absolute project path.
  2. boot_device if no simulator or emulator is up. With no name it lists what can boot.
  3. run_target, or run_workflow for an API plus a frontend, then wait_for. wait_for accepts up to 15 minutes, enough for a first native build.
  4. After every edit, check_change. It applies the edit (hot reload for Flutter, HMR for web and React Native, restart for native and plain processes) and returns only what changed.
NOT OK  console/storefront  action=none  status=running  2280ms

new errors (1): [vite] Internal server error: Unexpected token (14:2)

Failed Flutter reloads return the compiler errors, not just DevFS synchronization failed:

lib/main.dart:419:19: Error: Expected ';' after this.

Screenshots cover iOS simulators, Android devices and web apps. For web, Baton opens the session URL in a throwaway headless Chrome, Edge or Brave (or BATON_CHROME) at viewport phone (a real 390×844 mobile layout), tablet, desktop or WIDTHxHEIGHT. Web captures are 1× by default, so a phone image is 390×844 (about 430 image tokens for a model); pass scale: 2 (--scale 2) when fine detail matters. check_change with screenshot: false returns text only but still loads a web page, so its console errors count. Simulator and device screenshots are returned at the device's own resolution.

Baton launches apps and reports evidence. It does not tap the UI or judge screenshots: a capture means an image was written, not that the screen is right. Pair it with Playwright MCP, Chrome DevTools MCP or a device-control MCP when a flow needs input.

29 tools: inspect_project, list_targets, list_sessions, list_checkouts, list_devices, boot_device, run_target, run_workflow, check_change, hot_reload, hot_restart, stop_session, forget_session, wait_for, read_logs, session_summary, screenshot, set_debug_flag, diagnose, list_network_requests, get_network_request, clear_network_requests, read_launch_config, write_launch_config, run_proof, list_proofs, list_run_history, show_dashboard and dashboard_action (the buttons on the live card that show_dashboard draws in hosts that support MCP Apps). Each carries MCP hints, so clients that honour them can skip the prompt for the 16 read-only tools.

Supported agents

Agentbaton setup idGuide
Claude Code (terminal, desktop app, VS Code)claude (installs the plugin)docs/clients/claude-code.md
Codexcodexdocs/clients/codex.md
Cursorcursordocs/clients/cursor.md
VS Code (GitHub Copilot agent mode)vscodedocs/clients/vscode.md
Antigravityantigravitydocs/clients/antigravity.md
Gemini CLIgeminidocs/clients/gemini-cli.md
Windsurfwindsurfdocs/clients/windsurf.md
Claude Desktop (chat)manual onlydocs/clients/claude-desktop.md

Agents without MCP can shell out to the same CLI. Every command exits non-zero on failure, and baton check --json gives the same verdict as check_change. Full agent notes: AGENTS.md. Crawler summary: llms.txt.

Printable guides to share: quick start, agent setup guide and FAQ.

In Claude Code: the Baton band

The plugin draws Baton above the prompt while anything runs, in the terminal and in the desktop app. One row per run, with its device or URL, status, CPU and memory, and icon buttons:

ButtonWhat it does
☰Show or hide that run's recent logs under its row
🐞Debug: asks Claude to read the run's errors and logs, fix the cause and check_change
▶Play: hot reload (or restart) a running app, resume a paused one, or run it again once it ends
⏸Pause the app (macOS)
⏹Stop. Once a run has ended this becomes ✕ dismiss
⧉Bring that run's own simulator window (or its web page) to the front (macOS)

The header has + (new run: puts /baton:run in the prompt) and the same ▶ ⏸ ⏹ ⧉ for every run at once. Bring all raises every device's window. /baton opens the same workspace in a side pane with longer logs. The band and pane read the same daemon as the MCP tools, so a run started by Claude, the CLI or the Baton app shows up everywhere. Details: docs/clients/claude-code.md.

What it supports

FrameworkHot reload (keeps state)RestartNotes
Flutter / Dart✅ real, via the daemon protocol✅ hot restartDevices, DevTools, debug flags, screenshots (Flutter web too)
Next.js, Vite, Nuxt, Astro, Remix, Angular, CRAHMR is automatic on save✅ reboots the dev serverDetects the real URL and readiness; phone, tablet and desktop screenshots
React Native / ExpoFast Refresh is automatic✅ reload broadcast to dev clientsTalks to Metro's message socket
Native iOS (Xcode)—✅ rebuild, reinstall, relaunchBuilds for the selected simulator, installs, launches, follows logs, screenshots
Native Android (Gradle)—✅ rebuild, reinstall, relaunchinstallDebug, starts the launcher activity, follows logcat, screenshots
Anything else—✅ kill and respawnAny launch.json or package.json script

Capabilities are reported honestly. A Vite session does not claim Flutter's stateful hot reload, so the control panel greys the button out and agents get a clear refusal instead of a silent no-op.

Where targets come from

Baton reads what you already have. No new config file is required.

  • .vscode/launch.json, read but never modified, so your IDE keeps working
  • .claude/launch.json, same format
  • package.json: dev, start, serve and storybook scripts, with the package manager taken from your lockfile
  • pubspec.yaml: Flutter projects with no launch.json still get a default
  • Xcode: .xcodeproj / .xcworkspace, shared schemes, Podfile, or Package.swift
  • Gradle: settings.gradle(.kts), the wrapper, application modules, or a lone AndroidManifest.xml

A nested ios/ or android/ folder picked on its own is a native target. Picking the Flutter or React Native root still runs the framework, which is what hot-reloads. Native sessions build, install and launch on the device you pick, then follow the app log. Restart rebuilds and relaunches.

baton init writes a .vscode/launch.json from what it detects (--claude for .claude/launch.json). See examples/ for small launch configs.

The CLI

baton list                                  # every ta

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

PopNxに聞く