# MCPMS笑话
## 基本信息
- Slug: `voltscp-mcpms`
- Source: modelscope
- Publisher: @VoltScp/MCPMS
- Categories: search / content-management-systems / entertainment-and-media
- Hosted: No
- License: MIT License
- Source URL: https://www.modelscope.cn/mcp/servers/@VoltScp/MCPMS
## 简介
一种模型上下文协议服务器，它使Microsoft Copilot Studio能够从各种来源获取笑话，包括Chuck Norris笑话、爸爸笑话和Yo Mama笑话。
## MCP Server 详情

# Microsoft Copilot Studio ❤️ MCP

欢迎来到 **Microsoft Copilot Studio ❤️ MCP** 实验室。在这个实验室中，您将学习如何部署一个 MCP 服务器，以及如何将其添加到 Microsoft Copilot Studio 中。

## 什么是 MCP？

[Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction) 是由 [Anthropic](https://www.anthropic.com/) 定义的一种开放协议，它标准化了应用程序如何向大语言模型（LLMs）提供上下文的方式。MCP 提供了一种标准化的方法来连接 AI 模型与不同的数据源和工具。MCP 允许制作者无缝地将现有的知识服务器和 API 直接集成到 Copilot Studio 中。

目前，Copilot Studio 仅支持工具。要了解更多当前功能，请参阅 [aka.ms/mcsmcp](https://aka.ms/mcsmcp)。存在一些已知问题及计划中的改进。这些内容列在 [这里](#known-issues-and-planned-improvements)。

## MCP 与连接器

什么时候使用 MCP？什么时候使用连接器？MCP 会取代连接器吗？

MCP 服务器是通过连接器基础设施提供给 Copilot Studio 的，因此这些问题并不真正适用。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 Studio 试用或开发者账户
- 已配置 Power Platform 环境

## 实验

为了能够部署这个 MCP 服务器并在 Microsoft Copilot Studio 中使用它，您需要执行以下操作：

- [基于模板创建一个新的 GitHub 仓库](#create-a-new-github-repository-based-on-the-template)
- [部署 Azure Web 应用](#deploy-the-azure-web-app)
- [创建 Power Platform 连接器](#create-the-power-platform-connector)
- [在 Microsoft Copilot Studio 中将 MCP 服务器作为动作添加](#add-the-mcp-server-as-an-action-in-microsoft-copilot-studio)

### 基于模板创建一个新的 GitHub 仓库

1. 选择 `Use this template`
1. 选择 `Create a new repository`

    ![](./assets/usetemplate.png)

1. 选择正确的 `Owner` 
1. 给它一个 `Repository name`
1. 可选地，您可以为其提供一个 `Description`
1. 选择 `Private`
1. 选择 `Create repository`

    这可能需要一点时间。完成后，您将被重定向到新创建的仓库。

> [!WARNING]  
> 在完成本实验的所有步骤后，您将在 Azure 上运行一个公开可用的 MCP 服务器。理想情况下，您不希望这样。请确保在完成实验后删除 Azure Web 应用。

### 部署 Azure Web 应用

1. 前往 `portal.azure.com`

    ![Azure Portal](/assets/azureportal.png)

1. 将鼠标悬停在 `Resource groups` 标签上并选择 `Create`

    ![资源组](/assets/selectResourceGroup.png)

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

    ![选择订阅](/assets/selectSubscription.png)

1. 单击 `Resource group` 名称文本框并输入一个资源组名称，例如 "jokesgrp"

    ![资源组名称](/assets/resourcegrpname.png)

1. 选择 `Region` 下拉菜单并选择离您最近的区域

    ![资源组区域](/assets/resourcegrpregion.png)

1. 单击 `Review + create`

    ![审查并创建](/assets/resourcegrpreview.png)

1. 单击 `Create`

    ![创建](/assets/resourcegrpcreate.png)

1. 选择 `Go to resource group`

    ![转到资源](/assets/gotoresource.png)

1. 选择 `Create`![创建](/assets/inresourcegrpcreate.png)

1. 点击进入`搜索框`

    ![搜索](/assets/searchmarketplace.png)

1. 输入`web app`

1. 在Web App搜索结果中选择`创建按钮`

    ![搜索结果](/assets/createwebapp1.png)

1. 选择`Web App`

    ![创建Web App](/assets/createwebapp2.png)

1. 选择`名称`文本输入框并为Web App输入一个名称，例如"wegotjokes"

    ![Web App名称](/assets/webappname.png)

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

    ![Web App运行时](/assets/selectruntime.png)

1. 选择`区域`下拉菜单并选择离您最近的区域

    ![区域](/assets/webappselectregion.png)

1. 点击`检查+创建`

    ![检查](/assets/webappreview.png)

1. 点击`创建`

    ![创建](/assets/webappcreate.png)

1. 点击`刷新`以更新您的部署进度

    ![刷新](/assets/webapprefresh.png)

1. 部署完成后，选择`转到资源`

    ![转到资源](/assets/webappgotoresource.png)

1. 展开`部署`选项卡

    ![部署选项卡](/assets/webappdeployment.png)

1. 点击`部署中心`

    ![部署中心](/assets/webappdeployctr.png)

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

    ![选择源](/assets/webappsource.png)

1. 选择`授权`

    ![授权](/assets/deployauthorize.png)

1. 选择`继续`

    ![继续](/assets/githubauthcontinue.png)

1. 选择`授权AzureAppService`

    ![授权](/assets/githubauthappservice.png)

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

    ![组织选择](/assets/githuborg.png)

1. 点击`仓库`下拉菜单并从列表中选择您之前[创建](#create-a-new-github-repository-based-on-the-template)的GitHub仓库

    ![仓库选择](/assets/githubrepo.png)

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

    ![选择分支](/assets/githubbranch.png)

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

    ![保存](/assets/githubsave.png)

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

    ![刷新](/assets/githubrefresh.png)

1. 验证部署是否完成

    ![部署完成](/assets/deploydone.png)

### 创建Power Platform连接器

1. 前往[https://make.powerapps.com/](https://make.powerapps.com/)
1. 在左侧菜单中选择`更多`
1. 选择`发现全部`按钮
1. 在数据下，选择`自定义连接器`旁边的`图钉图标`将其固定到左侧菜单
1. 在左侧菜单中选择`自定义连接器`
1. 选择`新建自定义连接器`
1. 选择`从空白创建`

    ![](./assets/newconnector.png)

1. 给连接器命名（例如`JokesMCP`）
1. 选择蓝色的`继续`按钮
1. 选择`Swagger编辑器`切换开关

    ![](./assets/swaggereditor.png)

1. 从[这里](./assets/connector.yml)复制yaml代码并替换Swagger编辑器中的代码
1. 在Swagger编辑器中，将`dummyurl.azurewebsites.net`替换为您之前[部署](#deploy-the-azure-web-app)的Web App的URL。确保移除`https://`和`azurewebsites.net`之后的所有内容
1. 选择`创建连接器`以创建连接器

### 将MCP服务器作为操作添加到Microsoft Copilot Studio

现在您已经在Azure中运行了一个MCP服务器，并且在Power Platform中有了一个可用的连接器。这一步是关于在Microsoft Copilot Studio中创建一个代理并将MCP服务器添加到该代理。

1. 前往[https://copilotstudio.microsoft.com](https://copilotstudio.microsoft.com)
1. 选择右上角的环境选择器
1. 选择正确的环境
1. 选择左侧导航中的`创建`
1. 选择蓝色的`新代理`按钮

    ![新代理](./assets/newagent.png)

1. 选择右上角的`跳过配置`

    ![跳过配置](./assets/skiptoconfigure.png)

1. 将名称更改为`Jokester`
1. 添加以下`描述`

    text
    一个专注于幽默的代理，仅在用户请求时提供简洁、引人入胜的笑话，根据用户的语气和偏好调整其风格。它保持角色一致性，避免重复，并过滤掉冒犯性内容，以确保始终适当且机智的体验。1. 添加以下`Instructions`

    text
    你是一个讲笑话的助手。你的唯一目的是在请求时提供恰当、聪明且吸引人的笑话。遵循以下规则：

    * 仅当用户要求讲笑话或相关内容（例如，“给我讲个有趣的事”）时才回应。
    * 根据用户的输入匹配他们的语气和幽默偏好——干净的、黑暗的、干巴巴的、双关语、爸爸笑话等。
    * 不要打破角色或提供与幽默无关的信息。
    * 保持笑话简洁明了。
    * 避免冒犯性、歧视性或不适合工作的内容。
    * 当不确定幽默偏好时，默认使用聪明且普遍合适的笑话。
    * 在同一会话中不要重复笑话。
    * 除非被明确要求，否则不要解释笑话。
    * 响应迅速、机智。
    

1. 点击右上角的`创建`

    ![创建代理](./assets/createagent.png)

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

    ![开启编排](./assets/turnonorchestration.png)

1. 在`知识`部分禁用通用知识

    ![关闭通用知识](./assets/turnoffgeneralknowledge.png)

1. 选择顶部菜单中的`操作`

    ![操作](./assets/actions.png)

1. 选择`添加一个操作`

    ![添加一个操作](./assets/addanaction.png)

1. 搜索您之前创建的连接器名称（本例中为`jokes`）（见下图中的编号1）
1. 选择`Jokes MCP服务器`（见下图中的编号2）

    ![搜索并选择操作](./assets/addaction.png)

1. 等待连接创建完成，完成后选择`下一步`

    ![操作和连接](./assets/actionconnection.png)

1. 将`描述以让代理知道何时使用此操作`更改为以下文本：

    text
    当用户要求讲笑话时触发此操作。它可以提供查克·诺里斯笑话、爸爸笑话和你妈妈笑话。
    

    其余部分保持默认设置，比如最终用户认证，稍后你会了解更多。

1. 选择`添加操作`将该操作添加到代理

    !…

