Windows-MCP.Net

AIDotNet/Windows-MCP.Net

3.6

If you are the rightful owner of Windows-MCP.Net and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

A .NET-based Windows desktop automation MCP server enabling AI assistants to interact with the Windows desktop environment.

Tools
5
Resources
0
Prompts
0

Windows MCP.Net

| 中文

一个基于 .NET 的 Windows 桌面自动化 MCP (Model Context Protocol) 服务器,为 AI 助手提供与 Windows 桌面环境交互的能力。

📋 目录

🚀 快速开始

前置要求

  • Windows 操作系统
  • .NET 10.0 Runtime 或更高版本

重要提示: 本项目需要 .NET 10 才能运行,请先确保你的本地安装了 .NET 10。如果尚未安装,请访问 .NET 10 下载页面 进行下载和安装。

1. MCP 客户端配置

在您的 MCP 客户端配置中添加以下配置:

使用全局安装的工具(推荐)
{
    "mcpServers": {
     "WindowsMCP.Net": {
      "type": "stdio",
      "command": "dnx",
      "args": ["WindowsMCP.Net@", "--yes"],
      "env": {}
    }
    }
}
使用项目源码直接运行(开发模式)

方式一:工作区配置

在项目根目录创建 .vscode/mcp.json 文件:

{
  "mcpServers": {
    "Windows-MCP.Net-Dev": {
      "type": "stdio",
      "command": "dotnet",
      "args": ["run", "--project", "src/Windows-MCP.Net.csproj"],
      "cwd": "${workspaceFolder}",
      "env": {}
    }
  }
}

方式二:用户配置

通过VS Code命令面板运行 MCP: Open User Configuration,添加:

{
  "mcpServers": {
    "Windows-MCP.Net-Local": {
      "type": "stdio",
      "command": "dotnet",
      "args": ["run", "--project", "src/Windows-MCP.Net.csproj"],
      "env": {}
    }
  }
}

注意: 使用项目源码方式便于开发调试,修改代码后无需重新安装即可生效。VS Code 1.102+ 版本支持MCP服务器的自动发现和管理。

2. 安装和运行

方式一:全局安装(推荐)
dotnet tool install --global WindowsMCP.Net
方式二:从源码运行
# 克隆仓库
git clone https://github.com/AIDotNet/Windows-MCP.Net.git
cd Windows-MCP.Net

# 构建项目
dotnet build

# 运行项目
dotnet run --project src/Windows-MCP.Net.csproj

3. 开始使用

配置完成后,重启您的MCP客户端,即可开始使用Windows桌面自动化功能!

🚀 功能特性

核心功能

  • 应用程序启动: 通过名称从开始菜单启动应用程序
  • PowerShell 集成: 执行 PowerShell 命令并返回结果
  • 桌面状态捕获: 获取当前桌面状态,包括活动应用、UI 元素等
  • 剪贴板操作: 复制和粘贴文本内容
  • 鼠标操作: 点击、拖拽、移动鼠标光标
  • 键盘操作: 文本输入、按键操作、快捷键组合
  • 窗口管理: 调整窗口大小、位置,切换应用程序
  • 滚动操作: 在指定坐标进行滚动操作
  • 网页抓取: 获取网页内容并转换为 Markdown 格式
  • 浏览器操作: 在默认浏览器中打开指定URL
  • 截图功能: 截取屏幕并保存到临时目录
  • 文件系统操作: 文件和目录的创建、读取、写入、复制、移动、删除等操作
  • OCR文字识别: 从屏幕或指定区域提取文字,查找文字位置
  • 系统控制: 调节屏幕亮度、系统音量、屏幕分辨率等系统设置
  • 等待控制: 在操作间添加延迟

支持的工具

Desktop 桌面操作工具

工具名称功能描述
LaunchTool从开始菜单启动应用程序
PowershellTool执行 PowerShell 命令并返回状态码
StateTool捕获桌面状态信息,包括应用程序和UI元素
ClipboardTool剪贴板复制和粘贴操作
ClickTool鼠标点击操作(支持左键、右键、中键,单击、双击、三击)
TypeTool在指定坐标输入文本,支持清除和回车
ResizeTool调整窗口大小和位置
SwitchTool切换到指定应用程序窗口
ScrollTool在指定坐标或当前鼠标位置滚动
DragTool从源坐标拖拽到目标坐标
MoveTool移动鼠标光标到指定坐标
ShortcutTool执行键盘快捷键组合
KeyTool按下单个键盘按键
WaitTool暂停执行指定秒数
ScrapeTool抓取网页内容并转换为Markdown格式
ScreenshotTool截取屏幕并保存到临时目录,返回图片路径
OpenBrowserTool在默认浏览器中打开指定URL

FileSystem 文件系统工具

工具名称功能描述
ReadFileTool读取指定文件的内容
WriteFileTool向文件写入内容
CreateFileTool创建新文件并写入指定内容
CopyFileTool复制文件到指定位置
MoveFileTool移动或重命名文件
DeleteFileTool删除指定文件
GetFileInfoTool获取文件信息(大小、创建时间等)
ListDirectoryTool列出目录中的文件和子目录
CreateDirectoryTool创建新目录
DeleteDirectoryTool删除目录及其内容
SearchFilesTool在指定目录中搜索文件

OCR 图像识别工具

工具名称功能描述
ExtractTextFromScreenTool使用OCR从整个屏幕提取文字
ExtractTextFromRegionTool使用OCR从屏幕指定区域提取文字
FindTextOnScreenTool使用OCR在屏幕上查找指定文字
GetTextCoordinatesTool获取屏幕上文字的坐标位置
ExtractTextFromFileTool使用OCR从图像文件中提取文字

UI元素识别工具

工具名称功能描述
FindElementByTextTool通过文本内容查找UI元素
FindElementByClassNameTool通过类名查找UI元素
FindElementByAutomationIdTool通过自动化ID查找UI元素
GetElementPropertiesTool获取指定坐标元素的属性信息
WaitForElementTool等待指定元素出现在界面上

SystemControl 系统控制工具

工具名称功能描述
BrightnessTool调节屏幕亮度,支持增减和设置具体百分比
VolumeTool调节系统音量,支持增减和设置具体百分比
ResolutionTool设置屏幕分辨率(高、中、低三档)

💡 使用场景

🤖 AI助手桌面自动化

  • 智能客服机器人: AI助手可以自动操作Windows应用程序,帮助用户完成复杂的桌面任务
  • 语音助手集成: 结合语音识别,通过语音指令控制桌面应用程序
  • 智能办公助手: AI助手自动处理日常办公任务,如文档整理、邮件发送等

📊 办公自动化

  • 数据录入自动化: 自动从网页或文档中提取数据并录入到Excel或其他应用程序
  • 报告生成: 自动收集系统信息、截图,生成格式化的报告文档
  • 批量文件处理: 自动整理、重命名、分类大量文件和文档
  • 邮件自动化: 自动发送定期报告、通知邮件

🧪 软件测试与质量保证

  • UI自动化测试: 模拟用户操作,自动测试桌面应用程序的功能
  • 回归测试: 自动执行重复性测试用例,确保软件质量
  • 性能监控: 自动收集应用程序性能数据,生成监控报告
  • Bug复现: 自动重现用户报告的问题,辅助开发人员调试

🎯 业务流程自动化

  • 客户服务: 自动处理客户请求,更新CRM系统
  • 订单处理: 自动从多个渠道收集订单信息并录入系统
  • 库存管理: 自动更新库存数据,生成补货提醒
  • 财务对账: 自动对比不同系统的财务数据,标记差异

🔍 数据采集与分析

  • 网页数据抓取: 自动从多个网站收集产品价格、新闻等信息
  • 竞品分析: 定期收集竞争对手的产品信息和价格数据
  • 市场调研: 自动收集和整理市场数据,生成分析报告
  • 社交媒体监控: 监控品牌提及,自动收集用户反馈

🎮 游戏与娱乐

  • 游戏辅助: 自动执行重复性游戏任务(请遵守游戏规则)
  • 直播助手: 自动管理直播软件,切换场景,发送消息
  • 媒体管理: 自动整理音乐、视频文件,更新媒体库

🏥 医疗与健康

  • 病历录入: 自动将纸质病历转换为电子格式
  • 医疗图像分析: 结合OCR技术,自动提取医疗报告中的关键信息
  • 预约管理: 自动处理患者预约请求,更新医院管理系统

🏫 教育与培训

  • 在线考试: 自动批改选择题,生成成绩报告
  • 课程管理: 自动更新课程信息,发送通知给学生
  • 学习进度跟踪: 自动记录学生的学习活动,生成进度报告

🏭 制造业与物流

  • 生产数据采集: 自动从生产设备收集数据,更新ERP系统
  • 质量检测: 结合图像识别,自动检测产品质量
  • 物流跟踪: 自动更新货物状态,发送跟踪信息给客户

🔧 系统运维

  • 服务器监控: 自动检查服务器状态,生成监控报告
  • 日志分析: 自动分析系统日志,识别异常模式
  • 备份管理: 自动执行数据备份,验证备份完整性
  • 软件部署: 自动化软件安装和配置流程

📸 演示截图

文本输入演示

通过 TypeTool 在记事本中自动输入文本:

文本输入演示

网页搜索演示

使用 ScrapeTool 打开并搜索网页内容:

网页搜索演示

📹 演示视频

完整的桌面自动化操作演示:

🛠️ 技术栈

  • .NET 10.0: 基于最新的 .NET 框架
  • Model Context Protocol: 使用 MCP 协议进行通信
  • Microsoft.Extensions.Hosting: 应用程序托管框架
  • Serilog: 结构化日志记录
  • HtmlAgilityPack: HTML 解析和网页抓取
  • ReverseMarkdown: HTML 到 Markdown 转换

🏗️ 项目结构

src/
├── Windows-MCP.Net/         # 主项目
│   ├── .mcp/                # MCP 服务器配置
│   │   └── server.json      # 服务器配置文件
│   ├── Exceptions/          # 自定义异常类(待扩展)
│   ├── Interface/           # 服务接口定义
│   │   ├── IDesktopService.cs   # 桌面服务接口
│   │   ├── IFileSystemService.cs # 文件系统服务接口
│   │   └── IOcrService.cs       # OCR服务接口
│   ├── Models/              # 数据模型(待扩展)
│   ├── Prompts/             # 提示模板(待扩展)
│   ├── Services/            # 核心服务实现
│   │   ├── DesktopService.cs    # 桌面操作服务
│   │   ├── FileSystemService.cs # 文件系统服务
│   │   └── OcrService.cs        # OCR服务
│   ├── Tools/               # MCP 工具实现
│   │   ├── Desktop/             # 桌面操作工具
│   │   │   ├── ClickTool.cs         # 点击工具
│   │   │   ├── ClipboardTool.cs     # 剪贴板工具
│   │   │   ├── DragTool.cs          # 拖拽工具
│   │   │   ├── GetWindowInfoTool.cs # 窗口信息工具
│   │   │   ├── KeyTool.cs           # 按键工具
│   │   │   ├── LaunchTool.cs        # 启动应用工具
│   │   │   ├── MoveTool.cs          # 鼠标移动工具
│   │   │   ├── OpenBrowserTool.cs   # 浏览器打开工具
│   │   │   ├── PowershellTool.cs    # PowerShell执行工具
│   │   │   ├── ResizeTool.cs        # 窗口调整工具
│   │   │   ├── ScrapeTool.cs        # 网页抓取工具
│   │   │   ├── ScreenshotTool.cs    # 截图工具
│   │   │   ├── ScrollTool.cs        # 滚动工具
│   │   │   ├── ShortcutTool.cs      # 快捷键工具
│   │   │   ├── StateTool.cs         # 桌面状态工具
│   │   │   ├── SwitchTool.cs        # 应用切换工具
│   │   │   ├── TypeTool.cs          # 文本输入工具
│   │   │   ├── UIElementTool.cs     # UI元素操作工具
│   │   │   └── WaitTool.cs          # 等待工具
│   │   ├── FileSystem/          # 文件系统工具
│   │   │   ├── CopyFileTool.cs      # 文件复制工具
│   │   │   ├── CreateDirectoryTool.cs # 目录创建工具
│   │   │   ├── CreateFileTool.cs    # 文件创建工具
│   │   │   ├── DeleteDirectoryTool.cs # 目录删除工具
│   │   │   ├── DeleteFileTool.cs    # 文件删除工具
│   │   │   ├── GetFileInfoTool.cs   # 文件信息工具
│   │   │   ├── ListDirectoryTool.cs # 目录列表工具
│   │   │   ├── MoveFileTool.cs      # 文件移动工具
│   │   │   ├── ReadFileTool.cs      # 文件读取工具
│   │   │   ├── SearchFilesTool.cs   # 文件搜索工具
│   │   │   └── WriteFileTool.cs     # 文件写入工具
│   │   └── OCR/                 # OCR识别工具
│   │       ├── ExtractTextFromRegionTool.cs # 区域文本提取工具
│   │       ├── ExtractTextFromScreenTool.cs # 屏幕文本提取工具
│   │       ├── FindTextOnScreenTool.cs      # 屏幕文本查找工具
│   │       └── GetTextCoordinatesTool.cs    # 文本坐标获取工具
│   ├── Program.cs           # 程序入口点
│   └── Windows-MCP.Net.csproj   # 项目文件
└── Windows-MCP.Net.Test/    # 测试项目
    ├── DesktopToolsExtendedTest.cs  # 桌面工具扩展测试
    ├── FileSystemToolsExtendedTest.cs # 文件系统工具扩展测试
    ├── OCRToolsExtendedTest.cs      # OCR工具扩展测试
    ├── ToolTest.cs                  # 工具基础测试
    ├── UIElementToolTest.cs         # UI元素工具测试
    └── Windows-MCP.Net.Test.csproj  # 测试项目文件

🚧 功能扩展建议

计划中的功能

高级UI识别与交互
  • UI元素识别增强: 支持更多UI框架(WPF、WinForms、UWP)
  • OCR文字识别优化: 多语言支持,提升识别准确率
  • 智能等待机制: 动态等待元素加载完成
文件系统操作增强
  • 高级文件搜索: 支持内容搜索、正则表达式匹配
  • 批量文件操作: 支持批量复制、移动、重命名
  • 文件监控: 实时监控文件系统变化
系统监控与性能分析
  • 系统资源监控: CPU、内存、磁盘、网络使用情况
  • 进程管理: 进程列表获取、性能监控、进程控制
  • 性能分析报告: 生成详细的系统性能报告
多媒体处理能力
  • 音频控制: 系统音量控制、音频设备管理
  • 图像处理: 图片缩放、裁剪、格式转换
  • 屏幕录制: 支持屏幕录制和回放
网络与通信功能
  • 网络诊断: Ping、端口扫描、连通性测试
  • HTTP客户端: 支持RESTful API调用
  • WiFi管理: WiFi网络扫描和连接管理
安全性与权限管理
  • 权限检查: 用户权限验证和管理
  • 数据加密: 敏感数据加密存储
  • 操作审计: 完整的操作日志和审计追踪

开发路线图

第一阶段(高优先级)- 核心功能增强
  • ✅ UI元素识别工具(已完成Windows API实现)
  • 🔄 文件管理工具增强
  • 📋 系统监控工具
  • 🔒 基础安全工具
第二阶段(中优先级)- 功能扩展
  • 📋 OCR文字识别优化
  • 📋 高级文件搜索
  • 📋 音频控制工具
  • 📋 网络诊断工具
  • 📋 Excel操作支持
第三阶段(低优先级)- 高级功能
  • 📋 图像处理工具
  • 📋 任务调度系统
  • 📋 数据库操作支持
  • 📋 宏录制与回放

🔧 配置

日志配置

项目使用 Serilog 进行日志记录,日志文件保存在 logs/ 目录下:

  • 控制台输出:实时日志显示
  • 文件输出:按天滚动,保留 31 天
  • 日志级别:Debug 及以上

环境变量

变量名描述默认值
ASPNETCORE_ENVIRONMENT运行环境Production

📝 许可证

本项目基于 MIT 许可证开源。详情请参阅 文件。

🔗 相关链接

🤝 贡献指南

我们欢迎社区贡献!如果您想为项目做出贡献,请遵循以下步骤:

开发环境设置

  1. 克隆仓库

    git clone https://github.com/AIDotNet/Windows-MCP.Net.git
    cd Windows-MCP.Net
    
  2. 安装依赖

    dotnet restore
    
  3. 运行测试

    dotnet test
    
  4. 构建项目

    dotnet build
    

贡献流程

  1. Fork 本仓库
  2. 创建功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 创建 Pull Request

代码规范

  • 遵循 C# 编码规范
  • 为新功能添加单元测试
  • 更新相关文档
  • 确保所有测试通过

问题报告

在报告问题时,请提供:

  • 操作系统版本
  • .NET 版本
  • 详细的错误信息
  • 重现步骤

📞 支持

如果您遇到问题或有建议,请:

  1. 查看 Issues
  2. 创建新的 Issue
  3. 参与讨论
  4. 查看 Wiki 获取更多帮助

注意: 本工具需要适当的 Windows 权限来执行桌面自动化操作。请确保在受信任的环境中使用。

免责声明: 使用本工具进行自动化操作时,请遵守相关法律法规和软件使用协议。开发者不承担因误用工具而产生的任何责任。