Computer Control MCP について
Computer Control MCP は、マウス、キーボード、スクリーンショット、OCR による電卓操作を提供する MCP サーバーで、Anthropic の computer-use に類似しています。PyAutoGUI、RapidOCR、ONNXRuntime を基盤とし、デスクトップ操作を自動化したいユーザーを対象としています。
主な機能
- 01マウスの移動、クリック、ドラッグ&ドロップ
- 02キーボード入力とキーの組み合わせ
- 03画面全体または指定ウィンドウのスクリーンショット
- 04スクリーンショットからの OCR テキスト抽出
- 05ウィンドウの一覧取得と前面化
- 06Windows における GPU アクセラレーションウィンドウの WGC キャプチャ
活用シーン
- 01アシスタントが画面を読み取り、デスクトップ上で操作を実行する
- 02特定のウィンドウを撮影し、そこからテキストを抽出する
- 03uvx を使って MCP クライアントに電脳操作機能を追加する
MCP 対応
MCP サーバーとして、マウス、キーボード、スクリーンショット、OCR、ウィンドウ管理の各機能をツールとして MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
コンピューター制御 MCP
PyAutoGUI、RapidOCR、ONNXRuntime を使用して、マウス、キーボード、OCR などのコンピューター制御機能を提供する MCP サーバーです。Anthropic の「computer-use」に似ています。外部依存関係はありません。

クイック使用方法(uvx を使用した MCP のセットアップ)
注: 初めて uvx computer-control-mcp@latest を実行すると、Python の依存関係(約 70MB)がダウンロードされるため、時間がかかる場合があります。MCP として使用する前に、ターミナルで実行しておくことをおすすめします。2 回目以降の実行はすぐに完了します。
{
"mcpServers": {
"computer-control-mcp": {
"command": "uvx",
"args": ["computer-control-mcp@latest"]
}
}
}
または、pip でグローバルにインストールします:
pip install computer-control-mcp
次に、サーバーを実行します:
computer-control-mcp # instead of uvx computer-control-mcp, so you can use the latest version, also you can `uv cache clean` to clear the cache and `uvx` again to use latest version.
機能
- マウスの移動とクリックを制御します
- 現在のカーソル位置にテキストを入力します
- 画面全体または特定のウィンドウのスクリーンショットを撮影し、必要に応じてダウンロードディレクトリに保存します
- OCR(光学文字認識)を使用してスクリーンショットからテキストを抽出します
- ウィンドウの一覧表示とアクティブ化を行います
- キーボードのキーを押します
- ドラッグ&ドロップ操作を行います
- GPU アクセラレーションを使用するウィンドウ向けに、スクリーンショットの撮影を強化します(Windows のみ)
GPU アクセラレーションを使用する Windows に関する注意
GDI/PrintWindow などの従来のスクリーンショット方式では、GPU アクセラレーションを使用するウィンドウを撮影できず、画面が黒くなることがあります。これは、ゲーム、メディアプレーヤー、Electron アプリ、GPU アクセラレーションを使用するブラウザー、ストリーミングソフトウェア、CAD ツールに影響します。take_screenshot ツールのフラグまたは ENV 変数を使用して WGC を利用してください。
設定
カスタムスクリーンショットディレクトリ
デフォルトでは、スクリーンショットは OS のダウンロードディレクトリに保存されます。COMPUTER_CONTROL_MCP_SCREENSHOT_DIR 環境変数を設定すると、保存先をカスタマイズできます:
{
"mcpServers": {
"computer-control-mcp": {
"command": "uvx",
"args": ["computer-control-mcp@latest"],
"env": {
"COMPUTER_CONTROL_MCP_SCREENSHOT_DIR": "C:\\Users\\YourName\\Pictures\\Screenshots"
}
}
}
}
または、システム全体に設定します:
# Windows (PowerShell)
$env:COMPUTER_CONTROL_MCP_SCREENSHOT_DIR = "C:\Users\YourName\Pictures\Screenshots"
# macOS/Linux
export COMPUTER_CONTROL_MCP_SCREENSHOT_DIR="/home/yourname/Pictures/Screenshots"
指定したディレクトリが存在しない場合、サーバーはデフォルトのダウンロードディレクトリを使用します。
特定のウィンドウでの WGC の自動使用
COMPUTER_CONTROL_MCP_WGC_PATTERNS 環境変数を設定すると、特定のウィンドウで Windows Graphics Capture(WGC)を自動的に使用するように設定できます。この変数には、ウィンドウタイトルに一致するパターンをカンマ区切りで指定します:
{
"mcpServers": {
"computer-control-mcp": {
"command": "uvx",
"args": ["computer-control-mcp@latest"],
"env": {
"COMPUTER_CONTROL_MCP_WGC_PATTERNS": "obs, discord, game, steam"
}
}
}
}
または、システム全体に設定します:
# Windows (PowerShell)
$env:COMPUTER_CONTROL_MCP_WGC_PATTERNS = "obs, discord, game, steam"
# macOS/Linux
export COMPUTER_CONTROL_MCP_WGC_PATTERNS="obs, discord, game, steam"
この変数を設定すると、タイトルに指定したパターンのいずれかを含むウィンドウでは、スクリーンショットの撮影に WGC が自動的に使用されるため、GPU アクセラレーションを使用するアプリケーションで画面が黒くなる問題を解消できます。
利用可能なツール
マウス制御
click_screen(x: int, y: int): 指定した画面座標をクリックしますmove_mouse(x: int, y: int): マウスカーソルを指定した座標に移動しますdrag_mouse(from_x: int, from_y: int, to_x: int, to_y: int, duration: float = 0.5): マウスをある位置から別の位置へドラッグしますmouse_down(button: str = "left"): マウスボタン('left'、'right'、'middle')を押したままにしますmouse_up(button: str = "left"): マウスボタン('left'、'right'、'middle')を離します
キーボード操作
type_text(text: str): 現在のカーソル位置に指定したテキストを入力しますkey_down(key: str): 特定のキーを離すまで押し続けますkey_up(key: str): 特定のキーを離しますpress_keys(keys: Union[str, List[Union[str, List[str]]]]): キーを押します(単一キー、キーの順次入力、キーの組み合わせに対応)
画面とウィンドウの管理
take_screenshot(title_pattern: str = None, use_regex: bool = False, threshold: int = 10, scale_percent_for_ocr: int = None, save_to_downloads: bool = False, use_wgc: bool = False): 画面またはウィンドウをキャプチャしますtake_screenshot_with_ocr(title_pattern: str = None, use_regex: bool = False, threshold: int = 10, scale_percent_for_ocr: int = None, save_to_downloads: bool = False): 画面またはウィンドウから OCR を使用してテキストを抽出し、座標とともに返しますget_screen_size(): 現在の画面解像度を取得しますlist_windows(): 開いているすべてのウィンドウを一覧表示しますactivate_window(title_pattern: str, use_regex: bool = False, threshold: int = 60): 指定したウィンドウを前面に表示しますwait_milliseconds(milliseconds: int): 指定したミリ秒数だけ待機します
mcp-caller を使用した MCP サーバーのテスト
MCP クライアントを使わずに、mcp-caller を使用して MCP サーバーのツールをすばやくテストできます。
# List all available tools
npx mcp-caller --server-json '{"type":"stdio","command":"uvx","args":["computer-control-mcp@latest","server"]}' --list-tools
# Call a specific tool
npx mcp-caller --server-json '{"type":"stdio","command":"uvx","args":["computer-control-mcp@latest","server"]}' --tool list_windows --params-json '{}'
開発
開発環境のセットアップ
# Clone the repository
git clone https://github.com/AB498/computer-control-mcp.git
cd computer-control-mcp
# Build/Run:
# 1. Install in development mode | Meaning that your edits to source code will be reflected in the installed package.
pip install -e .
# Then Start server | This is equivalent to `uvx computer-control-mcp@latest` just the local code is used
computer-control-mcp
# -- OR --
# 2. Build after `pip install hatch` | This needs version increment in orer to reflect code changes
hatch build
# Windows
$latest = Get-ChildItem .\dist\*.whl | Sort-Object LastWriteTime -Descending | Select-Object -First 1
pip install $latest.FullName --upgrade
# Non-windows
pip install dist/*.whl --upgrade
# Run
computer-control-mcp
テストの実行
python -m pytest
API リファレンス
利用可能な関数とクラスの詳細については、API リファレンスを参照してください。
ライセンス
MIT
詳細情報またはサポートについて
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。