一个模型上下文协议(MCP)服务器,通过WinRM和SSH PowerShell协议提供远程Windows服务器管理和故障排除功能。
此MCP服务器提供了一个安全接口,使AI助手能够通过WinRM(主要)或SSH(备用)协议远程连接到Windows服务器,使用PowerShell命令诊断问题并应用解决方案。
WinRM(主要) - Windows远程管理协议,用于原生Windows远程管理
SSH PowerShell(备用) - 基于SSH的PowerShell执行,适用于安装了OpenSSH的服务器
test_connection - 使用ping、WinRM和SSH端口检查测试与Windows服务器的连接diagnose_system - 收集全面的系统信息以诊断问题execute_command - 在远程服务器上执行PowerShell或CMD命令check_service - 检查Windows服务状态并提供管理选项troubleshoot_application - 故障排查特定的应用程序,这些应用程序崩溃或无法正常工作apply_solution - 应用PowerShell解决方案脚本以修复已识别的问题get_performance_metrics - 获取当前CPU、内存、磁盘和网络指标view_logs - 查看特定服务器和日期的故障排查日志docker mcp命令)对于WinRM访问(推荐):
winrm quickconfig)Enable-PSRemoting)对于SSH备用(可选):
git clone https://github.com/Cosmicjedi/windows-admin-mcp.git
cd windows-admin-mcp
docker build -t windows-admin-mcp-server .
# 创建本地日志目录
mkdir -p ~/windows-admin-logs
# 设置为环境变量
export WINDOWS_ADMIN_LOG_DIR=~/windows-admin-logs
# 如果不存在,则创建目录
mkdir -p ~/.docker/mcp/catalogs
# 创建或编辑custom.yaml
nano ~/.docker/mcp/catalogs/custom.yaml
在custom.yaml中添加以下条目:
version: 2
name: custom
displayName: 自定义MCP服务器
registry:
windows-admin:
description: "通过WinRM和SSH进行远程Windows服务器管理"
title: "Windows Admin MCP"
type: server
dateAdded: "2025-09-24T00:00:00Z"
image: windows-admin-mcp-server:latest
ref: ""
readme: ""
toolsUrl: ""
source: ""
upstream: ""
icon: ""
tools:
- name: test_connection
- name: diagnose_system
- name: execute_command
- name: check_service
- name: troubleshoot_application
- name: apply_solution
- name: get_performance_metrics
- name: view_logs
env:
- name: WINDOWS_ADMIN_LOG_DIR
value: "/app/logs"
metadata:
category: 监控
tags:
- windows
- administration
- troubleshooting
- powershell
- winrm
- ssh
- remote
license: MIT
owner: local
# 编辑注册表文件
nano ~/.docker/mcp/registry.yaml
在现有的registry:键下添加以下条目:
registry:
# ... 已有的服务器 ...
windows-admin:
ref: ""
找到你的Claude Desktop配置文件:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.config/Claude/claude_desktop_config.json编辑文件并添加你的自定义目录:
{
"mcpServers": {
"mcp-toolkit-gateway": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v", "/var/run/docker.sock:/var/run/docker.sock",
"-v", "[YOUR_HOME]/.docker/mcp:/mcp",
"-v", "[YOUR_LOG_DIR]:/app/logs",
"docker/mcp-gateway",
"--catalog=/mcp/catalogs/docker-mcp.yaml",
"--catalog=/mcp/catalogs/custom.yaml",
"--config=/mcp/config.yaml",
"--registry=/mcp/registry.yaml",
"--tools-config=/mcp/tools.yaml",
"--transport=stdio"
]
}
}
}
在Claude Desktop中,你可以询问:
Claude Desktop → MCP网关 → Windows Admin MCP服务器
↓
[WinRM/SSH]
↓
Windows服务器
↓
本地日志文件
(/app/logs/hostname-MMDDYYYY.log)
主要方法:WinRM
备用方法:SSH PowerShell
服务器会自动为每个服务器创建每日日志文件:
{hostname}-{MMDDYYYY}.logWINDOWS_ADMIN_LOG_DIR环境变量配置/app/logs# 快速配置
winrm quickconfig
# 或手动配置
Enable-PSRemoting -Force
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*"
Set-Service WinRM -StartupType Automatic
Start-Service WinRM
# 对于HTTPS(更安全)
New-SelfSignedCertificate -DnsName "servername" -CertStoreLocation Cert:\LocalMachine\My
New-Item -Path WSMan:\LocalHost\Listener -Transport HTTPS -Address * -CertificateThumbPrint (Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.Subject -eq "CN=servername"}).Thumbprint
# 安装OpenSSH服务器
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
# 启动并启用SSH
Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'
# 配置防火墙
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
WinRM错误:
winrm quickconfigSet-Item WSMan:\localhost\Client\TrustedHosts -Value "*"Get-Service WinRMSSH错误:
Get-Service sshdTest-NetConnection -Port 22C:\ProgramData\ssh\sshd_config身份验证错误:
DOMAIN\usernamewindows_admin_server.py中添加函数@mcp.tool()装饰器# 设置测试环境变量
export WINDOWS_ADMIN_LOG_DIR="./logs"
# 直接运行
python windows_admin_server.py
# 测试MCP协议
echo '{"jsonrpc":"2.0","method":"tools/list","id":1}' | python windows_admin_server.py
# 测试WinRM连接
python -c "from winrm import Session; s = Session('http://server:5985/wsman', auth=('user', 'pass')); print(s.run_ps('hostname').std_out)"
mcp[cli] - MCP服务器框架pywinrm - Windows远程管理库requests-ntlm - WinRM的NTLM身份验证asyncssh - 异步SSH库作为备用aiofiles - 异步文件操作httpx - HTTP客户端库MIT许可证