返回市场
MCP代理

MCP代理

作者:UnitOneAI2 星标更新:2025-09-26

项目介绍

技术文档摘要

Windows 365 MCP 服务器

.NET License: MIT Model Context Protocol Windows 365

一个全面的MCP服务器,使AI助手能够通过Microsoft Graph API发现、配置和管理Windows 365云PC。使用C#/.NET构建,并完全符合MCP规范2025-06-18。提供了初始工具集,我们将继续构建和提供工具。初始版本使用STDIO,而未来版本还将包括可流式传输的HTTP作为传输方式。

目录

  • 包含的内容
  • 关键特性
  • 前提条件
  • 快速开始
  • 现在你可以做什么
  • [MCP工具(AI操作)](#️-mcp工具-ai操作)
  • [MCP提示(引导工作流程)](#-mcp提示-引导工作流程)
  • [MCP资源(实时数据)](#-mcp资源-实时数据)
  • [常见用例](#-常见用例)
  • [故障排除](#-故障排除)
  • [架构](#️-架构)
  • [身份验证与传输](#-身份验证--传输)
  • [安全与合规性](#-安全--合规性)
  • [MCP客户端示例](#-mcp客户端示例)
  • [路线图](#️-路线图)
  • [测试与验证](#-测试--验证)
  • [Windows 365配置流程](#-windows-365配置流程)
  • [贡献](#-贡献)
  • [许可证](#-许可证)
  • [关于UNITONE](#-关于unitone)
  • [支持与社区](#-支持--社区)

✨ 包含的内容

🛠️ MCP工具(AI控制的操作)

  • 13个工具:Windows 365发现、监控、许可、用户管理和策略管理
  • 全面覆盖从只读发现到许可分配的Windows 365操作

💬 MCP提示(用户引导的工作流程)

  • 6个提示:云PC故障排查、策略分析、许可优化、部署规划、用户配置、安全评估
  • 预建的工作流程适用于常见的Windows 365场景

📊 MCP资源(实时数据访问)

  • 7个资源:云PC列表、单个PC详细信息、配置策略、许可、用户许可、组列表、租户概要
  • 实时库存、健康监控和文档

🔧 MCP实用工具

  • 自动补全:针对工具和提示的Windows 365特定自动补全
  • 分页:基于游标的大型数据集分页
  • 日志记录:符合MCP标准的结构化日志记录

🔐 企业级安全

  • DefaultAzureCredential:使用多个凭证源的安全认证
  • STDIO传输:符合MCP标准的通信协议
  • 结构化日志记录:所有日志发送到stderr以正确分离MCP协议

🚀 关键特性

  • 完全符合MCP规范 - 使用官方C# SDK完整实现MCP 2025-06-18规范
  • 零配置发现 - 通过Microsoft Graph API自动检测云PC和许可
  • 生产环境认证 - 支持环境变量的DefaultAzureCredential
  • 实时数据 - 实时云PC库存、策略和许可信息
  • 企业级安全 - 带有结构化日志记录的安全STDIO传输
  • 生产就绪 - 已使用真实的Windows 365租户和Graph API端点进行测试

📋 前提条件

  • .NET 9.0 SDK
  • 活动订阅的Windows 365租户
  • 具有Microsoft Graph权限的Entra ID应用注册

⚡ 快速开始

按照这些确切步骤进行成功设置:

第一步:克隆并构建项目

git clone https://github.com/unitone-ai/windows-365-mcp-server.git
cd windows-365-mcp-server
dotnet restore src/Windows365.Mcp.Server/Windows365.Mcp.Server.csproj
dotnet build src/Windows365.Mcp.Server/Windows365.Mcp.Server.csproj

第二步:配置Entra ID应用注册

  1. 转到Azure门户应用注册新建注册
  2. 名称Windows 365 MCP Server
  3. 重定向URI:留空(对于STDIO传输不需要)
  4. 创建后,转到API权限并授予以下应用程序权限:
    • CloudPC.ReadWrite.All
    • User.Read.All
    • Group.Read.All
    • Directory.Read.All
    • LicenseAssignment.ReadWrite.All
    • DeviceManagementConfiguration.ReadWrite.All
  5. 点击授予管理员同意(这是必需的!)
  6. 转到证书和机密新客户端机密 → 复制机密值
  7. 从概述页面复制应用程序(客户端)ID目录(租户)ID

第三步:配置认证(.env文件)

重要:在项目根目录创建一个.env文件:

# 复制模板
cp .env.template .env

# 使用步骤2中的实际值编辑.env
AZURE_TENANT_ID=your-tenant-id-from-overview-page
AZURE_CLIENT_ID=your-client-id-from-overview-page
AZURE_CLIENT_SECRET=your-client-secret-from-step-6

示例.env文件

AZURE_TENANT_ID=12345678-1234-1234-1234-123456789012
AZURE_CLIENT_ID=87654321-4321-4321-4321-210987654321
AZURE_CLIENT_SECRET=abcdef123456789~something.very.long.and.secret

第四步:测试服务器(可选)

使用MCP Inspector测试服务器:


# 直接测试服务器
dotnet run --project src/Windows365.Mcp.Server/Windows365.Mcp.Server.csproj

# 或使用MCP Inspector进行交互式测试
npx @modelcontextprotocol/inspector dotnet run --project .

这将在http://localhost:6274/启动MCP Inspector,并使用会话令牌进行身份验证。

配置MCP Inspector(使用你的路径):

  • 传输:STDIO
  • 命令:dotnet
  • 参数:run --project /YOUR-FULL-PATH-HERE/src/Windows365.Mcp.Server
  • 环境变量:
AZURE_TENANT_ID=YOUR-TENANT-ID
AZURE_CLIENT_ID=YOUR-CLIENT-ID
AZURE_CLIENT_SECRET=YOUR-CLIENT-SECRET

第五步:连接到Claude桌面

5a. 查找你的Claude桌面配置文件

定位配置文件

  • macOS~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json%

5b. 获取项目的绝对路径

# 在项目目录中运行此命令以获取完整路径
pwd
# 复制输出(例如:/Users/yourname/windows-365-mcp-server)

5c. 编辑Claude桌面配置

打开配置文件并添加以下确切配置:

{
  "mcpServers": {
    "windows365": {
      "command": "dotnet",
      "args": ["run", "--project", "/YOUR-FULL-PATH-HERE/windows-365-mcp-server/src/Windows365.Mcp.Server"],
      "env": {
        "WINDOWS365_ENV_PATH": "/YOUR-FULL-PATH-HERE/windows-365-mcp-server/.env"
      }
    }
  }
}

服务器将从WINDOWS365_ENV_PATH设置的路径加载.env。或者,你可以在env块中直接设置AZURE_TENANT_IDAZURE_CLIENT_IDAZURE_CLIENT_SECRET而不是使用.env文件。

5d. 最终步骤

  1. 保存文件
  2. 完全重启Claude桌面(退出并重新打开)
  3. 在Claude桌面中开始新的对话
  4. 验证是否正常工作:询问Claude“你有哪些可用的Windows 365工具?”

✅ 成功:你应该看到Claude响应列出Windows 365管理工具!


🎯 现在你可以做什么

完成设置后,你可以向Claude(或其他MCP客户端)询问如下内容:

  • “显示我们租户中的所有云PC”
  • “检查我们组织中的Windows 365许可”
  • “帮助我解决云PC问题”
  • “带我了解如何配置新用户”

服务器提供了13个工具、6个提示和7个资源,用于全面的Windows 365管理。


🛠️ MCP工具(AI操作)

总计:13个工具,分为4类,用于全面的Windows 365管理:

云PC发现与管理(4个工具)

工具目的类型
DiscoverCloudPCs列出并筛选Windows 365租户中的云PC,具有搜索功能只读
GetCloudPCDetails获取特定云PC的详细信息只读
EndGracePeriod立即结束特定云PC的宽限期修改
RebootCloudPC重启特定云PC修改

用户与组管理(3个工具)

工具目的类型
SearchUsers搜索并列出Entra ID租户中的用户,具有高级过滤功能只读
GetUserDetails获取特定用户的详细信息,包括许可分配和成员资格只读
SearchGroups搜索并列出Entra ID租户中的组,具有配置策略关联只读

许可管理(4个工具)

工具目的类型
CheckUserLicenses检查特定用户的Windows 365许可分配只读
GetWindows365Licenses获取Windows 365许可,包括已消耗和可用许可的信息只读
AssignLicense将Windows 365许可分配给用户修改
UnassignLicense从用户处取消分配Windows 365许可修改

配置策略管理(2个工具)

工具目的类型
GetProvisioningPolicies获取Windows 365中的所有配置策略只读
GetProvisioningPolicyDetails获取特定配置策略的详细信息及其分配只读

示例:发现所有云PC

{
  "name": "DiscoverCloudPCs",
  "arguments": {
    "top": 50
  }
}

结果:列出所有云PC的状态和用户分配

示例:获取特定云PC的详细信息

{
  "name": "GetCloudPCDetails",
  "arguments": {
    "cloudPcId": "12345678-1234-1234-1234-123456789012"
  }
}

结果:完整的云PC信息,包括服务计划、配置策略和设备详情

示例:获取所有Windows 365许可

{
  "name": "GetWindows365Licenses",
  "arguments": {}
}

结果:所有Windows 365许可的完整列表,包括已消耗和可用单位,以及可用性计算


💬 MCP提示(引导工作流程)

提示场景它的作用
cloud_pc_troubleshootIT支持引导通过云PC诊断工作流程
provisioning_policy_analysisIT管理员分析和优化配置策略
license_optimization财务/IT分析和优化许可分配
deployment_planningIT规划为Windows 365推出创建部署计划
user_provisioningIT管理员引导新用户的云PC配置工作流程
security_assessment安全评估Windows 365安全配置

示例用法在Claude

使用“cloud_pc_troubleshoot”提示解决用户遇到的慢性能问题

Claude将引导通过诊断步骤,包括检查云PC状态、服务计划充足性和常见性能问题。


📊 MCP资源(实时数据)

资源数据类型内容
windows365://cloudpcsJSON完整的云PC库存,带有实时状态
windows365://cloudpc/{id}JSON特定云PC的详细信息
windows365://provisioning-policiesJSON所有配置策略及其配置
windows365://licensesJSON许可可用性和使用信息
windows365://user-licenses/{userId}JSON特定用户的许可详情
windows365://groupsJSON租户中的Entra ID组列表
windows365://tenant-summaryJSON租户概述和汇总统计

示例:访问实时库存

Claude可以访问windows365://cloudpcs以获取实时云PC数据,包括:

  • 所有云PC的当前状态
  • 用户分配和服务计划
  • 配置策略关联
  • 最后修改时间戳和设备信息

🎯 常见用例

🔍 云PC发现与库存

“显示我们租户中的所有云PC”
→ 使用DiscoverCloudPCs工具
→ 提供完整的库存,包括状态和用户分配

🔧 云PC详细信息与管理

“云PC xyz的详细信息是什么?”
→ 使用GetCloudPCDetails工具
→ 提供完整的云PC信息,包括服务计划和设备详情

👥 用户与组管理

“搜索名字中有‘john’的用户”
→ 使用SearchUsers工具
→ 提供匹配搜索条件的用户过滤列表

“列出所有安全组”
→ 使用SearchGroups工具
→ 显示Entra ID租户中的所有组

📈 许可分析与管理

“显示所有Windows 365许可及其可用性信息”
→ 使用GetWindows365Licenses工具
→ 提供完整的许可库存,包括已消耗和可用单位

“检查用户xyz拥有的许可”
→ 使用CheckUserLicenses工具
→ 显示特定用户的Windows 365许可分配

“将Windows 365许可分配给用户xyz”
→ 使用AssignLicense工具(修改)
→ 将可用的Windows 365许可分配给指定用户

🏗️ 配置策略管理

“列出所有配置策略”
→ 使用GetProvisioningPolicies工具
→ 显示所有策略及其配置

“显示策略xyz的详细信息及其分配”
→ 使用GetProvisioningPolicyDetails工具
→ 提供完整的策略信息和组分配

⚠️ 修改操作

“结束云PC xyz的宽限期”
→ 使用EndGracePeriod工具(修改)
→ 立即结束失败云PC的宽限期

“将许可分配给用户xyz”
→ 使用AssignLicense工具(修改)
→ 将Windows 365许可分配给指定用户

“从用户xyz移除Windows 365许可”
→ 使用UnassignLicense工具(修改)
→ 从指定用户移除Windows 365许可

🔧 故障排除

Claude桌面连接问题

问题:Claude桌面显示连接错误或工具不可用 解决方案

  1. 检查文件路径:确保claude_desktop_config.json中的所有路径都是绝对路径
  2. 验证凭据:确认AZURE_CLIENT_IDAZURE_CLIENT_SECRETAZURE_TENANT_ID正确
  3. 重启Claude桌面:每次配置更改后都要重启
  4. 检查配置语法:确保JSON有效(没有尾随逗号,正确的引号)