Computer Use Omni について
Computer Use Omniは、IDEや開発中のビルドを含むデスクトップアプリを確認・操作するエージェント向けのWindows用MCPサーバーです。スクリーンショット、マウスとキーボード入力、複数モニターに対応する幅広い操作ツールを提供します。
主な機能
- 01スクリーンショットと複数モニターの概要
- 02マウス、キーボード、クリップボード操作
- 03アプリや開発ビルドの起動
- 04タイミングが必要なUI操作の一括実行
- 05許可したアプリへのフル権限
- 06オプションの開発用ホットリロード
活用シーン
- 01開発中のデスクトップアプリのテスト
- 02エージェントによるIDEやターミナルの操作
- 03モニターをまたいだアプリの確認と操作
- 04UIのタイミングに依存する操作の自動化
MCP 対応
MCPクライアントに、スクリーンショット、入力操作、アプリ起動、複数モニター機能などのコンピューター操作ツールを提供します。特定のクライアントに直接統合せず、単独で実行できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx computer-use-omniCOMPUTER_USE_MAX_PIXELSMax pixels in a downscaled screenshot (default 1200000, ~1.2 MP).COMPUTER_USE_MASKINGMask non-allowlisted app windows in screenshots ('on'/'off', default off).COMPUTER_USE_ENFORCE_FOREGROUNDBlock input when the frontmost app is not allowlisted ('on'/'off', default off).COMPUTER_USE_DEVRegister the reload hot-reload developer tool ('on'/'off', default off).ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
omni-computer-use
Claude Code と Codex のコンピューター操作における権限の制限にうんざりして、自分で作りました。特に私たち Windows ユーザーにとっては、こちらの Claude Code CLI にはコンピューター操作機能がまったくありません。本当に腹立たしいです。なぜバイブコーディングでは、Windows ユーザーはいつも二級市民扱いなのでしょうか?
私は 2026 年 6 月から omni を使っています。気になることが見つかるたびに更新しています。
Claude Code と Codex の両方を使っていますが、omni は Claude Desktop Code、Claude Code CLI、Codex で問題なく動作します。以下の GIF がその様子を示しています。Claude と GPT の両方が VS Code を開いて、そこに入力しています。Warp でもテストしましたが、動作します。Cursor を使っている友人にも勧めたところ、試してみて問題なく動いたそうです。
どこでも動作するのは、これらのいずれとも連携していないからです。通常の MCP サーバーです。起動すると、自身のプロセスの祖先をさかのぼり、ウィンドウを所有する最初の祖先が、操作対象のウィンドウになります。そのため、ターミナル、Claude Desktop、Codex のどこから実行しても、自動で判別され、設定は不要です。
独自のデスクトップアプリを開発しているなら、omni を試してみてください。エージェントが UI を見て、自分でデバッグできます。ウェブアプリの開発に Playwright を使うのと同じ発想です。
インストールは 1 行です。
claude mcp add omni-computer-use -s user -- uvx omni-computer-use-mcp
2 つの GIF をご覧ください。

Claude Code CLI、ワンテイク。

Codex、ワンテイク。この動画は Codex が自分で録画して編集しました。
以下はすべて AI 向けに書かれています。必要なければ読み飛ばしてください。ご健闘を 👍
インストール
Windows と Python 3.11 以降が必要です(uv / uvx が Python を取得します)。PyPI パッケージ名には -mcp のサフィックスが付きます。それ以外は、コマンド、サーバーキー、このリポジトリのすべてで omni-computer-use を使用しています。
推奨 — Claude Code にインストールします。 Claude Desktop は独自の MCP サーバーに加えて Claude Code の MCP サーバーも読み込むため、このコマンド 1 つで Claude Code CLI と Claude Desktop アプリの両方からサーバーを利用できます。
claude mcp add omni-computer-use -s user -- uvx omni-computer-use-mcp
claude mcp list # expect: omni-computer-use … ✓ Connected
ほかの方法では利用範囲が限られます。Claude Desktop の claude_desktop_config.json に設定する方法では、Claude Desktop だけで利用でき、CLI からは見えません。
{
"mcpServers": {
"omni-computer-use": { "command": "uvx", "args": ["omni-computer-use-mcp"] }
}
}
デスクトップ拡張バンドル(.mcpb、ワンクリックインストール)は、各 GitHub リリースに添付されています。利用範囲に関する注意点は同じで、Claude Desktop 専用です。
単独で実行する場合(任意の MCP クライアントから、または動作を試すだけの場合):
uvx omni-computer-use-mcp
Windows でのプロセス起動に関するヒント:
uv/uvxはネイティブ実行ファイルなので、ラッパーは不要です。MCP クライアントが.cmdシム経由でサーバーを起動する場合(npxなど)、必要なのはそのシムにcmd /cのプレフィックスを付けることです。このサーバーには不要です。
使用例
マルチモニター環境では、スクリーンショットに毎回モニターの情報が記載されます。キャプチャしたモニターの名前と、ほかに接続されているものがわかるため、エージェントが見ている画面を見失うことはありません。
This screenshot was taken on monitor "\\.\DISPLAY2" (2560x1600, primary).
Other attached monitors: "\\.\DISPLAY1" (2560x1440). Use switch_display to
capture a different monitor.
open_application は、実際に起きたことを報告します。実行して終わりではありません。
Opened "Calculator". # a real window appeared
launched "…" but its process exited within ~2s # crashed on startup — reported, not faked
without showing a window …
ステータス
- 29 個のツール — Claude Desktop のコンピューター操作に対応する 27 個に、
deactivateとdisplay_overviewを加えたものです。開発用のreloadツールを含めると、COMPUTER_USE_DEV=onの場合は 30 個になります。 tests/内に 16 シナリオのエンドツーエンドテストスイート(scen_*.json)があり、それぞれ新しい MCP プロセスで実行されます。- Windows 11(2560×1600、DPI 150%)で構築し、Claude Desktop のコンピューター操作を基準として検証しています。スクリーンショットの縮小後のサイズは、丸め誤差の範囲内で CDC の約 1.2 MP と一致します。
ツール
Anthropic のコンピューター操作との対応(27): request_access、list_granted_applications、request_teach_access、screenshot、zoom、switch_display、cursor_position、mouse_move、left_click、right_click、middle_click、double_click、triple_click、left_click_drag、left_mouse_down、left_mouse_up、scroll、key、hold_key、type、wait、open_application、read_clipboard、write_clipboard、computer_batch、teach_step、teach_batch。
omni 固有(2):
deactivate— プロセスを終了せずにセッションを終了します(光る表示をオフにし、操作ウィンドウを元に戻し、許可を取り消します)。request_accessに対応するツールです。display_overview— 仮想デスクトップの配置に従ってすべてのモニターを並べた、ラベル付きの合成画像を返します(「そのウィンドウはどの画面にある?」を確認するための向きの目安です。クリック面ではありません)。
クリック、移動、スクロール、ドラッグ、ズームの座標はすべて、直近のスクリーンショットの画像ピクセル空間で指定します。サーバーが物理ピクセルに換算します。
仕組み(読んでおく価値のある部分)
忠実なデスクトップ表示。 セッション中、サーバーは参照画像からピクセル単位で調整した Claude Desktop の画面上の表示を再現します。固定されたオレンジ色の縁取り、画面中央から隅へ移動する「Agent is using your computer」ピル、そして操作ウィンドウ(CLI を実行する Windows Terminal、または Claude Desktop ウィンドウ自体)は、右上にぴったりと縮小され、各キャプチャ中は画面外に移動します。そのため、スクリーンショットには黒いボックスのない本来のデスクトップが表示されます。クリック透過はウィンドウの種類に応じて処理します。レイヤー化されていないターミナルは合成クリックごとに Z オーダーの最下部へ移動し、レイヤー化された Claude Desktop ウィンドウには WS_EX_TRANSPARENT(デスクトップツール自体が採用している方法)を設定して、下にあるものへクリックを通します。ウィンドウ自体は動かないため、ユーザーの実際のマウスには影響しません。
キーボードによる自傷防止ガード。 合成キー入力は、OS フォーカスを持つウィンドウに送られます。操作ウィンドウ(Claude ウィンドウまたはホストターミナル)が前面にある場合、type/key はブロックされます。ブロックしないと、テキストがエージェント自身の会話に入力されたり、末尾の Return によってシェルコマンドが実行されたりするためです。このガードは常に適用され、ウィンドウの識別情報と所有プロセスを使って操作対象のウィンドウを特定します。一方で、別の無関係なターミナルウィンドウは引き続き正当な操作対象として扱えます。マウス操作は座標を伴うため、対象外です。
マルチモニター。 スクリーンショットには、キャプチャしたモニター名と、モニターが切り替わった際の通知がイベントに応じて付加されます。open_application は、開いたウィンドウが現在キャプチャ対象となっているものとは別のモニターに表示された場合に警告します。ウィンドウハンドルを取得できる場合は、モニター名を明示して警告します。display_overview はすべての画面のマップを返します。光る表示と縮小表示は操作ウィンドウ自身のモニターに表示され、ほかのディスプレイには影響しません。
正直な起動と自己修復。 open_application は実際のウィンドウが表示されるまでポーリングし、常に成功を報告するのではなく、opened/running-no-window-yet/crashed-on-startup/nothing-launched を区別します。強制終了されたセッションの縮小済みターミナルは、次回起動時に小さな状態ファイルから復元されます(ウィンドウハンドルの再利用に対する保護付き)。
ホットリロード(開発用)。 COMPUTER_USE_DEV=on を設定すると、ロジックモジュールに対して importlib.reload を実行する reload ツールが追加されます。セッションを再起動しなくても編集したコードが反映されるため、サーバーを使った自動化の開発に便利です。デフォルトでは無効です(すっきりとした 29 ツール構成)。
ツールごとの正式な仕様とモジュール構成については、SPEC.md を参照してください。
デスクトップツールとの違い(設計上の仕様)
組み込みのコンピューター操作機能では、インストール済みアプリケーションのリストからアプリに権限を付与し、段階的なモデルを適用します。ブラウザーは表示できますが読み取り専用で、ターミナルと IDE はクリックのみ可能です。アーキテクチャ上、キー入力はできません。一般的なデスクトップ用途には適切なデフォルト設定ですが、このサーバーが想定するワークフローは実現できません。つまり、エージェントが現在開発中のアプリ(インストール済みアプリのリストにない、単体の .exe)を起動し、操作して入力し、動作を確認してから IDE に戻ってコードを編集する、というワークフローです。
omni では、承認されたすべてのアプリに tier:"full" の権限を付与します。IDE、ターミナル、開発ビルドも対象です(open_application は .exe のフルパスを受け取ります)。フルパワーを提供しますが、責任はユーザーにあります。
CLI には権限設定 GUI がないため、request_access は解決可能なアプリに tier:"full" の権限を自動付与し、同じ JSON 形式で応答します。フォアグラウンドの制御はデフォルトで許容的です(許可リストが空の場合のみエラーになります)。許可リストにないウィンドウのマスキングはデフォルトでオフです(矩形ベースのマスキングでは過剰にマスクされるためです)。ティーチモードはスタブです。ステップのアクションを実行してスクリーンショットを返しますが、全画面のツールチップオーバーレイはありません(デスクトップアプリの機能です)。これらはそれぞれ、以下の環境変数で制御します。
設定
| 変数 | デフォルト | 意味 |
|---|---|---|
COMPUTER_USE_MAX_PIXELS | 1200000 | 縮小後のスクリーンショットの最大ピクセル数(約 1.2 MP)。 |
COMPUTER_USE_MASKING | off | スクリーンショット内の許可リストにないアプリのウィンドウをマスクします。 |
COMPUTER_USE_ENFORCE_FOREGROUND | off | 最前面のアプリが許可リストにない場合、入力をブロックします。 |
COMPUTER_USE_AUTOGRANT | on | request_access で解決可能なアプリに権限を自動付与します。 |
COMPUTER_USE_DEV | off | 開発者向けのホットリロードツール reload を登録します(on → 30 個のツール)。 |
COMPUTER_USE_LOG_DIR | %LOCALAPPDATA%\omni-computer-use\logs | ローテーションされる mcp.log(ツール呼び出しとトレースバック)の保存ディレクトリ。 |
COMPUTER_USE_GLOW | on | セッション中に表示する静的なオレンジ色のエッジグロー。 |
COMPUTER_USE_SHRINK_TERMINAL | on | 制御ウィンドウを右上隅に縮小します。 |
COMPUTER_USE_HIDE_CONTROLLING | on | キャプチャ中、制御ウィンドウを画面外に移動します。 |
COMPUTER_USE_PILL | on | 中央に「エージェントがコンピューターを使用しています」というピルを表示します。 |
COMPUTER_USE_GLOW_COLOR | 217,119,87 | グロー/ピルの色(#D97757)。 |
COMPUTER_USE_GLOW_ALPHA | 0.4 | 画面端でのグローの最大不透明度。 |
COMPUTER_USE_GLOW_BAND | 0.05 | 短辺の画面寸法に対するグロー帯の幅の割合。 |
COMPUTER_USE_GLOW_EXCLUDE | on | キャプチャからグロー/ピルを除外します。 |
注意点(Windows の実際の動作)
- IME は
key/hold_keyに影響しますが、typeには影響しません。typeは Unicode を直接入力するため、入力メソッドを経由しません(CJK 文字や絵文字はどのレイアウトでも入力できます)。key/hold_keyは仮想キーコードを送信し、アクティブな IME を経由します。そのため、中国語 IME がアクティブな状態で文字aを送信すると、aが入力される代わりにピンインの候補一覧が開きます。テキストにはtypeを使い、文字のショートカットを使うときは IME を英語に切り替えてください。 - 昇格されたアプリ(タスク マネージャー、UAC プロンプト、管理者権限のインストーラー)は操作できません。Windows UIPI が、昇格されていないプロセスからの入力をブロックします。デスクトップツールと同じ制限です。
- タイミングが重要な UI には
computer_batchが必要です。 1 つのバッチ内のアクションは数ミリ秒間隔で実行されますが、別々のツール呼び出しの間にはモデルとの往復に数秒かかります。処理中にしか存在しないもの(停止/キャンセルボタン、フォーカスが外れると閉じるメニューなど)は、1 回ずつ呼び出していると操作できません。シーケンス全体を 1 つのバッチにまとめ、waitでタイミングを調整してください。 - キーボード操作の前に、対象にフォーカスを当てる必要があります。 操作対象のウィンドウがフォーカスを保持している間は、セルフハームガードによって
type/keyがブロックされます。バッチの最初に対象ウィンドウをクリックしてください。クリックによってフォーカスが移り、同じバッチ内の後続のキーボード操作が意図した場所に入力されます。 - クリックが届いても、必ずしもクリック操作が実行されるとは限りません。 合成クリックは OS によって配信されますが、アプリが無視する場合があります。特に、レンダラーがエラー状態にあるとき、レンダラーがタイトルバーを描画する Electron ウィンドウでは、ネイティブのツールチップが表示され、ウィンドウもアクティブになる一方で、ネイティブの
WM_CLOSEなら正常に閉じるのに、閉じるボタンは機能しません。返されたClicked.を信頼せず、スクリーンショットで確認してください。ホバーは機能するのに操作が機能しない場合は、座標ではなくアプリ側に原因があると考えてください。
テスト
tests/ には、16 シナリオのエンドツーエンドテストスイート(scen_*.json)と、新しいサーバーを起動してシナリオのツール呼び出しの JSON リストを実行し、返された画像をその間に挿入するドライバーがあります。
uv run python tests/drive.py tests/scen_calc.json # compute 7×8 by clicks, screenshot, verify
tests/dev/ には、開発中に作成した一度限りの Win32 プローブ(グロー/ピルのサンプリング、Z オーダーおよびキャプチャアフィニティの実験)が含まれています。
技術スタック
Python ≥ 3.11 を使用し、uv、src レイアウト、hatchling でパッケージ化しています。stdio 経由の mcp Python SDK(FastMCP)、キャプチャ用の mss、画像処理用の pillow、DPI 対応、ウィンドウ/クリップボード/フォアグラウンドへのアクセス、および Win32 の SendInput によるマウス/キーボードの直接入力には pywin32 と ctypes を使用します。
プライバシーポリシー
omni-computer-use はすべてお使いのマシン上で動作し、サーバー側の処理はありません。
- データ収集:ありません。 ソースにはネットワークライブラリがインポートされておらず、テレメトリー、分析、クラッシュレポートも含まれていません。どこにもアップロードされることはありません。
- 使用と保存。 スクリーンショット、クリップボードの内容、入力イベントはお使いのマシン上のメモリ内で処理され、サーバーを接続した MCP クライアントにローカル stdio 経由でのみ返されます。ディスクに書き込まれるのは、
%LOCALAPPDATA%\omni-computer-use\logsにあるローカルのローテーションログ(ツール呼び出しとトレースバック)のみです。COMPUTER_USE_LOG_DIRで設定でき、いつでも削除できます。 - 第三者との共有:ありません。 アカウント、外部サービス、第三者はありません。
- データ保持。 保持されるのはお使いのディスク上でのログローテーションのみです。管理するのはお客様ご自身です。
- お問い合わせ。 プライバシーに関するご質問は、GitHub issue を作成してください。
接続する MCP クライアント(例:Claude Desktop、Claude Code CLI)は、このサーバーがキャプチャしたスクリーンショットやテキストを受け取ります。それらは各クライアント独自のプライバシーポリシーに従います。
ライセンス
MIT © Jason26214
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。