Windows诊断MCP服务器
一种模型上下文协议(MCP)服务器,为AI代理提供全面的Windows系统诊断功能。此服务器允许代理访问Windows事件日志、崩溃信息、系统正常运行时间、稳定性分析和Windows注册表诊断。
特性
系统诊断
- 系统诊断:全面分析Windows事件、崩溃和系统健康状况
- BSOD检测:识别蓝屏死机事件和关键系统错误
- 停机分析:跟踪预期和意外的系统停机
- 应用程序崩溃监控:监控应用程序崩溃和故障
- 系统稳定性评分:提供稳定性分析和可操作的建议
- 正常运行时间跟踪:报告系统正常运行时间和启动信息
注册表诊断
- 注册表搜索:按关键字搜索Windows注册表
- 启动程序分析:分析启动程序中的可疑条目
- 系统组件扫描:扫描服务、驱动程序和卸载条目以查找问题
- 孤儿入境检测:查找指向不存在文件的孤立注册表项
- 注册健康评估:总体注册健康评估
- 安全风险扫描:扫描注册表中的潜在安全风险
screenshot of MCP use in Claude Desktop
安装
先决条件
- Windows 10/11或Windows服务器
- Node.js 18+
- PowerShell 5.1+(内置于Windows中)
- 管理员权限(建议使用完整功能)
- PowerShell执行策略配置为允许脚本执行
设置步骤
- 克隆或下载文件:
mkdir windows-diagnostics-mcp
cd windows-diagnostics-mcp- 保存TypeScript服务器代码 像
src/index.ts
- 创建package.json 使用提供的配置
- 创建tsconfig.json 使用提供的TypeScript配置
- 安装依赖项:
npm install- 配置PowerShell执行策略 (如果尚未设置):
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser或用于全系统访问(需要管理员):
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine- 构建服务器:
npm run build配置
适用于克劳德桌面
将此添加到您的Claude Desktop配置文件中(%APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"windows-diagnostics": {
"command": "node",
"args": ["C:\\path\\to\\your\\windows-diagnostics-mcp\\build\\index.js"],
"env": {
"NODE_ENV": "production"
}
}
}
}重要:要获得完整功能,请以管理员身份运行Claude Desktop,以确保正确访问事件日志和注册表。
对于其他MCP客户端
服务器可以通过以下方式启动:
node build/index.js可用工具
MCP服务器提供以下代理可以使用的工具:
系统诊断工具
1. get_system_diagnostics
全面的系统诊断报告,包括所有事件类型。
参数:
daysBack(数字,默认值:7):回顾事件的天数detailed(boolean,默认值:false):包括详细的事件信息
2. get_shutdown_events
仅获取关机和重启事件。
参数:
daysBack(数字,默认值:7):回顾事件的天数
3. get_bsod_events
获取蓝屏死亡(BSOD)事件。
参数:
daysBack(数字,默认值:7):回顾事件的天数
4. get_system_uptime
获取当前系统正常运行时间和启动信息。
参数: 无
5. analyze_system_stability
分析系统稳定性并提供建议。
参数:
daysBack(数字,默认值:30):稳定性评估分析天数
注册表诊断工具
6. search_registry
按关键字搜索Windows注册表。
参数:
searchTerm(string,必填):要在注册表中搜索的关键字maxResults(数字,默认值:50):返回的最大结果数
7. analyze_startup_programs
分析启动程序中的可疑条目。
参数: 无
8. scan_system_components
扫描服务、驱动程序和卸载条目等系统组件以查找问题。
参数: 无
9. find_orphaned_entries
查找指向不存在文件的孤立注册表项。
参数: 无
10. get_registry_health
获得全面的注册表健康评估。
参数: 无
11. scan_security_risks
扫描注册表以查找潜在的安全风险。
参数: 无
使用示例
一旦配置了与MCP兼容的客户端,代理就可以使用以下命令:
系统诊断
- “检查我的系统上周是否发生任何崩溃”
- “分析我的Windows系统稳定性”
- “显示最近的BSOD事件”
- “我目前的系统正常运行时间是多少?”
- “给我一份全面的诊断报告”
注册表诊断
- “在注册表中搜索与‘Adobe’相关的条目”
- “分析我的启动程序中的可疑条目”
- “检查孤立的注册表项”
- “扫描我的注册表以查找安全风险”
- “给我一个全面的注册表健康评估”
- “扫描系统组件以查找问题”
安全考虑
- 管理员权限:以管理员权限运行,以完成事件日志和注册表访问
- PowerShell执行:服务器执行PowerShell脚本以收集系统信息
- 注册表访问:注册表操作需要适当的权限,可能会影响系统稳定性
- 仅限本地:此服务器只访问本地系统信息,没有网络请求
- 事件日志访问:需要适当的权限才能读取Windows事件日志
- 执行策略:PowerShell执行策略必须允许脚本执行
故障排除
常见问题
- PowerShell执行策略错误:
cannot be loaded because running scripts is disabled on this system解决方案:配置PowerShell执行策略:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser- 拒绝访问错误:
- 以管理员身份运行MCP客户端(例如Claude Desktop) - 某些事件日志和注册表项需要提升权限 - 检查用户帐户权限
- 注册表访问错误:
- 确保注册表访问权限正确 - 某些注册表项需要SYSTEM级访问权限 - 以管理员身份运行以获得完全注册表访问权限
- JSON解析错误:
- 检查PowerShell是否输出有效的JSON - 验证没有向stdout写入其他输出 - 检查PowerShell版本兼容性
- 未找到事件:
- 如果系统稳定,则正常 - 尝试增加 daysBack 参数 - 检查事件日志服务是否正在运行
- 脚本执行被阻止:
- 验证PowerShell执行策略设置 - 检查防病毒软件是否阻止脚本执行 - 确保PowerShell模块未损坏
调试
通过设置环境变量启用调试日志记录:
set DEBUG=mcp:*
node build/index.jsPowerShell执行策略详细信息
服务器需要PowerShell脚本才能执行。常见执行策略:
- 受限的:不允许使用脚本(某些系统上的默认设置)
- 远程签名:允许使用本地脚本,下载的脚本必须签名
- 无限制:允许使用所有脚本(不推荐)
查看当前政策:
Get-ExecutionPolicy此服务器的建议设置:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser监控的事件类型
服务器监视这些Windows事件日志条目:
系统事件
- 1074:系统关闭由用户/应用程序启动
- 1076:记录系统关闭原因
- 6005:事件日志服务已启动(启动)
- 6006:事件日志服务已停止(关闭)
- 6008:检测到意外关机
- 6009:系统已启动
- 6013:报告系统正常运行时间
关键事件
- 41:内核电源严重错误(意外关闭)
- 1001:Windows错误报告BSOD
- 1003:已创建系统崩溃转储
应用程序事件
- 1000:应用程序错误/崩溃
- 1001:应用程序挂起
- 1002:应用程序恢复
硬件/驱动程序事件
- 219:驱动程序加载问题
- 7026:服务启动失败
- 7000:服务启动失败
- 7009:服务超时
- 7031:服务崩溃
注册表区域分析
注册表诊断工具检查:
创业地点
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunHKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunHKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run- 启动文件夹条目
系统组件
- 已安装的服务
- 驱动程序
- 卸载条目
- 系统文件关联
安全相关密钥
- 安全策略
- 用户帐户设置
- 网络配置
- 浏览器设置
输出格式
服务器提供结构化信息,包括:
- 事件时间戳 ISO格式
- 事件描述 用通俗易懂的英语
- 稳定性评分 (0-100刻度)
- 可采取行动的建议
- 系统正常运行时间统计
- 内存转储信息
- 硬件错误摘要
- 注册表项路径和值
- 安全风险评估
- 文件存在验证
发展
要修改或扩展服务器,请执行以下操作:
- 编辑源代码:修改
src/index.ts - 重建:运行
npm run build - 测试:使用MCP检查器或兼容客户端
- 添加工具:遵循MCP SDK模式以获得新的诊断功能
添加新的诊断功能
要添加新的诊断功能:
- 使用其他事件日志查询或注册表操作扩展PowerShell脚本
- 在中添加新的工具定义
ListToolsRequestSchema处理器 - 实现相应的处理程序方法
- 更新文档
- 使用适当的权限进行测试
PowerShell脚本指南
添加新的PowerShell功能时:
- 使用
ConvertTo-Json用于结构化输出 - 使用try-catch块优雅地处理错误
- 使用不同的执行策略进行测试
- 访问前验证注册表项是否存在
- 使用适当的PowerShell cmdlet进行注册表操作
许可证
MIT许可证-有关详细信息,请参阅许可证文件。
贡献
欢迎投稿!拜托:
- 遵循TypeScript的最佳实践
- 使用Windows 10/11进行测试
- 记录新功能
- 确保PowerShell兼容性
- 仔细测试注册表操作
- 包括适当的错误处理
更新日志
v2.0.0版本
- 添加了全面的注册表诊断工具
- 注册表搜索功能
- 启动程序分析
- 系统组件扫描
- 孤立入境检测
- 注册健康评估
- 安全风险扫描
- 增强的PowerShell执行策略文档
v1.0.0
- 初始版本
- 基本诊断能力
- MCP集成
- 稳定性分析
- PowerShell后端
