mcpField
C
Computer Control MCP

Computer Control MCP

本地服务
github.com/AB498生产力1724 天前更新

关于 Computer Control MCP

Computer Control MCP 是一个 MCP 服务,提供鼠标、键盘、截图与 OCR 等电脑控制能力,与 Anthropic 的 computer-use 类似。它基于 PyAutoGUI、RapidOCR 和 ONNXRuntime 实现,面向需要自动化桌面操作的用户。

主要功能

  1. 01鼠标移动、点击与拖放
  2. 02键盘输入与按键组合
  3. 03屏幕或指定窗口截图
  4. 04截图文字识别(OCR)
  5. 05窗口列举与激活
  6. 06GPU 加速窗口的 WGC 截图(仅 Windows)

适用场景

  1. 01让 AI 助手读取屏幕内容并执行桌面操作
  2. 02对指定窗口截图并提取其中文字
  3. 03通过 uvx 快速为 MCP 客户端添加电脑控制能力

MCP 相关

作为 MCP 服务,它向客户端暴露鼠标、键盘、截图、OCR 和窗口管理等工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"computer-control": {
"command": "uvx",
"args": [
"computer-control-mcp@latest"
]
}
}
}
启动命令uvx computer-control-mcp@latest

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypicomputer-control-mcp@latest

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Computer Control MCP

通过 PyAutoGUI、RapidOCR 和 ONNXRuntime 提供鼠标、键盘、OCR 等计算机控制能力的 MCP 服务。类似于 Anthropic 的「computer-use」。无外部依赖。
README 配图 Discord 许可证:MIT PyPi

MCP 计算机控制演示

快速使用(使用 uvx 设置 MCP)

注意: 首次运行 uvx computer-control-mcp@latest 时会下载 Python 依赖(约 70MB),可能需要一些时间。建议在将其用作 MCP 之前先在终端中运行。之后运行即可立即启动。

{
  "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 加速窗口的说明

传统截图方法(如 GDI/PrintWindow)无法捕获 GPU 加速窗口,导致屏幕变黑。这会影响游戏、媒体播放器、Electron 应用、启用了 GPU 加速的浏览器、流媒体软件和 CAD 工具。可通过 take_screenshot 工具的标志或 ENV 变量使用 WGC。

配置

自定义截图目录

默认情况下,屏幕截图会保存到操作系统的下载目录。你可以通过设置 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

了解更多信息或寻求帮助

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。