Skip to main content
Glama

tauri-plugin-mcp

MCP (Model Context Protocol) を介したクロスプラットフォームTauriテスト自動化プラグイン。

ClaudeのようなAIアシスタントが、テストや自動化のためにTauriデスクトップアプリと対話できるようにします。

Claude Codeプラグイン

このリポジトリはClaude Codeプラグインとしても機能します。これをインストールすると、MCPサーバー、QAエージェント、スキル、検証フックを一度に取得できます:

# 1. Add the marketplace source
claude plugin marketplace add DaveDev42/tauri-plugin-mcp

# 2. Install the plugin
claude plugin install tauri-mcp --scope project

または、Claude Codeセッション内で実行します:

/plugin marketplace add DaveDev42/tauri-plugin-mcp
/plugin install tauri-mcp --scope project

インストール中に、以下を求められます:

  • Tauriアプリディレクトリ: プロジェクトルートからの相対パス(例:単一アプリリポジトリの場合は .、モノレポの場合は apps/desktop

これにより、MCPサーバー、QAエージェント、スキル、検証フックが自動的に設定されます。手動での .mcp.json 設定は不要です。

含まれるもの:

コンポーネント

説明

MCPサーバー

自動設定される tauri-mcp(アプリのライフサイクル、UI操作、スクリーンショット、ログ記録用の14ツール)

tauri-qa スキル

QAオーケストレーション -- テストシナリオの準備、QAエージェントへの委任、結果の検証

tauri-setup スキル

Tauri v2プロジェクトへのtauri-plugin-mcpインストールに関するステップバイステップガイド

tauri-debug スキル

一般的なMCPセッションの問題に対する診断デシジョンツリー

qa-tester エージェント

MCPツールを使用してテストシナリオを実行するテストエージェント(haiku)

QA検証フック

QAのPASS結果に実際のツール呼び出しの証拠が含まれていることを確認

特徴

  • クロスプラットフォーム: Windows (名前付きパイプ) + macOS/Linux (Unixソケット)

  • CDP依存関係なし: macOS WKWebViewを含むすべてのWebViewバックエンドで動作

  • MCP統合: Claude Codeおよびその他のMCPクライアントとの直接統合

  • マルチウィンドウサポート: ラベルで任意のウィンドウをターゲット可能。自動ブリッジインジェクション

  • 統合ログ: フィルタリング機能付きのビルド、ランタイム、コンソール、ネットワークログ

  • 動的ポート割り当て: 競合を避けるための自動ランダムポート割り当て

前提条件

  • Node.js >= 18

  • Tauri v2.x

  • pnpm (推奨) または npm

  • Rust (cargoを含む)

クイックスタート

  1. [ ] src-tauri/Cargo.toml にRustプラグインを追加

  2. [ ] npmパッケージをインストール: pnpm add github:DaveDev42/tauri-plugin-mcp#main

  3. [ ] src-tauri/src/lib.rs にプラグインを登録

  4. [ ] mcp:default 権限を追加

  5. [ ] main.tsx でブリッジを初期化

  6. [ ] Claude Code用に .mcp.json を作成

インストール

1. Rustプラグイン (src-tauri/Cargo.toml)

[dependencies]
tauri-plugin-mcp = { git = "https://github.com/DaveDev42/tauri-plugin-mcp" }

2. フロントエンドAPI (package.json)

pnpm add github:DaveDev42/tauri-plugin-mcp#main

3. MCPサーバー

MCPサーバーバイナリ (tauri-mcp) はインストール後に自動的に利用可能になります。追加の設定は不要です。

セットアップ

1. プラグインの登録 (src-tauri/src/lib.rs)

pub fn run() {
    tauri::Builder::default()
        .plugin(tauri_plugin_mcp::init())
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}

2. 権限の追加

オプションA: tauri.conf.json または config/*.json5 内 (推奨)

{
  "security": {
    "capabilities": [{
      "identifier": "main-capability",
      "windows": ["main"],
      "permissions": ["core:default", "mcp:default"]
    }]
  }
}

オプションB: 別ファイル (src-tauri/capabilities/default.json)

{
  "$schema": "../gen/schemas/desktop-schema.json",
  "identifier": "default",
  "windows": ["main"],
  "permissions": ["core:default", "mcp:default"]
}

3. ブリッジの初期化 (main.tsx)

// Initialize MCP bridge for E2E testing (dev mode only)
if (import.meta.env.DEV) {
  import('tauri-plugin-mcp').then(({ initMcpBridge }) => {
    initMcpBridge().catch(err => {
      console.warn('[MCP] Bridge initialization failed:', err);
    });
  });
}

本番環境向けの安全なセットアップ (オプションの依存関係)

上記の基本的なセットアップでは、すべてのビルドにMCPが含まれます。本番アプリでは、MCPを開発時のみに使用し、リリースバイナリからは完全に削除したい場合が多いでしょう。

このアプローチでは、Cargoのオプション依存関係機能を使用して、明示的に要求された場合にのみプラグインがコンパイルされるようにします。

1. Cargoのオプション依存関係 (src-tauri/Cargo.toml)

[features]
default = []
dev-tools = ["dep:tauri-plugin-mcp"]

[dependencies]
tauri-plugin-mcp = { git = "https://github.com/DaveDev42/tauri-plugin-mcp", optional = true }

2. 条件付きプラグイン登録 (src-tauri/src/lib.rs)

pub fn run() {
    let mut builder = tauri::Builder::default();

    #[cfg(feature = "dev-tools")]
    {
        builder = builder.plugin(tauri_plugin_mcp::init());
    }

    builder
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}

3. Capabilitiesファイルの分割

mcp:default を独自のcapabilityファイルに分離し、ビルド時に切り替えられるようにします。

capabilities/default.json — 常にアクティブ、MCP権限なし:

{
  "$schema": "../gen/schemas/desktop-schema.json",
  "identifier": "default",
  "windows": ["main"],
  "permissions": ["core:default"]
}

capabilities/.dev-tools.json.disabled — MCP権限テンプレート (git管理):

{
  "$schema": "../gen/schemas/desktop-schema.json",
  "identifier": "dev-tools",
  "windows": ["main"],
  "permissions": ["mcp:default"]
}

capabilities/dev-tools.json.gitignore に追加 (ビルド時に生成):

# Dev-tools capability (generated from .disabled at build time)
src-tauri/capabilities/dev-tools.json

4. build.rs — 条件付きcapabilities管理

build.rs は、機能が有効な場合にテンプレートをコピーし、それ以外の場合は削除します:

fn main() {
    let dev_tools_cap = std::path::Path::new("capabilities/dev-tools.json");
    let source_path = std::path::Path::new("capabilities/.dev-tools.json.disabled");

    if std::env::var("CARGO_FEATURE_DEV_TOOLS").is_ok() {
        // Copy .disabled → active (skip if already identical to avoid rebuild churn)
        let should_copy = if dev_tools_cap.exists() {
            std::fs::read(source_path).ok() != std::fs::read(dev_tools_cap).ok()
        } else {
            true
        };
        if should_copy {
            std::fs::copy(source_path, dev_tools_cap)
                .expect("Failed to copy dev-tools capability file");
        }
    } else if dev_tools_cap.exists() {
        std::fs::remove_file(dev_tools_cap).ok();
    }

    tauri_build::try_build(
        tauri_build::Attributes::default()
    ).expect("Failed to build tauri");
}

5. 開発スクリプト (package.json)

{
  "scripts": {
    "dev": "tauri dev --features dev-tools"
  }
}

これで pnpm dev はMCPを有効にし、tauri build (機能なし) はMCPコードを含まないクリーンなリリースを生成します。

注: 基本セットアップ のフロントエンドブリッジガード (import.meta.env.DEV) は引き続き適用されます。これにより、実行時にプラグインが存在していたとしてもブリッジが初期化されるのを防ぎます。

MCPサーバー設定

注: Claude Codeプラグイン をインストールした場合、MCPサーバーはすでに自動的に設定されています。プラグインはインストール中にTauriアプリディレクトリを尋ねます。このセクションはプラグインなしで手動設定する場合のものです。

プロジェクトルートの .mcp.json に以下を追加します:

{
  "mcpServers": {
    "tauri-mcp": {
      "command": "npx",
      "args": ["tauri-mcp"],
      "env": {
        "TAURI_APP_DIR": "."
      }
    }
  }
}

注: pnpmユーザーは pnpx tauri-mcp または pnpm exec tauri-mcp も使用できます。

モノレポ設定

Tauriアプリがサブディレクトリ(例:apps/desktop)にある場合は、TAURI_APP_DIR を設定します:

{
  "mcpServers": {
    "tauri-mcp": {
      "command": "npx",
      "args": ["tauri-mcp"],
      "env": {
        "TAURI_APP_DIR": "./apps/desktop"
      }
    }
  }
}

複数のTauriアプリ

複数のTauriアプリを持つモノレポの場合、アプリごとに個別のMCPサーバーインスタンスを実行します:

{
  "mcpServers": {
    "tauri-desktop": {
      "command": "npx",
      "args": ["tauri-mcp"],
      "env": { "TAURI_APP_DIR": "./apps/desktop" }
    },
    "tauri-kiosk": {
      "command": "npx",
      "args": ["tauri-mcp"],
      "env": { "TAURI_APP_DIR": "./apps/kiosk" }
    }
  }
}

ツールはサーバー名で名前空間化されます:mcp__tauri-desktop__snapshot, mcp__tauri-kiosk__snapshot など。

利用可能なツール

セッションライフサイクル

ツール

パラメータ

説明

get_session_status

probe_bridge?: boolean

セッション(アプリ)の状態を確認。probe_bridge: true の場合、ウィンドウごとのブリッジの健全性を含む

start_session

wait_for_ready?: boolean, timeout_secs?: number, features?: string[], devtools?: boolean

セッションを開始(pnpm tauri dev 経由でTauriアプリを起動)

stop_session

-

セッションを停止(アプリのプロセスツリーを終了)

ウィンドウ管理

ツール

パラメータ

説明

list_windows

-

ラベル、タイトル、フォーカス状態、ブリッジ状態を含むすべての開いているウィンドウをリスト化

focus_window

window: string

ラベルで特定のウィンドウにフォーカス

インタラクション

すべてのインタラクションツールは、特定のウィンドウをターゲットにするためのオプションの window パラメータを受け入れます(デフォルトはフォーカスされているウィンドウ)。

ツール

パラメータ

説明

snapshot

window?

click/fill 用の参照番号付きアクセシビリティツリーを取得

click

ref?: number, selector?: string, window?

参照またはCSSセレクターで要素をクリック

fill

ref?: number, selector?: string, value: string, window?

入力フィールドを埋める

press_key

key: string, window?

キーボードキーを押す(例: "Enter", "Tab")

navigate

url: string, window?

URLに移動

screenshot

window?

ネイティブOSキャプチャ経由でスクリーンショットを撮影

evaluate_script

script: string, window?

WebViewでJavaScriptを実行

可観測性

ツール

パラメータ

説明

get_logs

filter?: string[], limit?: number, clear?: boolean, window?

ソース/レベルフィルタリング付きの統合ログアクセス(ビルド、ランタイム、コンソール、ネットワーク)

get_restart_events

limit?: number, clear?: boolean, `window

Install Server
F
license - not found
B
quality
B
maintenance

Maintenance

Maintainers
11hResponse time
0dRelease cycle
3Releases (12mo)
Issues opened vs closed

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/DaveDev42/tauri-plugin-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server