内容
# 微软 Copilot 工作室 ❤️ MCP
欢迎参加 **微软 Copilot 工作室 ❤️ MCP** 实验室。在这个实验室中,您将学习如何部署 MCP 服务器,以及如何将其添加到微软 Copilot 工作室。
## 什么是 MCP?
[模型上下文协议(MCP)](https://modelcontextprotocol.io/introduction) 是一个开放协议,标准化的应用程序如何为大型语言模型(LLM)提供上下文,由 [Anthropic](https://www.anthropic.com/) 定义。MCP 提供了一种标准化的方式,将 AI 模型连接到不同的数据源和工具。MCP 允许开发者将现有的知识服务器和 API 直接集成到 Copilot 工作室。
目前,Copilot 工作室仅支持工具。要了解当前功能,请参阅 [aka.ms/mcsmcp](https://aka.ms/mcsmcp)。已知问题和计划中的改进在此列出:[此处](#known-issues-and-planned-improvements)。
## MCP 与连接器
何时使用 MCP?何时使用连接器?MCP 会取代连接器吗?
MCP 服务器通过连接器基础设施提供给 Copilot 工作室,因此这些问题并不完全适用。MCP 服务器使用连接器基础设施,这意味着它们可以采用企业安全和治理控制,例如 [虚拟网络](https://learn.microsoft.com/power-platform/admin/vnet-support-overview) 集成、[数据丢失预防](https://learn.microsoft.com/power-platform/admin/wp-data-loss-prevention) 控制、[多种身份验证方法](https://learn.microsoft.com/connectors/custom-connectors/#2-secure-your-api) - 所有这些都在此版本中提供 - 同时支持 AI 代理的实时数据访问。
因此,MCP 和连接器实际上是 **更好的合作伙伴**。
## 先决条件
- Azure 订阅(已添加付款方式)
- 拥有 GitHub 帐户并已登录
- Copilot 工作室试用或开发者帐户
- 已配置 Power Platform 环境
## 实验室
要部署此 MCP 服务器并在微软 Copilot 工作室中使用它,您需要完成以下操作:
- [基于模板创建新的 GitHub 仓库](#create-a-new-github-repository-based-on-the-template)
- [部署 Azure Web 应用](#deploy-the-azure-web-app)
- [创建 Power Platform 连接器](#create-the-power-platform-connector)
- [在微软 Copilot 工作室中将 MCP 服务器添加为操作](#add-the-mcp-server-as-an-action-in-microsoft-copilot-studio)
### 基于模板创建新的 GitHub 仓库
1. 选择 `使用此模板`
2. 选择 `创建新仓库`

3. 选择正确的 `所有者`
4. 输入 `仓库名称`
5. 可选:输入 `描述`
6. 选择 `私有`
7. 选择 `创建仓库`
这将需要一些时间。完成后,您将被定向到新创建的仓库。
> [!WARNING]
> 完成本实验室中的步骤后,您将在 Azure 上运行一个公开可用的 MCP 服务器。理想情况下,您不希望这样。在完成实验室后,请确保删除 Azure Web 应用。
### 部署 Azure Web 应用
1. 进入 `portal.azure.com`

2. 将鼠标悬停在 `资源组` 选项卡上并选择 `创建`

3. 点击 `订阅` 下拉菜单并从列表中选择您的订阅

4. 点击 `资源组名称` 文本框并输入资源组名称,例如 "jokesgrp"

5. 选择 `区域` 下拉菜单并选择最接近您的区域

6. 点击 `查看 + 创建`

7. 点击 `创建`

8. 选择 `前往资源组`

9. 选择 `创建`

10. 点击 `搜索框`

11. 输入 `web 应用`
12. 在 Web 应用搜索结果中选择 `创建按钮`

13. 选择 `Web 应用`

14. 选择 `名称` 文本输入并输入 Web 应用的名称,例如 "wegotjokes"

15. 选择 `运行时栈` 下拉菜单并选择 `Node 22 LTS`

16. 选择 `区域` 下拉菜单并选择最接近您的区域

17. 点击 `查看 + 创建`

18. 点击 `创建`

19. 点击 `刷新` 以更新部署进度

20. 部署完成后,选择 `前往资源`

21. 展开 `部署` 选项卡

22. 点击 `部署中心`

23. 点击 `源` 下拉菜单并选择 `GitHub`

24. 选择 `授权`

25. 选择 `继续`

26. 选择 `授权 AzureAppService`

27. 点击 `组织` 下拉菜单并选择您的组织

28. 点击 `仓库` 下拉菜单并从列表中选择您创建的 GitHub 仓库

29. 点击 `分支` 下拉菜单并选择您的分支

30. 保持其他默认设置并选择 `保存`

31. 点击 `刷新` 以更新部署状态

32. 验证部署是否完成

### 创建 Power Platform 连接器
1. 进入 [https://make.powerapps.com/](https://make.powerapps.com/)
2. 在左侧菜单中选择 `更多`
3. 选择 `发现所有`
4. 在 `数据` 下选择 `固定图标` 以固定 `自定义连接器` 到左侧菜单
5. 在左侧菜单中选择 `自定义连接器`
6. 选择 `新建自定义连接器`
7. 选择 `从空白创建`

8. 为连接器命名(例如 `JokesMCP`)
9. 选择蓝色 `继续` 按钮
10. 选择 `Swagger 编辑器` 切换按钮

11. 从 [此处](./assets/connector.yml) 复制 yaml 代码并替换 Swagger 编辑器中的代码
12. 在 Swagger 编辑器中,将 `dummyurl.azurewebsites.net` 替换为您创建的 Web 应用的 URL。确保删除 `https://` 和 `azurewebsites.net` 之后的所有内容
13. 选择 `创建连接器` 以创建连接器
### 在微软 Copilot 工作室中将 MCP 服务器添加为操作
现在,您在 Azure 上有一个正在运行的 MCP 服务器,在 Power Platform 中有一个可用的连接器。此步骤是在微软 Copilot 工作室中创建代理并将 MCP 服务器添加到代理。
1. 进入 [https://copilotstudio.microsoft.com](https://copilotstudio.microsoft.com)
2. 选择右上角的环境选择器
3. 选择正确的环境
4. 在左侧导航中选择 `创建`
5. 选择蓝色 `新建代理` 按钮

6. 在右上角选择 `跳过配置`

7. 将名称更改为 `Jokester`
8. 添加以下 `描述`
```text
一个幽默聚焦的代理,根据用户请求提供简洁、引人入胜的笑话,适应用户的语气和偏好。它保持角色,避免重复,并过滤掉不合适的内容,以确保始终提供适当和机智的体验。
```
9. 添加以下 `指令`
```text
你是一个讲笑话的助手。你的唯一目的是根据请求提供合适的、聪明和引人入胜的笑话。遵循以下规则:
* 仅在用户要求笑话或相关内容时才做出回应(例如,“给我讲个笑话”)。
* 根据用户的输入匹配语气和幽默偏好 - 清洁,黑暗,干燥,基于双关语,爸爸笑话等。
* 永远不要打破角色或提供与幽默无关的信息。
* 保持笑话简洁和清晰格式化。
* 避免冒犯,歧视或 NSFW 内容。
* 当不确定幽默偏好时,默认提供聪明和普遍合适的笑话。
* 在同一会话中不要重复笑话。
* 除非明确要求,否则不要解释笑话。
* 响应迅速,机智和快速。
```
10. 在右上角选择 `创建`

11. 启用生成式 AI `编排`

12. 在 `知识` 部分禁用一般知识

13. 在顶部菜单中选择 `操作`

14. 选择 `添加操作`

15. 搜索您创建的连接器的名称(在本例中为 `jokes`)(请参见下面的第 1 个屏幕截图)
16. 选择 `Jokes MCP 服务器`(请参见下面的第 2 个屏幕截图)

17. 等待连接创建完成并选择 `下一步`

18. 将 `代理了解何时使用此操作的描述` 更改为以下文本:
```text
当用户要求笑话时触发此操作。它可以提供查克·诺里斯笑话,爸爸笑话和约妈妈笑话。
```
保留其他设置不变,例如用户身份验证,您将在一分钟内了解更多相关信息。
19. 选择 `添加操作` 将操作添加到代理

20. 在 `测试你的代理` 窗格中选择 `刷新图标`

21. 在 `测试你的代理` 窗格中发送以下消息:
```text
我可以得到一个查克·诺里斯的笑话吗?
```
这将显示您需要运行此操作的额外权限的消息。这是因为操作向导中存在用户身份验证。
22. 选择 `连接`

这将打开一个新窗口,您可以在其中管理此代理的连接。
23. 在 `JokesMCP` 旁边选择 `连接`

24. 等待连接创建完成并选择 `提交`

25. 连接现在应该已连接,因此状态应设置为 `已连接`

26. 关闭浏览器中的管理连接选项卡
现在您应该回到 Jokester 代理屏幕。
27. 在 `测试你的代理` 窗格中选择 `刷新图标`

28. 在 `测试你的代理` 窗格中发送以下消息:
```text
我可以得到一个查克·诺里斯的笑话吗?
```
这现在将显示一个查克·诺里斯的笑话 - 而不是额外的权限。

29. 在 `测试你的代理` 窗格中发送以下消息:
```text
我可以得到一个爸爸笑话吗?
```
这现在将显示一个爸爸笑话。

30. 在 `测试你的代理` 窗格中发送以下消息:
```text
我可以得到一个约妈妈笑话吗?
```
这现在将显示一个约妈妈笑话。

## Jokes MCP 服务器详细信息
这是一个使用 [TypeScript SDK](https://github.com/modelcontextprotocol/csharp-sdk) 构建的 [MCP](https://modelcontextprotocol.io/introduction) 服务器。
使用此 MCP 服务器,您将能够从以下网站获取笑话:
- [chucknorris.io](https://api.chucknorris.io/)
- [icanhazdadjoke.com](https://icanhazdadjoke.com/)
- [yomama-jokes.com](https://www.yomama-jokes.com)
如果您想在本地运行服务器,请确保在仓库根目录运行 `npm install`。
之后,您可以运行 `npm run build` 来构建服务器,并运行 `npm start` 来启动服务器。
## 工具
包含以下工具:
### 获取查克笑话
此工具从 [chucknorris.io](https://api.chucknorris.io/) 获取一个随机的查克·诺里斯笑话。
### 获取查克类别
此工具从 [chucknorris.io](https://api.chucknorris.io/) 获取可用的类别。
### 获取爸爸笑话
此工具从 [icanhazdadjoke.com](https://icanhazdadjoke.com/) 获取一个随机的爸爸笑话。
### 获取约妈妈笑话
此工具从 [yomama-jokes.com](https://www.yomama-jokes.com) 获取一个随机的约妈妈笑话。
## 已知问题和计划改进
微软 Copilot 工作室中的 MCP 有一些已知问题和计划改进。它们列在 [此 Microsoft Learn 文章](https://aka.ms/mcsmcpdocs#known-issues--planned-improvements) 中。
## 贡献
该项目欢迎贡献和建议。大多数贡献需要您同意一份贡献者许可协议(CLA),声明您有权授予我们使用您的贡献的权利。有关详细信息,请访问 https://cla.opensource.microsoft.com。
当您提交拉取请求时,CLA 机器人将自动确定您是否需要提供 CLA 并适当地装饰 PR。只需按照 bot 提供的说明进行操作。您只需在所有使用我们的 CLA 的仓库中执行此操作一次。
该项目已采用 [微软开源行为准则](https://opensource.microsoft.com/codeofconduct/)。有关更多信息,请参见 [行为准则常见问题](https://opensource.microsoft.com/codeofconduct/faq/) 或联系 [opencode@microsoft.com](mailto:opencode@microsoft.com),提出其他问题或评论。
## 商标
该项目可能包含项目的商标或徽标。授权使用微软商标或徽标受 [微软商标和品牌指南](https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks/usage/general) 的约束。使用微软商标或徽标的修改版本必须避免混淆或暗示微软赞助。
任何使用第三方商标或徽标的行为均受第三方政策的约束。