open-computer-use について
open-computer-use は、デスクトップ操作を行うクロスプラットフォームのコマンドラインツール兼ローカル MCP サーバーです。共通のアプリ操作ツールに加え、macOS ではアクセシビリティ検索とテキスト選択にも対応します。
主な機能
- 01クロスプラットフォームのデスクトップ操作
- 02アプリの検出と状態確認
- 03要素指定のクリックと入力
- 04macOS のアクセシビリティ検索とテキスト選択
活用シーン
- 01デスクトップアプリの確認と操作
- 02複数段階の GUI タスクの自動化
- 03macOS コントロール内のテキスト選択
MCP 対応
`open-computer-use mcp` または `ocu mcp` でローカル stdio MCP サーバーとして起動し、対応するエージェントランタイムに Computer Use ツールを公開します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ ifuryst/ open-computer-use --skill open-computer-useインストール後、Claude Code で/open-computer-useを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/installation.mdtroubleshooting.mdusage.md詳細
Open Computer Use
概要
Open Computer Use は、Computer Use をローカル CLI および stdio MCP サーバーとして提供します。Codex.app 専用ではありません。使用するエージェントの実行環境に合わせて、コマンドと MCP 設定を調整してください。
macOS ランタイムには macOS 14.0 以降が必要です。Windows と Linux では各プラットフォーム独自のランタイムを使用するため、この macOS の最小要件は適用されません。
macOS、Linux、Windows の各環境で、同じ基本ツールをサポートしています。
list_apps、get_app_state、click、perform_secondary_action、scroll、
drag、type_text、press_key、set_value。
macOS ランタイムには、テキスト要素内の指定したテキストを選択するか、その前または後にテキストカーソルを配置する select_text も実装されています(selection:text、cursor_before、
cursor_after)。アクセシビリティツリーに表示されるとおりの text を渡してください。一意に特定できない場合は prefix/
suffix も渡します。対象が曖昧な場合、最初の一致を黙って選択するのではなく、処理は失敗します。JavaScript では app.selectText(elementIndex, text, options?) を使用します。範囲の検証ができない場合や一致しない場合は、すべてのアクションの読み戻しが無効でも例外が発生します。Windows と Linux のランタイムでは、まだこのツールは実装されていません。
macOS ではさらに query が利用できます。これは、ツリーのレンダリングやスクリーンショットの撮影をせずに、テキストやロールでコントロールを検索する、対象を絞ったアクセシビリティ検索です。
基本的なワークフロー
- macOS では、CLI を実行する前に
sw_vers -productVersionを実行し、macOS 14.0 以降であることを確認します。これより古いバージョンではランタイムを起動できないことを説明してください。バイナリの非互換性に対する解決策として、doctorや権限の変更を推奨しないでください。 open-computer-use -hまたはocu -hを実行して、CLI がインストールされていることを確認します。インストールまたはセットアップが未完了の場合は、references/installation.md を参照してください。- 対応する macOS バージョンでは、最初の実際の GUI タスクの前に
open-computer-use doctorを実行します。権限が不足している場合は、オンボーディング UI でアクセシビリティと画面収録を許可するようユーザーに依頼してください。 - 操作を開始する前に、利用可能なアプリを確認します:
open-computer-use call list_apps。 open-computer-use call get_app_state --args '{"app":"TextEdit"}'を使って、現在の UI 状態を取得します。通常、既定の状態で UI の操作には十分です。- チャット履歴、メール本文、ドキュメントのテキスト、長文コンテンツなど、意味的に長いテキストが必要なタスクでは、
text_limit: 1000またはtext_limit: "max"を指定してget_app_stateを呼び出します。 - スクロールしても表示中の長いページやリストが不完全な場合は、より大きな
max_tree_nodesまたはmax_tree_depthを指定してget_app_stateを呼び出します。 - 直近の
get_app_stateの結果に含まれるelement_indexを使った、要素を対象とするアクションを優先します。 - 複数ステップの CLI 操作では、
open-computer-use call --calls '<json-array>'を使用すると、1 つのプロセス内で最新の要素インデックスのマッピングを再利用できます。 - ローカル MCP サーバーに対応したエージェントの実行環境では、
open-computer-use mcpまたはocu mcpを設定し、公開されている Computer Use ツールを直接呼び出します。references/usage.md を参照してください。 - コードを直接使ってオーケストレーションする場合は、
ocu capabilitiesを実行し、その後、1 回限りのocu jsまたは永続的なocu replを使用します。references/usage.md を参照してください。 - 通信、権限、またはデスクトップセッションへのアクセスに失敗する場合は、references/troubleshooting.md を参照してください。
操作ルール
- 対象のデスクトップは、ユーザーの実際のセッションとして扱ってください。ユーザーが明示的に依頼した場合を除き、パスワードマネージャー、無関係な個人コンテンツ、機密性の高いアプリを調べないでください。
- 送信、削除、購入、承認、アップロードなど、外部から見える変更を行う前に確認してください。
- Codex.app のプラグインヘルパーが利用できると想定しないでください。インストール済みの
open-computer-use/ocuCLI、または明示的な MCP 設定を使用してください。 get_app_stateまたは macOS のqueryが返すインデックスは、同じネイティブセッション内で使用してください。セッションをまたいだり、UI に大きな変更があった後にインデックスを推測してはいけません。- セマンティックアクションと、編集可能なコントロールに対する
set_valueを優先してください。要素ツリーに安全な対象が表示されない場合に限り、座標指定のclick、scroll、dragを使用してください。 - macOS では、ユーザーが
click_method: "global"、ウィンドウサーバーのドラッグセッションを必要とするdrag(ウィンドウの移動、ドラッグ選択によるテキスト選択、Finder でのドラッグ&ドロップ)、または実際のポインターを動かす可能性があるその他の診断動作を明示的に要求した場合を除き、OPEN_COMPUTER_USE_ALLOW_GLOBAL_POINTER_FALLBACKS=1を有効にしないでください。この設定がない場合、dragはDrag delivered via app_postを報告し、これらの操作は効果がありません。代替手段についてはreferences/usage.mdを参照してください。 - Windows と Linux では、GUI オートメーションを利用できると想定する前に、コマンドがログイン済みのデスクトップセッション内で実行されていることを確認してください。
よく使う CLI アクション
open-computer-use -h
ocu -h
ocu capabilities --json
ocu js 'nodeRepl.write(6 * 7)'
ocu repl
open-computer-use doctor
open-computer-use call list_apps
ocu call list_apps
open-computer-use call get_app_state --args '{"app":"TextEdit"}'
open-computer-use call get_app_state --args '{"app":"TextEdit","text_limit":1000}'
open-computer-use call get_app_state --args '{"app":"TextEdit","text_limit":"max"}'
open-computer-use call get_app_state --args '{"app":"Google Chrome","max_tree_nodes":3000,"max_tree_depth":96}'
open-computer-use call click --args '{"app":"TextEdit","element_index":"0"}'
open-computer-use call type_text --args '{"app":"TextEdit","text":"Hello from Open Computer Use"}'
1 つのプロセス内で状態を再利用する短いシーケンスの場合:
open-computer-use call --calls '[
{"tool":"get_app_state","args":{"app":"TextEdit"}},
{"tool":"press_key","args":{"app":"TextEdit","key":"Return"}}
]'
MCP の使用方法
stdio 経由でローカル MCP サーバーを起動できるランタイムでは、次を使用してください。
[mcp_servers.open_computer_use]
command = "open-computer-use"
args = ["mcp"]
JSON 設定の例、ツールを直接呼び出すパターン、プラットフォームに関する注意事項については、references/usage.md をお読みください。
参考資料
- references/installation.md:CLI の初回インストール、エージェント向け MCP インストールコマンド、macOS の権限設定。
- references/usage.md:MCP の設定、CLI の直接呼び出し、シーケンス処理、プラットフォームごとの動作。
- references/troubleshooting.md:権限、デスクトップセッション、アプリの検出、アクションの失敗。