GitHub Copilot などの MCP (Model Context Protocol) クライアントから、Windows 上の任意のデスクトップアプリケーションを 人間と同じ手段(画面認識・マウス・キーボード・UI Automation)で操作するためのローカル MCP サーバーです。 特定アプリ専用のコードは持たず、汎用的な「Computer Use」ツール群として実装しています。
最終目標は、Clipchamp の動画編集、Blender の 3D 操作、Adobe 製品の操作など、UI Automation だけでは
完結しない複雑なアプリケーションも、screen_capture + 座標操作 + 画面差分検出を組み合わせて
人間のように自在に操作できるようにすることです(詳細は ROADMAP.md を参照)。
ライセンス: 個人利用・非商用利用は無償です。商用利用には別途ライセンス契約が必要です。 詳細は LICENSE.md を参照してください。
| プロジェクト | 役割 |
|---|---|
WindowsComputerUseMCP.Core |
MCP/Windows実装に依存しない共通モデル・インターフェース・設定 |
WindowsComputerUseMCP.Safety |
緊急停止・安全ポリシー(危険操作の承認要求・拒否判定) |
WindowsComputerUseMCP.Windows |
Win32 P/Invoke・UI Automation (FlaUI)・SendInput の実装 |
WindowsComputerUseMCP.Skills |
アプリ別「スキルパック」フレームワーク(Blender専用APIブリッジ、Adobe/Clipchamp向け汎用UIA操作など) |
WindowsComputerUseMCP.Server |
MCP stdio サーバー本体(ツール登録・DI・ホスティング) |
WindowsComputerUseMCP.ControlPanel |
常時状態確認・緊急停止操作・監査ログ閲覧用の WPF アプリ |
WindowsComputerUseMCP.DesktopLauncher |
任意のコマンドを隠しデスクトップ上で起動する汎用ラッパー(stdio 素通し)。Playwright MCP などをバックグラウンド化する |
WindowsComputerUseMCP.Tests |
単体テスト |
詳細な設計は ARCHITECTURE.md、安全設計は SECURITY.md を参照してください。
- Windows 10/11
- .NET 10 SDK
- Visual Studio 2022 (17.14+) または VS Code + GitHub Copilot 拡張機能(MCP クライアントとして利用する場合)
dotnet build
dotnet test# ビルド → %LOCALAPPDATA% へ配置 → 起動検証まで一括で実行
.\scripts\install-mcp-server.ps1
# GitHub Copilot CLI の設定ファイルも自動で書き換える場合
.\scripts\install-mcp-server.ps1 -UpdateClientConfigスクリプトは次の処理を行います。
- 実行中の
WindowsComputerUseMCP.Serverプロセスを停止する dotnet publish -c Releaseを実行して%LOCALAPPDATA%\WindowsComputerUseMCP\stagingに出力する (MCP サーバー本体とwcu-desktop-launcherの両方)%LOCALAPPDATA%\WindowsComputerUseMCP\currentへ差し替える (ランチャーはcurrent\launcher\、ブラウザ設定はcurrent\playwright-mcp-background.config.json)- MCP ハンドシェイク(
initialize→tools/list)を実行し、ツールが公開されているか検証する -UpdateClientConfig指定時は%USERPROFILE%\.copilot\mcp-config.jsonのcommandを更新する (変更前の内容はタイムスタンプ付き.bakとして保存されます)- あわせて
playwright-bg(バックグラウンドで動く Playwright MCP)を登録する (-SkipPlaywrightを付けると登録をスキップできます)
配置先の実行ファイルは次のパスになります。
%LOCALAPPDATA%\WindowsComputerUseMCP\current\WindowsComputerUseMCP.Server.exe
%LOCALAPPDATA%\WindowsComputerUseMCP\current\launcher\wcu-desktop-launcher.exe
なぜ
bin\Debugを直接登録してはいけないのか MCP クライアントが起動したサーバープロセスはbin配下の DLL をロックし続けます。 その状態ではdotnet buildが失敗するため、ソースを更新してもクライアントは 古いバイナリを掴んだままになり、新しく追加したツールが一切現れません。 publish 済みの独立したディレクトリを登録することで、この問題を回避できます。
git pull
.\scripts\install-mcp-server.ps1 -UpdateClientConfig実行後、MCP クライアント(GitHub Copilot CLI / VS Code)を再起動してください。 再起動するまで新しいツールは読み込まれません。
ワークスペース単位なら .vscode/mcp.json、全体に適用するならコマンドパレットの
MCP: Open User Configuration から以下を追加します。
{
"servers": {
"windows-computer-use": {
"type": "stdio",
"command": "C:\\Users\\<ユーザー名>\\AppData\\Local\\WindowsComputerUseMCP\\current\\WindowsComputerUseMCP.Server.exe"
}
}
}登録後、Chat ビューでツールの利用を許可すると、window_list や screen_capture などの
ツールがエージェントから呼び出せるようになります。
注意: 本サーバーはローカルマシンのマウス・キーボード・画面を直接操作します。信頼できるプロンプト・ エージェントからのみ利用し、SECURITY.md の安全設計(緊急停止・承認要求・監査ログ)を 必ず確認してください。
| ツール名 | 概要 |
|---|---|
system_get_capabilities |
OSバージョンやサーバーの機能可否を取得(読み取り専用) |
window_list |
開いているウィンドウの一覧を取得 |
window_focus |
指定したウィンドウを前面化 |
screen_capture |
画面全体または指定ウィンドウのスクリーンショットを取得 |
ui_get_tree |
UI Automation ツリーを取得 |
ui_find |
条件に一致する UI 要素を検索 |
ui_invoke |
UI 要素に対して Invoke/Toggle 等のパターン操作を実行 |
mouse_move / mouse_click / mouse_drag / mouse_scroll |
座標ベースのマウス操作 |
keyboard_type_text / keyboard_press / keyboard_hotkey |
キーボード入力操作 |
wait_for_screen_change |
操作前後の画面差分を検出し、変化を待機・確認 |
background_desktop_* |
ユーザーの画面に映らない「隠しデスクトップ」上でアプリを起動・操作(後述) |
すべての入力系ツールは Safety 層のポリシー判定(許可アプリ/危険操作の承認要求/緊急停止)を経由します。
「AIが操作している間、自分のPCが使えなくなるのでは?」という点は本MCPの重要な論点です。 実際には、操作の種類によってフォアグラウンドが必要かどうかが異なります。
| 手段 | 対象 | 理由 |
|---|---|---|
| スキルパックのAPIブリッジ | Blender(TCP 9876)、Illustrator(COM DoJavaScript)、Figma(WebSocket 9877) |
アプリの公式スクリプティングAPIを直接叩くため、画面操作を一切伴わない |
ui_invoke |
UI Automation に対応したアプリ全般 | InvokePattern 等はメッセージベースで、前面化やフォーカスを必要としない |
screen_capture(windowHandle 指定) |
ほぼすべてのウィンドウ | PrintWindow + PW_RENDERFULLCONTENT により、背面や一部隠れたウィンドウも描画内容を取得できる |
つまり 「見る」と「APIで動かす」はすでにバックグラウンドで可能 です。
mouse_move / mouse_click / mouse_drag / mouse_scroll / keyboard_* は
Win32 の SendInput を使用します。SendInput は入力デスクトップ(=ユーザーが実際に見ている画面)
のハードウェア入力キューに注入するAPI であるため、対象ウィンドウが前面にある必要があります。
Windows では、複数モニターを繋いでいても 1セッション=1デスクトップ=1つのカーソル・1つのフォーカス・ 1つの入力キューです。モニターは同じデスクトップの表示領域が広がるだけなので、 サブモニターにウィンドウを置いてもマウスカーソルとフォーカスは共有されたままです。分離するには、
- 同一セッション内の別デスクトップオブジェクト(本MCPが採用)
- 別の Windows セッション(RDP・ユーザー切り替え)
- VM / Windows Sandbox
のいずれかが必要です。
Win32 の CreateDesktopW で画面に表示されないデスクトップオブジェクトを作り、
専用ワーカースレッドを SetThreadDesktop でそこに束縛して操作します。
アプリは STARTUPINFO.lpDesktop 指定で最初からその隠しデスクトップ上に起動されるため、
ユーザーが見ている画面には一切現れません。
| ツール名 | 概要 |
|---|---|
background_desktop_create |
隠しデスクトップを作成 |
background_desktop_list |
隠しデスクトップと、その上のウィンドウ数を一覧 |
background_desktop_launch |
隠しデスクトップ上でアプリを起動 |
background_desktop_window_list |
隠しデスクトップ上のウィンドウを列挙(通常の window_list では見えない) |
background_desktop_capture |
隠しデスクトップ上のウィンドウをキャプチャ |
background_desktop_click |
隠しデスクトップ上でクリック |
background_desktop_type_text |
隠しデスクトップ上でテキスト入力 |
background_desktop_send_keys |
隠しデスクトップ上でキー送信 |
background_desktop_switch |
一時的に隠しデスクトップを画面に表示(確認用。既定で自動復帰) |
background_desktop_close |
隠しデスクトップと起動したプロセスを終了 |
使用例(AIエージェントからの呼び出しイメージ):
隠しデスクトップは入力デスクトップではないため SendInput が機能しません。
そこで本MCPは、対象デスクトップが入力デスクトップかどうかを実行時に判定し、
非対話デスクトップでは WM_CHAR / WM_KEYDOWN / WM_LBUTTONDOWN などの
ウィンドウメッセージを直接ポストする方式へ自動的にフォールバックします。
呼び出し側はツールの使い分けを意識する必要はありません。
- GPU描画に強く依存するアプリは動かない場合がある
Electron 系(Clipchamp、Teams、VS Code、Figmaデスクトップ版)や
Blender のビューポートは、非対話デスクトップでは真っ白に描画される、
あるいは起動自体に失敗することがあります。
→ これらは スキルパックのAPIブリッジ(1.)を使う方が確実です。
なお Chromium / Microsoft Edge は隠しデスクトップ上でも正常に描画されることを
実測で確認済みです(後述の
wcu-desktop-launcherはこれを利用しています)。 - 修飾キー同時押し(Ctrl+C 等)の再現性が下がる
メッセージベース入力では、アプリ側が
GetKeyStateで修飾キー状態を見る実装だと ホットキーが効かない場合があります。 → メニュー操作はui_invoke、またはアプリ固有のスキルパックを優先してください。 - 画面解像度・DPIは既存デスクトップを継承し、任意に変更することはできません。
- 一部のインストーラは対話デスクトップを明示的に要求するため起動できません。
Playwright MCP のようにブラウザを起動する外部 MCP サーバーは、
そのままだとツールを呼ぶたびにブラウザが前面に出てフォーカスを奪います。
これを解決するのが、本リポジトリに同梱の汎用ラッパー wcu-desktop-launcher.exe です。
wcu-desktop-launcher --desktop <デスクトップ名> [--cwd <作業ディレクトリ>] -- <コマンド> [引数...]
原理はシンプルで、Windows の子プロセスは
STARTUPINFO.lpDesktop で指定されたデスクトップを継承するという仕様を使います。
MCP サーバー本体(Node.js プロセス)を隠しデスクトップ上で起動すれば、
そこから起動されるブラウザも自動的に同じ隠しデスクトップに乗ります。
重要なのは、デスクトップの割り当てはウィンドウと入力キューにしか影響せず、 標準入出力には一切影響しないという点です。 ランチャーは自分の stdin / stdout / stderr をそのまま子へ継承させるため、 MCP の JSON-RPC (stdio) は素通しで流れます。ラッパーによる通信オーバーヘッドはありません。
さらにランチャーは JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE を設定したジョブオブジェクトに
子プロセスを登録します。MCP クライアントが切断してランチャーが終了すると、
ブラウザを含む子プロセスツリーがまとめて確実に終了し、
隠しデスクトップ上にゾンビプロセスが溜まりません。
scripts/install-mcp-server.ps1 -UpdateClientConfig を実行すると、
playwright-bg というエントリが自動で登録されます。手動で書く場合は次の形です。
{
"mcpServers": {
"playwright-bg": {
"type": "local",
"command": "%LOCALAPPDATA%\\WindowsComputerUseMCP\\current\\launcher\\wcu-desktop-launcher.exe",
"args": [
"--desktop", "WCU_Background", "--",
"cmd.exe", "/c", "npx", "-y", "@playwright/mcp@latest",
"--browser", "msedge",
"--config", "%LOCALAPPDATA%\\WindowsComputerUseMCP\\current\\playwright-mcp-background.config.json"
],
"tools": ["*"]
}
}
}npxはバッチファイル(.cmd)なので、cmd.exe /cを経由させる必要があります。config/playwright-mcp-background.config.jsonは--start-fullscreenを含まない固定サイズ(1920×1080)のブラウザ起動オプションです。 フォアグラウンドを奪う設定を持ち込まないために必ず指定してください。
- Copilot CLI / VS Code の再起動が必要です(設定は起動時にのみ読まれます)。
- 隠しデスクトップ上のブラウザも
background_desktop_captureで目視確認できます。 - Playwright の操作は CDP 経由なので、OS の入力デスクトップに依存せず完全に動作します。
GitHub Copilot CLI の power-pages プラグインは、mcp-config.json とは別に
独自の Playwright MCP を起動します。その既定設定は --start-fullscreen を含むため、
playwright-bg を登録してもこちらが前面化してフォーカスを奪い続けます。
同梱のパッチスクリプトで、プラグイン側も同じランチャー経由に切り替えられます。
# 適用(冪等。適用済みなら何もしない)
.\scripts\patch-power-pages-playwright.ps1
# 元に戻す
.\scripts\patch-power-pages-playwright.ps1 -Revert- 変更前の内容は
launch-playwright-mcp.js.origとして保存されます。 wcu-desktop-launcher.exeが見つからない場合や、環境変数POWER_PAGES_PLAYWRIGHT_FOREGROUND=1を設定した場合は元の前面起動へ自動的に戻ります。- プラグインが更新されると変更は失われます。 その場合は再実行してください。
汎用ツールだけでは非効率、または対象アプリに専用の連携APIが存在するケースに対応するため、 「アプリごとの知識(スキル)」と「操作コード」を1セットにした スキルパック の仕組みを用意しています。
| ツール名 | 概要 |
|---|---|
skill_list_apps |
スキルパックが登録されている全アプリの一覧を取得(appId・表示名・対象プロセス名) |
skill_list_actions |
指定アプリが提供するアクション一覧と、各パラメーターの説明を取得 |
skill_run_action |
指定アプリの指定アクションを実行(引数はJSON文字列で渡す) |
-
blender: Blender本体のGPU描画ビューポートは UI Automation から中身が見えないため、 Blender側にインストールした「BlenderMCP」アドオン(TCPソケット、既定ポート9876)に対して Python API呼び出しを直接送信する専用ブリッジを実装しています。scene_info/execute_code/viewport_screenshotに加え、1枚以上の画像から Hyper3D Rodin連携で3Dモデルを生成しシーンへインポートするまでを1コールで行うgenerate_3d_from_image(Hyper3D有効化→ジョブ作成→完了待ち→インポートを自動化)を提供します。 -
illustrator: Adobe Illustratorが長年公式に提供しているCOM自動化 (ProgIDIllustrator.Application)と、その上で動く ExtendScript(JavaScript)実行API (Application.DoJavaScript)を直接呼び出す専用ブリッジです。画面クリックを一切使わず、 ドキュメント情報取得(document_info)、任意ExtendScript実行(execute_script)、 矩形/楕円/テキスト作成(create_rectangle/create_ellipse/create_text_frame)、 塗り色設定(set_fill_color)、保存/読み込み/PNG・JPG・PDF書き出し (save_document/open_document/export_document)を提供します。 Illustratorが起動しCOM登録済みであることが前提(自動起動はしません)。 -
figma: Figmaデスクトップ版はCOMや外部TCPサーバーのような公式連携APIを持たないため、 同梱の開発用プラグイン(tools/figma-plugin/)をFigma側で実行し、そのプラグインが 本サーバーの開くWebSocketサーバー(既定ws://127.0.0.1:9877/、接続方向はBlenderと逆で Figma側から接続しにいく)へつなぎ込む方式でブリッジしています。 ノード作成(create_rectangle/create_ellipse/create_text)、塗り色設定 (set_fill_color)、削除(delete_node)、選択/ページ情報取得 (get_selection/list_pages/document_info)、画像書き出し(export_node_image)、 任意コード実行(execute_plugin_code)を提供します。事前にtools/figma-plugin/README.mdの手順でプラグインをインポート・実行しておく必要があります (未接続時はis_connectedで確認可能)。 -
汎用UIAスキルパック: 専用APIを持たないWindowsアプリ向け。要素検索・UI Automationの InvokePattern実行(非対応時は要素中心を物理クリックへ自動フォールバック)・ウィンドウ内相対座標 クリック・テキスト入力・ホットキー送信・スクリーンショット取得を共通のアクション名で提供します。 UIAの対応範囲がアプリごとに異なる場合でも同じインターフェースで 「まずAPI/UIA、無ければ画面操作」というフォールバック戦略を統一的に扱えます。 現在
Generic/BuiltInAppDefinitions.csに登録済みのアプリ:- 動画編集:
clipchamp(Clipchamp),premiere(Adobe Premiere Pro),aftereffects(Adobe After Effects),davinciresolve(DaVinci Resolve),capcut(CapCut) - デザイン/画像編集:
photoshop(Adobe Photoshop),indesign(Adobe InDesign),lightroom(Adobe Lightroom Classic),gimp(GIMP),krita(Krita) - 音声編集:
audition(Adobe Audition)
※
illustratorとfigmaは専用スキルパック(上記)に昇格済みのため、このリストには含まれません。 - 動画編集:
新しいアプリを追加する場合は、専用APIがあれば WindowsComputerUseMCP.Skills 配下に新しい
ISkillPack 実装を追加し、専用APIが無ければ Generic/BuiltInAppDefinitions.cs に対象プロセス名を
1行追加するだけで、上記の汎用アクション一式がそのアプリでも使えるようになります。
注意:
ProcessNamesは代表的なプロセス名の想定値です。実際にインストールされているバージョンや エディションによって実行ファイル名が異なる場合があります。対象アプリがskill_run_actionで 見つからない場合は、タスクマネージャー等で実プロセス名を確認し、該当行を修正してください。
これらのアプリは実際のUIをWeb技術(HTML/DOM)で構築しており、Windowsのウィンドウ階層上は
msedgewebview2(または同等のEdge WebView2/Chromiumホスト)プロセスの子ウィンドウとして
UIがホストされています。window_list にはアプリ本体のウィンドウと、内部のWebView2ホスト
ウィンドウの両方が個別に表示されることがあります。
- Web系UIはDOM構造上ネストが深く、既定の
maxDepth(ui_get_treeは8、ui_findは12)では メニューバー付近までしか到達できず、実際に操作したいボタン(例:「新しいビデオを作成」)が ツリーに現れないことがあります。maxDepth: 20以上を明示的に指定することを推奨します。 ui_get_tree/ui_findはいずれもWebView2でホストされたコンテンツを正しく走査できます (UI AutomationのIsOffscreen誤検知に対する回避処理を実装済み)。
Blenderのような3Dビューポート中心のアプリは、キャンバス部分がGPU描画されておりUI Automationからは
中身が見えません。そのため点単位での3D作成状況の確認・支援には、汎用UI操作ではなく上記の
blender スキルパック(BlenderMCPアドオン経由でのPython API直接実行)を使用してください。
skill_run_action 経由で scene_info / execute_code / viewport_screenshot /
generate_3d_from_image などが呼び出せます。事前に Blender 側で BlenderMCP アドオンを有効化し、
ソケットサーバー(既定ポート9876)を起動しておく必要があります。
- グローバルホットキー: 既定
Ctrl+Shift+F12(appsettings.jsonのSafety.EmergencyStopHotkeyで変更可能)。 Server プロセスが起動している間、フォーカスに関係なく OS 全体で有効です。 - ControlPanel(WPF)アプリからも「緊急停止」「解除」ボタンで同じ状態を切り替えられます。
ControlPanel と Server は名前付きパイプ(
WindowsComputerUseMCP.ControlPanel.v1)で通信するため、 どちらのプロセスを先に起動しても問題ありません(Server 未起動時は「サーバー未接続」と表示されます)。 - 緊急停止が有効な間、
mouse_*/keyboard_*/ui_invokeなどの入力系ツールはすべて拒否されます。window_list/screen_captureなど読み取り系ツールは、状況確認と解除操作を妨げないため継続して利用できます。
ControlPanel は次のようにビルド・起動します。
dotnet build src\WindowsComputerUseMCP.ControlPanel
.\src\WindowsComputerUseMCP.ControlPanel\bin\Debug\net10.0-windows\WindowsComputerUseMCP.ControlPanel.exeすべての操作は %LOCALAPPDATA%\WindowsComputerUseMCP\Logs\audit-*.jsonl(日次ローテーション)に記録されます。
ControlPanel の「監査ログ」テーブルからも最新の記録を確認できます。入力文字列は既定でマスクされ、
文字数・ハッシュ値のみが記録されます(詳細は SECURITY.md を参照)。
実機での自動化検証で判明した、再現性のある落とし穴と対処法をまとめます。
本サーバーは app.manifest で Per-Monitor V2 DPI Aware を宣言しているため、
screen_capture / window_list / mouse_* はすべて物理ピクセル座標で一貫しています
(例: 150% スケーリング環境では論理 1664×1109 ではなく物理 2496×1664 を返します)。
一方で、MCP の外で自作した補助スクリプト(PowerShell / Python など)は既定で DPI 非対応です。
そのまま GetSystemMetrics や mouse_event(MOUSEEVENTF_ABSOLUTE) を使うと論理座標で正規化され、
カーソルがスケール倍率のぶんだけズレた位置に飛びます。補助スクリプト側では必ず冒頭で
DPI 対応を宣言してください。
# 座標を扱う前に必ず呼ぶ(これが無いと 150% 環境で約1.5倍ズレる)
[void][YourInterop]::SetProcessDPIAware()クリック後は GetCursorPos で「狙った座標にカーソルが到達したか」を検証すると、
座標計算の誤りとクリック対象の誤りを切り分けられます。
SetForegroundWindow の単体呼び出しは、Windows のフォアグラウンドロックによりほぼ失敗します。
AttachThreadInput で「自スレッド」「現在の前面ウィンドウのスレッド」「対象ウィンドウのスレッド」を
一時的に結合してから呼ぶと、確実に成功します。
AttachThreadInput(myTid, foregroundTid, true)
AttachThreadInput(myTid, targetTid, true)
BringWindowToTop(hwnd); SetForegroundWindow(hwnd)
AttachThreadInput(myTid, targetTid, false)
AttachThreadInput(myTid, foregroundTid, false)
SetWindowPos(HWND_TOPMOST) による最前面固定は、相手も topmost の場合(Tauri / Electron 製アプリなど)に
競合して安定しないため推奨しません。
- モダンな Chrome は windowless レンダラのため、
EnumChildWindowsで子ウィンドウが 0 件になり、Chrome_RenderWidgetHostHWNDも存在しません。結果としてui_get_tree/ui_findでは Web コンテンツ(DOM)を一切取得できません(ブラウザ自体の UI しか返りません)。 Web ページの操作はscreen_capture+座標クリックか、Playwright 等の専用ツールを使ってください。 screen_capture(windowHandle=...)は Chrome では古いフレームを返すことがあります (GPU コンポジット由来。特にウィンドウのサイズ変更直後)。 Chrome が前面にある場合はscreen_capture(monitorIndex=0)を使うのが確実です。chrome.exe --new-window <URL>は既存インスタンスに合流するため、 ログイン済みセッションのままページを開けます。キーボード入力を伴わないぶん誤操作リスクがありません。- 実行中の Chrome プロファイル(
Default\Network\Cookies等)は排他ロックされており、 コピーによる「ログイン状態を引き継いだ別プロファイルでのバックグラウンド起動」はできません。 ブラウザをバックグラウンド化したい場合はwcu-desktop-launcherを使ってください。
フォアグラウンド操作は、ユーザーが PC を使用している最中に実行すると相互に前面を奪い合って失敗します。
GetLastInputInfo でアイドル時間を確認し、一定時間(例: 40 秒)操作がないことを確認してから
一連の操作を1本のスクリプトで一気に実行すると成功率が大きく上がります
(ツール呼び出しを細かく往復すると、その隙間にユーザー操作が割り込みます)。
Windows PowerShell 5.1 は BOM なし UTF-8 を cp932 として読むため、日本語を含む .ps1 は文字化けします。
判定用の文字列(ウィンドウタイトル等)は ASCII のみにする(例: ダイアログはタイトルではなく
ウィンドウクラス #32770 で判定する)か、UTF-8 BOM 付きで保存してください。
フェーズ1〜7が完了しています(ROADMAP.md 参照)。基本ツール群・入力操作・画面差分検出・
緊急停止 UI まで一通り実装・動作確認済みです。加えて、ユーザーの画面を占有せずに操作できる
バックグラウンドデスクトップ(background_desktop_*) を実装し、隠しデスクトップ上での
アプリ起動 → ウィンドウ列挙 → キャプチャ → テキスト入力 → 終了までを実機で検証済みです。
さらに wcu-desktop-launcher により、Playwright MCP のような外部 MCP サーバーごと
隠しデスクトップへ追い出す方式を実装し、ブラウザ操作がフォアグラウンドを奪わないことを実機検証済みです。
Clipchamp / Blender / Adobe 製品のような、UI Automation だけでは
完結しないアプリへの本格対応は、既存の汎用ツールの組み合わせで到達可能かを検証する継続課題です。
対応アプリのスキルパックは今後も継続的に拡充していく予定です(Clipchamp / Photoshop / Premiere Pro / Illustrator / After Effects の実操作精度向上、DaVinci Resolve・CapCut・Figma 等への対応拡大など)。 新しいアプリへの対応リクエストや、既存スキルパックの改善案がある場合は Issue で管理してください。
ロゴは Azure OpenAI (gpt-image-2) で生成し、assets/ 配下にコミットしています。
| ファイル | 用途 |
|---|---|
assets/logo.png |
マスター(1024×1024、白背景) |
assets/logo-transparent.png |
背景透過版(1024×1024) |
assets/logo-512.png 〜 logo-32.png |
各サイズの透過 PNG(512 / 256 / 128 / 64 / 32) |
assets/app.ico |
Windows 実行ファイル用アイコン(16〜256px マルチ解像度)。ControlPanel の ApplicationIcon に設定済み |
assets/banner.png |
README ヘッダー用の横長バナー |
assets/avatar-460.png |
GitHub アカウント/Organization のアバター用(460×460、円形クロップに耐える構図) |
assets/candidates/ |
不採用のデザイン案(差し替え用に保持) |
GitHub 上のリポジトリアイコンについて GitHub にはリポジトリ固有のアイコン設定がなく、リポジトリ名の左に表示される丸いアイコンは オーナー(ユーザー / Organization)のアバターです。したがって
assets/に画像を push しても変わりません。 変更するには https://github.com/settings/profile でassets/avatar-460.pngをアップロードします (アバターの設定は GitHub API では行えず、Web UI 操作が必須です)。 本リポジトリのオーナーアバターはassets/avatar-460.pngを適用済みです。 リポジトリの OGP 画像は Settings → Social preview からassets/banner.pngを設定できます。
デザインの意図は、ウィンドウ枠 = Windows アプリ、回路で描かれたカーソル = AI エージェントによる操作です。 バナーでは 1 つのエージェントから 3D(Blender)・デザイン(Illustrator / Figma)・動画編集(Clipchamp)へ 接続が伸びる様子を表しています。
配色は次のとおりです。
| 役割 | カラー |
|---|---|
| ベース(濃紺) | #021A52 |
| プライマリ(青) | #0F7BF0 |
| アクセント(シアン) | #2FEFFF |
ロゴは本プロジェクトの識別に用いるものです。ライセンス条件(非商用)はロゴにも同様に適用されます。
本ソフトウェアは 個人利用・非商用利用に限り無償 で提供されます。 商用目的(企業内業務利用、製品への組み込み、受託開発等)で利用する場合は、 事前に著作権者との商用ライセンス契約が必要です。詳細・お問い合わせは LICENSE.md を参照してください(連絡先: monoqlo78@gmail.com)。

