Win32 MCP服务器
面向AI代理的企业级Windows自动化——MCP上的53个工具
最全面的Windows桌面自动化服务器 模型上下文协议.让任何兼容MCP的AI代理完全控制Windows应用程序:智能文本查找和点击、结构化OCR、屏幕截图、鼠标/键盘输入、窗口管理、过程控制和多步批处理操作——所有这些都通过一个MCP服务器完成。
](https://github.com/RandyNorthrup/win32-mcp-server/releases)     
______________________________________________________________________
v2.5的新增功能
- 53工具 --完全模块化的企业级架构
- UI自动化API --6个新工具:检查控制树,按名称单击控件,读取/设置不带坐标的值
- OCR缓存 --使用2秒TTL进行感知图像哈希,以实现更快的重复调用
- 操作验证 --可选
verify上click/focus_window;自动验证打开kill_process - VS代码状态栏 --扩展中的实时加载/就绪/错误/禁用指示器
- 8个新配置设置 --细分路径、OCR语言、预处理模式、截图格式/质量/比例
- 智能自动化工具 —
click_text,wait_for_text,fill_field,execute_sequence,以及更多 - 结构化OCR --每个单词的边界框、置信度得分和屏幕坐标
- 模糊窗口匹配 --标点识别标题匹配与智能建议
- DPI感知坐标 --高分辨率显示器的自动每显示器DPI感知
- 图像预处理 --自动、light_bg、dark_bg、高对比度模式,可提高OCR精度
- 多步序列 --在单个请求中批处理多个工具调用
- 屏幕截图比较 --当前屏幕和参考图像之间的像素级差异
- 窗口快照 --在一次通话中组合屏幕截图+OCR
- 稳健的错误处理 --带有可操作建议的结构化JSON错误
______________________________________________________________________
特性
智能自动化(最强大的工具)
| 工具 | 说明 |
|---|---|
click_text | 在屏幕上找到文本并单击它——不需要坐标 |
find_text_on_screen | 使用屏幕坐标查找所有出现的文本 |
wait_for_text | 轮询,直到文本出现在屏幕上(超时) |
assert_text_visible | 验证文本是否可见(用于UI测试) |
fill_field | 单击标记的输入字段并键入值 |
get_window_snapshot | 一次通话中的截图+结构化OCR |
right_click_menu | 右键单击并OCR上下文菜单项 |
execute_sequence | 按顺序运行多达50个工具,无需往返 |
屏幕截图(6个工具)
- 全屏、每个窗口和每个监视器捕获
- PNG、JPEG和WebP输出,具有质量/比例控制
- 任意坐标下的像素颜色采样
- 屏幕截图与相似性指标的比较
OCR——光学字符识别(5个工具)
- 全屏和基于区域的文本提取
- 具有自动聚焦和捕获功能的每窗口OCR
- 结构化模式 --每个单词都有边界框、置信度、行/块/单词编号
- 智能预处理:自动检测亮/暗背景
- 将坐标映射回原始屏幕空间,以便准确点击
鼠标控制(8个工具)
- 单击、双击、三次单击(左/右/中按钮)
- 可配置持续时间和按钮的拖放操作
- 鼠标移动时动画流畅
- 在任何位置进行垂直和水平滚动
- 当前位置报告
键盘控制(3个工具)
- 键入支持Unicode的文本(自动回退到剪贴板粘贴)
- 按单个键或组合键(
ctrl+c,alt+f4) - 从数组执行热键组合(
["ctrl", "shift", "s"])
剪贴板(2个工具)
- 将文本复制到系统剪贴板
- 读取当前剪贴板内容
窗口管理(10个工具)
- 列出所有带有模糊标题过滤的窗口
- 详细的窗口信息(PID、位置、大小、状态、进程名称、内存)
- 聚焦、关闭、最小化、最大化、恢复
- 调整大小并移动到精确坐标
- 等待窗口出现(超时轮询)
- 模糊匹配与智能脱靶建议
过程管理(4个工具)
- 列出具有过滤、排序和分页功能的进程
- 优雅的终止与强制杀伤回退
- 启动应用程序,并可选择等待完成
- 等待进程空闲(CPU阈值监控)
系统(1个工具)
health_check--验证所有依赖关系、DPI、监视器、Tesseract和工具计数
UI自动化(6个工具)
uia_inspect_window--获取窗口的控制树uia_find_control--按类型、名称或自动化ID查找控件uia_click_control--按名称单击控件(比坐标更可靠)uia_get_control_value--读取控件的值或文本uia_set_control_value--设置控件的值(编辑框等)uia_get_focused--获取当前聚焦控件的信息
______________________________________________________________________
安装
先决条件
- Python 3.10+
- Tesseract OCR (可选——仅OCR工具需要):
- 下载:https://github.com/UB-Mannheim/tesseract/wiki - 安装并确保它在PATH上 - 验证: tesseract --version
安装包
来自PyPI(推荐):
pip install win32-mcp-server来自GitHub(最新未发布):
pip install git+https://github.com/RandyNorthrup/win32-mcp-server.git来源:
git clone https://github.com/RandyNorthrup/win32-mcp-server.git
cd win32-mcp-server
pip install -e .______________________________________________________________________
配置
VS代码与GitHub Copilot
添加到MCP配置(%APPDATA%\Code\User\mcp.json):
{
"servers": {
"win32-inspector": {
"type": "stdio",
"command": "win32-mcp-server"
}
}
}或者从VS代码市场安装--搜索 “Windows自动化检查器”.
克劳德桌面
添加 %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"win32-inspector": {
"command": "win32-mcp-server"
}
}
}任何MCP客户端
服务器使用 STDIO传输 并与任何兼容MCP的客户端配合使用。
______________________________________________________________________
使用示例
智能自动化(自然语言)
"Click the 'Submit' button"
"Wait for 'Loading complete' to appear, then click 'Continue'"
"Fill in the 'Username' field with 'admin@example.com'"
"Take a snapshot of the Chrome window and tell me what you see"
"Right-click the desktop and show me the menu options"屏幕截图
"Capture a screenshot of the entire screen"
"Capture the Notepad window as a compressed JPEG at 50% scale"
"Compare the current screen to this reference image"光学字符识别
"Extract all text from the screen"
"Get structured OCR data from the region at (100, 200) size 800x600"
"Read all text in the Chrome window"鼠标和键盘
"Click at (500, 300) with the right mouse button"
"Drag from (100, 100) to (500, 500)"
"Type 'Hello World' — use clipboard paste for Unicode characters"
"Press Ctrl+Shift+S"窗口和流程管理
"List all open windows containing 'Visual Studio'"
"Maximize the Chrome window"
"Resize Notepad to 800x600 and move it to (0, 0)"
"Wait for a window titled 'Installation Complete' to appear"
"List the top 20 processes by memory usage"
"Kill process with PID 1234"批量操作
"Execute this sequence: click (100,100), wait 500ms, type 'hello', press Enter"______________________________________________________________________
全部53个工具
智能自动化
| 工具 | 说明 |
|---|---|
click_text | 在屏幕上找到文本并单击它 |
find_text_on_screen | 查找所有带有坐标的文本 |
wait_for_text | 等待文本出现(轮询) |
assert_text_visible | 断言文本可见/不可见 |
fill_field | 单击标记的字段并键入值 |
get_window_snapshot | 一次通话中的截图+OCR |
right_click_menu | 右键单击并OCR菜单 |
execute_sequence | 最多可批量处理50次工具调用 |
屏幕截图
| 工具 | 说明 |
|---|---|
capture_screen | 全屏截图(PNG/JPEG/WebP) |
capture_window | 带有模糊标题匹配的窗口截图 |
capture_monitor | 按索引捕获特定监视器 |
list_monitors | 列出具有分辨率和DPI的监视器 |
get_pixel_color | 在坐标处获取RGB/十六进制颜色 |
compare_screenshots | 像素级与相似性得分的比较 |
光学字符识别
| 工具 | 说明 |
|---|---|
ocr_screen | 全屏文本提取 |
ocr_region | 区域文本提取 |
ocr_window | 窗口文本提取 |
ocr_screen_structured | 带边界框的全屏OCR |
ocr_region_structured | 带边界框的区域OCR |
老鼠
| 工具 | 说明 |
|---|---|
click | 在坐标处单击(左/右/中,N次单击) |
double_click | 在坐标处双击 |
triple_click | 三次单击以选择行/段落 |
drag | 从开始拖动到结束,并添加持续时间 |
mouse_position | 获取当前光标位置 |
mouse_move | 以流畅的动画移动光标 |
scroll | 在指定位置进行垂直滚动 |
scroll_horizontal | 在位置水平滚动 |
键盘
| 工具 | 说明 |
|---|---|
type_text | 键入文本(自动Unicode检测,剪贴板回退) |
press_key | 按键或组合键(ctrl+c, alt+f4) |
hotkey | 来自密钥阵列的热键(["ctrl","shift","s"]) |
剪贴板
| 工具 | 说明 |
|---|---|
clipboard_copy | 将文本复制到剪贴板 |
clipboard_paste | 读取剪贴板内容 |
窗口管理
| 工具 | 说明 |
|---|---|
list_windows | 列出带有可选标题过滤器的窗口 |
get_window_info | 详细的窗口信息(PID、进程、内存) |
focus_window | 将窗口置于前台 |
close_window | 按标题关闭窗口 |
minimize_window | 最小化窗口 |
maximize_window | 最大化窗口 |
restore_window | 从最小化/最大化恢复 |
resize_window | 调整到精确的尺寸 |
move_window | 移动到精确位置 |
wait_for_window | 等待窗口出现(轮询) |
进程管理
| 工具 | 说明 |
|---|---|
list_processes | 列出进程(筛选、排序、分页) |
kill_process | 终止进程(优雅+强制回退) |
start_process | 使用可选的等待启动应用程序 |
wait_for_idle | 等待进程CPU降至阈值以下 |
系统
| 工具 | 说明 |
|---|---|
health_check | 完整的依赖关系和系统状态报告 |
用户界面自动化
| 工具 | 说明 |
|---|---|
uia_inspect_window | 检查控制树(按钮、编辑等) |
uia_find_control | 按名称、自动化ID或类型查找控件 |
uia_click_control | 按名称单击控件(不需要坐标) |
uia_get_control_value | 读取控件的值/文本 |
uia_set_control_value | 设置控件的值 |
uia_get_focused | 获取有关集中控制的信息 |
______________________________________________________________________
建筑
win32-mcp-server/
├── win32_mcp_server/
│ ├── __init__.py # Package entry, version
│ ├── __main__.py # python -m support
│ ├── config.py # Dataclass config, PreprocessMode
│ ├── registry.py # Decorator-based tool registry + dispatch
│ ├── server.py # MCP server, stdio transport, health_check
│ ├── utils/
│ │ ├── coordinates.py # DPI awareness, screen geometry, validation
│ │ ├── errors.py # ToolError with suggestions
│ │ ├── imaging.py # Image preprocessing, encoding, diffing
│ │ └── window_match.py # Fuzzy title matching, deduplication, PID
│ └── tools/
│ ├── capture.py # Screenshot tools (6)
│ ├── ocr.py # OCR tools (5)
│ ├── mouse.py # Mouse tools (8)
│ ├── keyboard.py # Keyboard tools (3)
│ ├── clipboard.py # Clipboard tools (2)
│ ├── window.py # Window management tools (10)
│ ├── process.py # Process management tools (4)
│ ├── smart.py # Smart automation tools (8)
│ └── uia.py # UI Automation API tools (6)
├── extension.js # VS Code extension bootstrap
├── package.json # VS Code extension manifest
├── pyproject.toml # Python package config
└── LICENSE # MIT License______________________________________________________________________
安全考虑
此服务器具有强大的系统控制功能。 仅在您控制MCP客户端的受信任环境中使用。
服务器可以:
- 捕获任何窗口或整个桌面的屏幕截图
- 读写系统剪贴板
- 控制鼠标和键盘输入
- 终止进程
- 启动应用程序
推荐做法
- 仅在需要时启用 --不使用时通过VS代码设置禁用
- 查看自动化日志 --所有工具调用都记录到stderr
- 在沙盒环境中进行测试 首先
- 限制MCP客户端访问 --限制谁可以调用服务器
- 注意:PyAutoGUI故障保护功能已禁用,无法实现不间断自动化
______________________________________________________________________
故障排除
| 问题 | 解决方案 |
|---|---|
TesseractNotFoundError | 从以下位置安装https://github.com/UB-Mannheim/tesseract/wiki并添加到PATH |
PermissionError: Access is denied | 以管理员身份运行VS Code/MCP客户端 |
ModuleNotFoundError: No module named 'mcp' | pip install -e . 或 pip install win32-mcp-server |
Window not found: [title] | 使用部分标题。跑 list_windows 查看确切的标题。模糊匹配是自动的。 |
| OCR返回空/乱码文本 | 尝试 preprocess: "dark_bg" 或 "high_contrast" 为了获得更好的结果 |
| HiDPI上的坐标错误 | 服务器自动启用DPI感知。跑 health_check 以验证DPI设置。 |
______________________________________________________________________
依赖项
| 包装 | 用途 |
|---|---|
| 主控程序 | 模型上下文协议SDK |
| 海量存储系统 | 快速跨平台屏幕截图 |
| 枕头 | 图像处理和编码 |
| 数值Python | OCR图像预处理 |
| PyAutoGUI | 鼠标和键盘自动化 |
| PyGetWindow | 窗口枚举和控制 |
| 剪贴板工具 | 剪贴板操作 |
| 小公主 | Tesseract OCR包装 |
| psutil | 流程管理 |
| RapidFuzz | 快速模糊字符串匹配 |
| UI自动化 | Windows UI自动化API |
______________________________________________________________________
贡献
欢迎投稿!
- 分叉存储库
- 创建要素分支(
git checkout -b feature/my-feature) - 提交您的更改(
git commit -am 'Add my feature') - 推到分支(
git push origin feature/my-feature) - 打开拉取请求
______________________________________________________________________
许可证
MIT许可证——见 许可证 文件。
链接
- 仓库: https://github.com/RandyNorthrup/win32-mcp-server
- PyPI: https://pypi.org/project/win32-mcp-server/
- VS代码市场: https://marketplace.visualstudio.com/items?itemName=RandyNorthrup.win32-mcp检查员
- 问题: https://github.com/RandyNorthrup/win32-mcp-server/issues
- MCP规范: https://modelcontextprotocol.io/
______________________________________________________________________
作者: 兰迪·诺斯鲁普 专为Windows自动化和AI代理而构建
