Windows注册表MCP服务器
一个生产就绪的模型上下文协议(MCP)服务器,为AI模型提供对Windows注册表的受控、安全访问。
建筑
此服务器遵循干净、分层的架构,并严格分离关注点:
┌─────────────────────────────────────────────────────────────┐
│ MCP Protocol Layer │
│ (JSON-RPC, stdio transport, request/response handling) │
└────────────────────┬────────────────────────────────────────┘
│
┌────────────────────▼────────────────────────────────────────┐
│ Application/Use-Case Layer │
│ - Tool Handlers (RegistryToolHandlers) │
│ - Resource Handlers (RegistryResourceHandlers) │
│ - Authorization & Access Control │
└────────────────────┬────────────────────────────────────────┘
│
┌────────────────────▼────────────────────────────────────────┐
│ Domain Layer │
│ - Registry Operations (IRegistryService) │
│ - Domain Models (RegistryKey, RegistryValue) │
│ - Business Rules & Validation │
└────────────────────┬────────────────────────────────────────┘
│
┌────────────────────▼────────────────────────────────────────┐
│ Infrastructure Layer │
│ - WinReg Adapter (wraps Win32 Registry API) │
│ - Configuration Provider │
│ - Logging & Metrics │
└─────────────────────────────────────────────────────────────┘特性
核心能力
- ✅ 读取注册表值 -通过路径验证查询特定的注册表项/值
- ✅ 枚举密钥 -列出特定父键下的子键
- ✅ 枚举值 -列出特定键下的值
- ✅ 写入注册表值 -使用授权创建/更新注册表值
- ✅ 删除注册表项 -使用严格的权限控制删除键/值
- ✅ 查询密钥元数据 -获取密钥信息(修改时间、值计数)
安全特性
- 🔒 路径允许列表 -仅配置的注册表路径可访问
- 🔒 授权级别 -只读、只读、管理员访问控制
- 🔒 数据过滤保护 -枚举深度和值计数的限制
- 🔒 审计日志 -使用相关ID记录的所有操作
- 🔒 速率限制 -可配置的请求速率限制
- 🔒 超时控制 -所有操作都有执行时间限制
可观测性
- 📊 指标 -Prometheus兼容的操作、延迟、错误指标
- 📝 结构化日志记录 -带有相关ID的JSON格式日志
- 🏥 健康检查 -生存、准备和启动健康终点
快速开始
先决条件
- .NET 8.0或更高版本
- Windows操作系统(服务器2016+或Windows 10+)
安装
# Clone the repository
git clone
cd winregcsharp-mcp
# Build the solution
dotnet build
# Run the server
dotnet run --project src/WinRegMcp.Server配置
创建一个 config/allowed_paths.json 文件:
{
"allowed_roots": [
{
"path": "HKEY_CURRENT_USER\\Software\\MyApp",
"access": "read_write",
"max_depth": 5
}
],
"denied_paths": [
"HKEY_LOCAL_MACHINE\\SECURITY",
"HKEY_LOCAL_MACHINE\\SAM"
]
}设置环境变量:
WINREG_MCP_AUTHORIZATION_LEVEL=READ_ONLY
WINREG_MCP_ALLOWED_PATHS_FILE=config/allowed_paths.json
WINREG_MCP_LOG_LEVEL=info可用工具
read_value
读取特定的注册表值。
参数:
path(string):完整注册表路径(例如,“HKEY_CURRENT_USER\\Software\\MyApp”)value_name(string):要读取的值的名称
退货: 值数据和类型信息
write_value
写入或更新注册表值。
参数:
path(string):完整注册表路径value_name(string):值的名称value_data(string):要写入的数据value_type(string):注册表类型(string、DWord、QWord、Binary等)
枚举键
列出注册表路径下的子项。
参数:
path(string):父注册表路径max_depth(整数,可选):最大枚举深度(默认值:1)
退货: 子项名称列表
枚举值
列出注册表项中的所有值。
参数:
path(string):注册表项路径
退货: 值名称和类型列表
获取密钥信息
获取注册表项的元数据。
参数:
path(string):注册表项路径
退货: 密钥信息(子密钥计数、值计数、上次修改时间)
delete_value
删除注册表值。
参数:
path(string):注册表项路径value_name(string):要删除的值的名称
delete_key
删除注册表项(需要ADMIN授权)。
参数:
path(string):要删除的注册表项路径
安全
默认允许路径(READ_ONLY)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersionHKEY_CURRENT_USER\Software(深度有限)
总是拒绝路径
HKEY_LOCAL_MACHINE\SECURITYHKEY_LOCAL_MACHINE\SAMHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
授权级别
- 只读:只能从允许的路径读取
- 读写:可以读取和写入允许的路径
- 管理员:完全访问(需要明确配置)
发展
项目结构
src/
├── WinRegMcp.Domain/ # Domain models and interfaces
│ ├── Models/ # Registry domain models
│ ├── Services/ # Domain service interfaces
│ └── Exceptions/ # Domain exceptions
├── WinRegMcp.Infrastructure/ # External adapters
│ ├── Registry/ # Win32 Registry adapter
│ ├── Configuration/ # Config providers
│ └── Observability/ # Logging and metrics
├── WinRegMcp.Application/ # Use cases and handlers
│ ├── Handlers/ # MCP tool handlers
│ ├── Authorization/ # Access control
│ └── DTOs/ # MCP contract DTOs
└── WinRegMcp.Server/ # MCP server entry point
└── Program.cs
tests/
└── WinRegMcp.Tests/ # Unit and integration tests运行测试
dotnet test生产大楼
dotnet publish -c Release -r win-x64 --self-contained版本控制
当前版本: 1.0.0
- 重大变更增量主版本
- 新的可选参数增量次要版本
- Bug修复增量补丁版本
- 报废通知期:3个月
许可证
MIT许可证-有关详细信息,请参阅许可证文件
贡献
欢迎投稿!请阅读CONTRIBUTING.md了解指南。
