使用包标识从应用中注册MCP服务器

本文介绍了具有包标识的应用如何通过演练 MCP Windows 示例存储库中的示例来注册MCP服务器,github.com/microsoft/mcp-on-windows-samples,以说明具有包标识的应用如何注册MCP服务器。 将所需元数据添加到打包的应用时,OS 会在安装应用包时自动注册服务器。 使用 MSIX 包格式的应用具有包标识。 通过向应用生成包并将其注册到外部位置,可以向未打包的应用授予包标识。 有关详细信息,请参阅 通过使用外部位置打包授予软件包身份

如果你的应用没有包标识,例如使用 MSI 安装的应用,或者只是使用独立 .exe安装的应用,并且你不想使用 MSIX 打包来授予它包标识,则可以使用MCP捆绑包安装MCP服务器。 有关详细信息,请参阅使用MCP捆绑包注册MCP服务器

注释

一些信息与预发布产品相关,在商业发行之前可能发生实质性修改。 Microsoft对此处提供的信息不作任何明示或暗示的保证。

先决条件

  • Windows 内部版本 26220.7262 或更高版本
  • 确保具有最新的 SignTool.exe版本 10.0.26100.4188 或更高版本。 SignTool.exe 随 Windows SDK 一起提供。 可以使用 WinGet 获取最新的 Windows SDK。 winget install Microsoft.WindowsSDK.10.0.26100
  • 对于生产版本,你需要一个是Microsoft受信任根计划一部分的证书。
  • 服务器 MCP 。 有关详细信息,请参阅 MCP 服务器概述
  • 具有包标识和 AppxManifest.xml 文件的应用
  • 已安装 NodeJS。 若要使用 WinGet 安装 NodeJS,请使用以下命令:
    • winget install OpenJS.NodeJS

概述

添加MCP服务器到带有包标识的应用程序需要执行以下步骤:

  • 将描述MCP服务器的manifest.json包MCP文件添加到项目中。 有关此文件格式的详细信息,请参阅 MCP 捆绑 github 存储库 ,github.com/anthropics/mcpb/
  • 向文件添加 uap3:AppExtension 条目 AppxManifest.xml

克隆示例

在 Windows 上克隆 MCP 示例存储库。

git clone https://github.com/microsoft/mcp-on-windows-samples.git

注册 MCP 服务器的 MSIX 应用的解决方案文件位于 mcp-on-windows-samples\msix-app-with-server\ 目录中。

设置并生成示例

.sln从 Visual Studio 中的示例打开该文件,从解决方案平台下拉列表中选择设备的正确体系结构。

应用需要证书才能成功生成。 若要添加测试证书,请执行以下操作:

  1. 解决方案资源管理器mcp-server-msix 项目中,双击该文件 Package.appxmanifest 以打开包清单编辑器。
  2. 在“ 打包 ”选项卡上,单击“ 选择证书”。
  3. 在“ 选择证书 ”对话框中,单击“ 创建...”
  4. 将所有字段保留默认值,然后单击“ 确定”。 再次单击 “确定 ”以完成证书创建过程。

生成示例。 在 解决方案资源管理器中,右键单击 mcp-server-msix 项目并选择“ 部署”。 现在运行应用。

接下来,通过打开该文件夹的 PowerShell 提示符并运行以下命令来启动 MCP 服务器。 可能需要根据计算机的体系结构更改路径。

npx @modelcontextprotocol/inspector .\McpServer\bin\x64\Debug\net8.0\McpServer.exe

此命令将启动 MCP 服务器。 它还将在浏览器窗口中启动 MCP 检查器(用于与 MCP 服务器交互的实用工具)。 切换回示例应用,以使用应用的 UI 与 MCP 服务器交互。

本演练的其余部分将指出此示例应用程序中的组件,这些组件会在安装时被注册。

MCP捆绑包配置 JSON 文件

MCP捆绑包配置 JSON 文件描述服务器以及如何与之交互。 示例 MCP 项目的捆绑包配置 JSON 文件位于该文件 Assets/manifest.json中。 代码列表如下所示。 请注意,它提供元数据,例如服务器的名称、说明和作者。 接下来,它定义三种不同的工具,并定义预期的输入类型。

{
  "manifest_version": "0.1",
  "name": "MCP-Server-Sample-App",
  "version": "1.0.0",
  "description": "A Sample App MCP Server",
  "author": {
    "name": "Microsoft"
  },
  "server": {
    "type": "binary",
    "entry_point": "SampleMCPServer.McpServer.exe",
    "mcp_config": {
      "command": "SampleMCPServer.McpServer.exe",
      "args": []
    }
  },
  "tools": [
    {
      "name": "get_random_fact",
      "description": "Gets a random interesting fact from an online API."
    },
    {
      "name": "get_random_quote",
      "description": "Gets a random inspirational quote from an online API."
    },
    {
      "name": "get_weather",
      "description": "Gets current weather information for a specified city."
    }
  ],
  "tools_generated": false,
  "license": "MIT",
  "_meta": {
    "com.microsoft.windows": {
      "static_responses": {
        "initialize": {
          "protocolVersion": "2025-06-18",
          "capabilities": {
            "logging": {},
            "tools": {
              "listChanged": true
            }
          },
          "serverInfo": {
            "name": "McpServer",
            "version": "1.0.0.0"
          }
        },
        "tools/list": {
          "tools": [
            {
              "name": "get_random_quote",
              "description": "Gets a random inspirational quote from an online API.",
              "inputSchema": {
                "type": "object",
                "properties": {}
              }
            },
            {
              "name": "get_random_fact",
              "description": "Gets a random interesting fact from an online API.",
              "inputSchema": {
                "type": "object",
                "properties": {}
              }
            },
            {
              "name": "get_weather",
              "description": "Gets current weather information for a specified city.",
              "inputSchema": {
                "type": "object",
                "properties": {
                  "city": {
                    "type": "string",
                    "default": "London"
                  }
                }
              }
            }
          ]
        }
      }
    }
  }
}

MCP包清单文件中的应用扩展条目

通过将 MCP 元素添加到应用的程序包清单文件,将服务器注册AppxManifest.xml到系统。 扩展名的名称为 com.microsoft.windows.ai.mcpServer. 此扩展允许 Windows 在安装或卸载应用时注册和注销服务器 MCP 。 uap5:AppExecutionAlias 告知系统服务器的可执行文件MCP。

<Extensions>
	<uap3:Extension Category="windows.appExtension">
		<uap3:AppExtension
			Name="com.microsoft.windows.ai.mcpServer"
			Id="WindowsMCPServerSampleApp"
			DisplayName="Windows Sample MCP Server"
			PublicFolder="Assets">
			<uap3:Properties>
				<Registration>mcpServerConfig.json</Registration>
			</uap3:Properties>
		</uap3:AppExtension>
	</uap3:Extension>

	<uap5:Extension Category="windows.appExecutionAlias">
		<uap5:AppExecutionAlias>
			<uap5:ExecutionAlias Alias="WindowsMCPServerSampleApp.exe"/>
		</uap5:AppExecutionAlias>
	</uap5:Extension>
</Extensions>

可以通过右键单击 Package.appxmanifest 文件并选择 “查看代码”来查看示例项目的代码。

请求服务器的功能

MCP向包应用注册的服务器将在包含的环境中运行,这意味着默认情况下,它无法访问受保护的资源,例如当前用户的文件。 有关详细信息,请参阅 在 Windows 上安全管理服务器MCP

可以通过在应用清单文件中声明功能来请求对资源集的访问权限。 访问服务器时,系统将提示用户允许访问请求的资源。 大多数功能可以直接在清单编辑器 UI 中设置。 可通过功能访问的一些常见资源包括:

  • documentsLibrary – 授予对用户 Documents 文件夹的访问权限。
  • downloadsFolder – 授予对用户下载文件夹的访问权限。
  • picturesLibrary – 授予对用户“图片”文件夹的访问权限。
  • musicLibrary – 授予对用户音乐文件夹的访问权限。
  • videosLibrary – 授予对用户视频文件夹的访问权限。

有关功能的详细信息,请参阅 应用功能声明

测试MCP服务器

有关测试 MCP 服务器的注册和功能的信息,请参阅 在 Windows 上测试 MCP 服务器