计算机使用MCP服务器
A. 模型上下文协议 服务器,让人工智能观察和控制你的桌面——截图、移动鼠标、点击、滚动、键入和运行shell命令。
工具
屏幕观察
| 工具 | 说明 |
|---|---|
take_screenshot | 将桌面捕获为base64 PNG(大屏幕自动缩放) |
get_screen_info | 屏幕尺寸和当前光标位置 |
get_cursor_position | 当前鼠标(x,y)坐标 |
get_active_window_info | 最前面的应用程序名称和窗口标题(macOS) |
鼠标控制
| 工具 | 说明 |
|---|---|
mouse_move | 将光标移动到(x,y) |
mouse_left_click | 左键单击(x,y) |
mouse_right_click | 在(x,y)处单击鼠标右键 |
mouse_double_click | 双击(x,y) |
mouse_scroll | 在(x,y)处垂直和/或水平滚动 |
mouse_drag | 单击并从一个位置拖动到另一个位置 |
键盘控制
| 工具 | 说明 |
|---|---|
keyboard_type | 键入文本(默认情况下通过剪贴板进行Unicode安全) |
keyboard_press | 按一个键(enter, tab, escape、箭头键等) |
keyboard_hotkey | 按下快捷键,例如。 ["cmd", "c"] |
keyboard_key_down | 按住键 |
keyboard_key_up | 松开按住的钥匙 |
外壳
| 工具 | 说明 |
|---|---|
run_shell_command | 运行zsh命令,返回stdout/stderr/返回代码 |
资源
| URI | 描述 |
|---|---|
screen://screenshot | base64 PNG字符串形式的实时桌面截图(大屏幕自动缩放) |
screen://info | 带有屏幕尺寸和光标位置的JSON |
info://status | 服务器健康检查 |
屏幕截图大小
为了避免超大或Retina显示器上的上下文窗口膨胀,屏幕截图在编码前会自动归一化/缩小。
take_screenshot.width/take_screenshot.height保持鼠标操作的逻辑屏幕坐标。take_screenshot.image_width/take_screenshot.image_height是实际的编码图像尺寸。take_screenshot.scale_x/take_screenshot.scale_y将图像坐标映射回屏幕坐标。
可选环境变量:
CU_MCP_MAX_SCREENSHOT_EDGE(默认值1920):编码屏幕截图的最大宽度/高度。集0禁用缩小。CU_MCP_SCREENSHOT_PNG_COMPRESS_LEVEL(默认值6,范围0-9):PNG压缩级别。
提示
| 提示 | 描述 |
|---|---|
describe_screen | 捕获并描述当前屏幕状态 |
automate_task(task) | 自动化桌面任务的分步指南 |
设置
先决条件
- Python 3.10+
- macOS(鼠标/键盘自动化和屏幕截图使用macOS API)
安装
# Create a virtual environment using the Homebrew Python (recommended)
/opt/homebrew/opt/python@3.12/bin/python3.12 -m venv .venv
source .venv/bin/activate
# Install the server and all dependencies
pip install -e .
pip install mss pyautogui pyperclipmacOS权限
服务器首次执行鼠标/键盘操作或截图时,macOS将提示用户输入权限。授予两者 系统设置→ 隐私和安全:
- 无障碍 --鼠标和键盘控制所需
- 屏幕录制 --截图需要
跑步
# Run directly
.venv/bin/cu-mcp
# Or with the MCP CLI inspector (useful for debugging)
mcp dev src/cu_mcp/server.py终端执行日志
服务器现在通过以下方式向终端打印实时工具执行日志(包括计时和经过净化的参数/结果的开始/结束) stderr 当它运行时。这不会干扰MCP stdio 响应。
可选环境变量:
CU_MCP_LOG_TO_STDERR(默认值1):设置为0禁用终端日志CU_MCP_LOG_MAX_STRING(默认值300):截断前记录的最大字符串长度
添加到克劳德代码
claude mcp add cu-mcp -- /path/to/CU-MCP/.venv/bin/cu-mcp添加到Claude桌面
添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"cu-mcp": {
"command": "/path/to/CU-MCP/.venv/bin/cu-mcp"
}
}
}项目结构
src/cu_mcp/
server.py # All tools, resources, and prompts