通过


使用 Windows 包管理器 MCP 服务器通过 AI 代理进行包管理

Windows 包管理器 (WinGet) 包括内置模型上下文协议 (MCP) 服务器。 WinGet MCP 服务器使 AI 代理和开发工具能够智能地帮助你了解哪些包可用以及如何安装它们。

WinGet MCP 服务器向 AI 代理公开 WinGet 的核心功能,使他们能够帮助你查找包、了解其详细信息以及协助安装工作流。 此功能通过将有关可用包的上下文信息直接提供给 AI 驱动的工具来增强整体创作体验。

什么是模型上下文协议(MCP)?

模型上下文协议(MCP)是一种开放协议,使 AI 系统能够以一致的方式与外部数据源和工具进行交互。 它为 AI 代理提供了一个标准化界面,用于发现功能、检索信息和跨不同系统和服务调用作。

MCP 允许 AI驱动的工具了解哪些操作是可行的,以及如何执行这些操作,而无需为每个系统进行自定义集成。 通过此协议,开发人员可以更轻松地构建可无缝处理多个工具和服务的 AI 助手。

若要详细了解 MCP 及其如何与 AI 代理配合使用,请参阅 VS Code 中使用 MCP 服务器

WinGet MCP 如何与 AI 代理配合使用

若要将 WinGet MCP 服务器与 AI 代理配合使用,首先需要将开发环境配置为连接到 MCP 服务器。 连接后,WinGet MCP 服务器可以协助:

  • 发现可用包:当请求代理帮助执行软件安装任务时,代理可以搜索 WinGet 存储库以获取可用包。 WinGet MCP 可协助工作人员提供关于现有软件的准确最新信息。例如:

    • 你问:“我需要安装 Visual Studio Code”
    • 代理搜索:Visual Studio Code 包的 WinGet 存储库
    • 代理提供:包详细信息,包括 ID、版本、发布者和安装选项
  • 安装包:需要安装特定软件时,代理可以协助安装过程,确保软件安装正确配置。 例如:

    • 你询问:“安装 Python 开发环境”
    • 代理标识:WinGet 存储库中的相应 Python 包
    • 代理提供:安装命令,或者可以在您批准后启动安装

先决条件

在使用 WinGet MCP 服务器集成之前,请确保:

设置 WinGet MCP 服务器

若要在 VS Code 中设置用于 AI 代理的 WinGet MCP 服务器,必须:

  1. 查找 WinGet MCP 服务器可执行文件路径
  2. 在 Visual Studio Code 中配置 MCP 服务器

查找 WinGet MCP 服务器可执行文件路径

若要设置 WinGet MCP 服务器,必须先找到可执行文件的路径。 使用以下方法之一查找路径:

  1. 打开命令提示符并输入 winget mcp 命令。 结果显示 JSON 配置片段,其中显示了 WindowsPackageManagerMCPServer.exe 文件的路径。

    winget mcp
    

    如果发生以下错误: 无法识别的命令:“mcp”

    验证应用安装程序应用程序是否在设备上是最新的。 这可以在应用商店应用程序中进行验证。

  2. 打开 PowerShell 并使用以下脚本查找 MCP 服务器可执行文件:

    # Find the WinGet executable path
    $wingetPath = (Get-Command winget).Source
    # Get the directory containing WinGet
    $wingetDir = Split-Path $wingetPath -Parent
    # The MCP server executable is in the same directory
    $mcpServerPath = Join-Path -Path $wingetDir `
        -ChildPath "Microsoft.DesktopAppInstaller_8wekyb3d8bbwe" `
        -AdditionalChildPath "WindowsPackageManagerMCPServer.exe"
    Write-Host "WinGet MCP Server path: $mcpServerPath"
    

典型位置为:C:\Users\<username>\AppData\Local\Microsoft\WindowsApps\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\WindowsPackageManagerMCPServer.exe

在 Visual Studio Code 中配置 MCP 服务器

配置 WinGet MCP 服务器的建议方法是通过 mcp.json 配置文件。 需要查找(可能需要显示隐藏文件)或在项目的根目录中创建 .vscode 文件夹。 在此目录中,使用以下内容创建 mcp.json 文件(或更新该文件(如果此文件已存在):

{
  "servers": {
    "winget-mcp": {
      "type": "stdio",
      "command": "C:\\Users\\<username>\\AppData\\Local\\Microsoft\\WindowsApps\\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\\WindowsPackageManagerMCPServer.exe"
    }
  },
  "inputs": []
}

<username> 替换为实际的 Windows 用户名,或使用先前识别的 WinGet MCP 服务器可执行文件路径。

此配置告知 MCP 客户端:

  • 使用 Windows 包管理器(WinGet)的 MCP 服务器可执行文件来作为命令
  • 在客户端和服务器之间使用标准 I/O 通信
  • 使用标识符注册服务器 winget-mcp

有关 VS Code 中的 MCP 配置和设置的详细信息,请参阅 VS Code 中的“使用 MCP 服务器”。

手动命令行测试

若要手动启动 WinGet MCP 服务器以进行测试或开发目的,请在 PowerShell 中输入以下命令直接运行可执行文件:

& "C:\Users\<username>\AppData\Local\Microsoft\WindowsApps\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\WindowsPackageManagerMCPServer.exe"

<username> 替换为您实际的 Windows 用户名。

服务器在标准输入上启动并等待 MCP 协议消息。 服务器将继续运行,直到终止它(Ctrl+C)或关闭输入流。

在 Visual Studio Code 中使用 WinGet MCP 工具

若要开始使用 Visual Studio Code 中的 Windows 包管理器 (WinGet) MCP 服务器,请执行以下作:

  1. 打开 GitHub Copilot 扩展聊天窗口,然后选择 “代理模式 ”以启用 MCP 工具集成。
  2. 通过在 GitHub Copilot 聊天窗口中选择工具图标并搜索 MCP 服务器:可用工具列表中的 winget-mcp 来访问 WinGet MCP 工具。
  3. 使用条目旁边的复选标记验证 WinGet MCP 服务器工具是否可用。
  4. 开始提问或请求有关包管理任务的帮助。 当适当时,AI 代理会自动使用 WinGet MCP 工具提供准确的上下文感知帮助。

将 WinGet MCP 与 GitHub Copilot CLI 配合使用

GitHub Copilot CLI 将 AI 支持的帮助直接引入终端。 使用 Copilot CLI 注册 WinGet MCP 服务器后,可以使用自然语言提示搜索和安装包,而无需离开命令行。

先决条件

将 WinGet MCP 服务器添加到 Copilot CLI

  1. 在终端中启动 Copilot CLI:

    copilot
    
  2. /mcp add 提示符下,输入斜杠命令:

    /mcp add
    
  3. 在交互式表单中填写 MCP 服务器详细信息。 使用 Tab 在字段之间移动:

    领域 价值
    名称 winget-mcp
    类型 stdio
    命令 完整路径至 WindowsPackageManagerMCPServer.exe
  4. Ctrl+S 保存。 Copilot CLI 将配置写入到 ~/.copilot/mcp-config.json.

选项 2:直接编辑mcp-config.json

打开(或创建)~/.copilot/mcp-config.json,并添加以下条目,将 <username> 替换为你的 Windows 用户名:

{
  "mcpServers": {
    "winget-mcp": {
      "type": "stdio",
      "command": "C:\\Users\\<username>\\AppData\\Local\\Microsoft\\WindowsApps\\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\\WindowsPackageManagerMCPServer.exe",
      "args": [],
      "tools": ["*"]
    }
  }
}

注释

如果 mcp-config.json 已存在并包含其他服务器,请在 winget-mcp 现有 mcpServers 对象中添加该条目,而不是替换文件。

验证服务器是否已注册

添加服务器后,确认它已加载:

  1. 启动或重启 Copilot CLI:

    copilot
    
  2. 在命令提示符下输入:

    /mcp
    

    输出列出了所有配置的 MCP 服务器。 验证 winget-mcp 是否显示并显示连接状态。

在 Copilot CLI 命令行提示中使用 WinGet MCP

注册服务器后,当提示涉及包管理时,Copilot CLI 会自动调用 WinGet MCP 工具。 每次搜索或安装请求后,Copilot 会在运行任何命令之前请求审批。 有关提示和提示技巧的示例,请参阅 WinGet MCP 的示例提示

WinGet MCP 的示例提示

配置 WinGet MCP 服务器时,以下提示适用于 GitHub Copilot (VS Code)和 GitHub Copilot CLI:

目标 示例提示
搜索软件包 "Search WinGet for a PDF reader"
按名称安装 "Install the latest version of Git"
安装特定版本 "Install Node.js 20 LTS from WinGet"
查找任务的软件包 "What WinGet packages are available for container development?"
查找用于 Python 开发的包 "What packages are available for Python development?"
安装通用工具 "Help me install Visual Studio Code"
查找特定于平台的包 "Find packages for Docker on Windows"

有效提示方法

为了帮助 Copilot 可靠地调用 WinGet MCP 工具,请使用明确指示包管理意向的语言。 如果 Copilot 未自动使用 WinGet MCP 工具,请将显式关键字(如“using WinGet”、“from WinGet”“search WinGet”)添加到提示。

使用 VS Code 时,还要验证代理模式是否仍然已启用,并在工具面板中检查 winget-mcp 。 使用 Copilot CLI 时,用于 /mcp 确认服务器是否已连接。

可用的 WinGet MCP 命令

WinGet MCP 服务器当前支持以下命令:

找到

在 WinGet 存储库中搜索与指定条件匹配的包。 此工具有助于发现可用的软件及其详细信息。

参数:

  • 搜索查询或包标识符
  • 源、版本或其他条件的可选筛选器

安装

从 WinGet 存储库启动指定包的安装。 此工具可以在您批准的情况下安装软件包。

参数:

  • 包标识符或名称
  • 可选版本规范
  • 可选安装参数

Troubleshooting

连接问题

如果在 VS Code 与 WinGet MCP 服务器之间遇到连接问题:

  1. 请检查您的mcp.json配置文件语法。
  2. 检查路径 WindowsPackageManagerMCPServer.exe 是否正确。
  3. 确保可执行文件具有运行的适当权限。
  4. 查看 VS Code 的输出面板,了解详细的错误消息。
  5. 请尝试在 VS Code 中重启 MCP 集成。

来自 AI 代理的有限或无响应

如果 AI 代理似乎未使用 WinGet MCP 工具:

  • 请使用明确表示您需要包管理信息的特定提示。
  • 请尝试“搜索包”或“使用 WinGet 进行安装”等短语。
  • 验证是否在 Copilot Chat 中启用了代理模式。
  • 检查 WinGet MCP 工具是否在工具列表中可见。

包安装问题

包安装如果不成功或运行异常:

  • 查看 AI 代理建议的安装命令或参数。
  • 有关常见问题,请查看 WinGet 故障排除指南
  • 验证你是否具有安装软件的适当权限。
  • 确保包源可访问。

局限性

重要

你负责查看通过 AI 协助生成的所有命令。 在系统上执行安装命令之前,请始终验证安装命令并验证软件源。

WinGet MCP 服务器集成的当前限制包括:

  • 代理行为:AI 代理可能不会对每个查询使用 WinGet MCP 服务器,尽管特定的提示可以鼓励其使用。
  • 工具可用性:当前集成仅支持 findinstall 命令。 将来的版本可能会添加对更多命令的支持。

WinGet MCP 如何与 VS Code 集成

WinGet MCP 服务器与 VS Code 和 AI 代理集成,如下所示:

  1. VS Code Copilot 与可以访问 MCP 服务器的 AI 代理通信。
  2. AI 代理 使用 MCP 协议查询 WinGet MCP 服务器以获取信息。
  3. WinGet MCP 服务器 处理请求并调用相应的 WinGet CLI 命令。
  4. WinGet CLI 在存储库中执行包搜索和安装。
  5. 结果 通过链条流回,以提供更强的帮助。

WinGet MCP 集成关系图