关于 Microsoft Copilot Studio ❤️ MCP
这是一个面向开发者的实验教程,演示如何部署 MCP 服务并将其接入 Microsoft Copilot Studio。教程涵盖本地运行、Azure 部署,以及在 Copilot Studio 中将服务添加为工具。
主要功能
- 01本地运行 MCP 服务
- 02部署到 Azure
- 03接入 Visual Studio Code
- 04导入 Copilot Studio 连接器
适用场景
- 01学习部署 MCP 服务
- 02在 Copilot Studio 中添加 MCP 工具
- 03使用 Azure 部署实验服务
MCP 相关
教程指导将 MCP 服务以 HTTP 方式连接到 Visual Studio Code,也可通过连接器将其添加到 Microsoft Copilot Studio;示例服务提供 Jokes 工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Microsoft Copilot Studio ❤️ MCP
欢迎参加 Microsoft Copilot Studio ❤️ MCP 实验。在本实验中,你将学习如何部署 MCP 服务,以及如何将其添加到 Microsoft Copilot Studio。
❓ 什么是 MCP?
模型上下文协议(MCP) 是一种开放协议,用于标准化应用程序向大模型提供上下文的方式,由 Anthropic 定义。MCP 提供了一种标准化方式,可将 AI 模型连接到不同的数据源和工具。MCP 使创作者能够将现有的知识服务和 API 无缝集成到 Copilot Studio 中。
目前,Copilot Studio 仅支持工具。若要了解当前功能,请参阅 aka.ms/mcsmcp。目前存在一些已知问题和计划中的改进,详见此处。
🆚 MCP 与连接器
什么时候使用 MCP?什么时候使用连接器?MCP 会取代连接器吗?
MCP 服务通过连接器基础架构提供给 Copilot Studio,因此这些问题其实并不适用。MCP 服务使用连接器基础架构,这意味着它们可以采用企业安全和治理控制,例如虚拟网络集成、数据丢失防护控制、多种身份验证方法——这些功能在此版本中均可使用,同时还能为 AI 驱动的 Agent 提供实时数据访问。
因此,MCP 与连接器确实是相辅相成的。
⚙️ 先决条件
- Visual Studio Code(链接)
- Node v22(建议通过 nvm for Windows 或 nvm 安装)
- 已安装 Git(链接)
- Azure Developer CLI(链接)
- Azure 订阅(已添加付款方式)
- GitHub 帐户
- Copilot Studio 试用版或开发者帐户
- 已预配 Power Platform 环境,并启用以下开关:

➕ 基于模板创建新的 GitHub 存储库
-
选择
Use this template -
选择
Create a new repository
-
选择正确的
Owner(如果你只有一个可选的所有者,此项可能已自动选中) -
为其指定
Repository name -
你也可以选择填写
Description -
选择
Private -
选择
Create repository这需要一些时间。完成后,你将转到新创建的存储库。
⚖️ 选择:在本地运行服务或部署到 Azure
现在你可以选择!你可以在本地运行服务,也可以将其部署到 Azure。
以下步骤都需要执行:
-
运行以下命令克隆此存储库(将
{account}替换为你自己的 GitHub 帐户名):git clone https://github.com/{account}/mcsmcp.git -
打开 Visual Studio Code,然后打开克隆的文件夹
-
打开终端,并导航到克隆的文件夹
🏃♀️ 在本地运行 MCP 服务
-
运行
npm install -
运行
npm run build && npm run start
-
在 Visual Studio Code 终端顶部选择
PORTS
-
选择绿色的
Forward a Port按钮
-
输入端口号
3000(该端口号应与步骤 5 中运行命令时看到的端口号相同)。系统可能会提示你登录 GitHub,如果出现提示,请完成登录,因为使用端口转发功能需要登录。 -
右键单击刚添加的行,然后选择
Port visibility>Public,以公开服务 -
按住 Ctrl 键并单击
Forwarded address,其地址应类似于:https://something-3000.something.devtunnels.ms -
在随后弹出的窗口中选择
Copy,复制 URL
-
打开你选择的浏览器,将 URL 粘贴到地址栏,在末尾添加
/mcp,然后按回车键
如果一切顺利,你会看到以下错误消息:
{"jsonrpc":"2.0","error":{"code":-32000,"message":"Method not allowed."},"id":null}
别担心,这条错误消息并不是什么需要担心的事!
🌎 部署到 Azure
重要
如先决条件中所述,你需要在计算机上安装 Azure Developer CLI 才能完成此部分。
如果你还没有登录 Azure Developer CLI,请先登录。
azd auth login
警告
运行azd up后,你将在 Azure 上启动一个可公开访问的 MCP 服务。理想情况下,你不应该这样做。完成实验后,请务必运行azd down,删除 Azure 订阅中的所有资源。请参阅本节,了解如何运行azd down。
在终端中运行以下命令:
azd up
为唯一环境名称输入 mcsmcplab 或类似名称。选择要使用的 Azure 订阅,并选择一个位置。之后,等待几分钟,服务就会部署完成。完成后,你可以访问末尾列出的 URL,并在 URL 末尾添加 /mcp。

你应该会再次看到以下错误:
{"jsonrpc":"2.0","error":{"code":-32000,"message":"Method not allowed."},"id":null}
👨💻 在 Visual Studio Code / GitHub Copilot 中使用 Jokes MCP Server
要使用 Jokes MCP Server,您需要使用服务器的 URL(可以是 devtunnel URL,也可以是已部署的 Azure Container App),在末尾加上 /mcp,然后将其添加为 Visual Studio Code 中的 MCP 服务。
-
按
ctrl+shift+P(Windows/Linux)或cmd+shift+P(Mac),然后输入MCP -
选择
MCP: Add Server... -
选择
HTTP (HTTP or Server-Sent Events) -
在输入框中粘贴服务器的 URL(确保末尾包含
/mcp) -
按
Enter -
为服务输入名称,例如
JokesMCP -
选择
User Settings,将 MCP 服务设置保存到用户设置中这会在您的
settings.json文件中添加一个 MCP 服务。文件内容应如下所示:
-
打开
GitHub Copilot -
从
Ask切换到Agent -
选择工具图标时,确保已选中
JokesMCP服务的操作:
-
提出以下问题:
从 Dev 类别获取一个 Chuck Norris 笑话
您应该会收到类似这样的回复:

现在,您已将 JokesMCP 服务添加到 Visual Studio Code 中!
👨💻 在 Microsoft Copilot Studio 中使用 Jokes MCP Server
导入连接器
-
前往 https://make.preview.powerapps.com/customconnectors(确保您处于正确的环境中),然后单击 + New custom connector。
-
选择
Import from GitHub -
在 Connector Type 中选择
Custom -
在 Branch 中选择
dev -
在 Connector 中选择
MCP-Streamable-HTTP -
选择
Continue
-
将 Connector Name 更改为合适的名称,例如
Jokes MCP -
将 Description 更改为合适的描述
-
在 Host 字段中粘贴根 URL(例如
something-3000.something.devtunnels.ms或something.azurecontainerapps.io) -
选择 Create connector
警告
创建时可能会看到警告和错误——此问题应该很快会得到解决,但目前可以忽略。
- 关闭连接器
创建 Agent 并将 MCP 服务添加为工具
-
选择右上角的环境选择器
-
选择正确的环境(已开启
Get new features early开关的环境) -
在左侧导航中选择
Create -
选择蓝色的
New agent按钮
-
选择左侧的
Configure选项卡
-
将名称更改为
Jokester -
添加以下
Description一个专注于幽默的 Agent,仅在用户请求时提供简洁、有趣的笑话,并根据用户的语气和偏好调整风格。它始终保持角色设定,避免重复,并过滤冒犯性内容,以确保体验始终得体且风趣。 -
添加以下
Instructions你是一个讲笑话的助手。你的唯一任务是在收到请求时讲得体、巧妙且有趣的笑话。请遵守以下规则:- 仅当用户请求讲笑话或提出相关要求时才作出回应(例如,“给我讲个好笑的”)。
- 根据用户输入匹配其语气和幽默偏好——干净、黑色幽默、冷幽默、双关语、爸爸笑话等。
- 绝不脱离角色,也不提供与幽默无关的信息。
- 笑话要简短,格式清晰。
- 避免冒犯性、歧视性或不适合工作的内容。
- 不确定用户偏好哪种幽默时,默认讲一个机智、普遍适宜的笑话。
- 同一会话中不要重复笑话。
- 除非用户明确要求,否则不要解释笑话。
- 反应灵敏、风趣、迅速。
-
点击右上角的
Continue
-
启用 Generative AI
Orchestration
-
在
Knowledge部分禁用通用知识
-
在顶部菜单中选择
Tools
-
选择
Add a tool
-
选择
Model Context Protocol选项卡,筛选出所有 Model Context Protocol 服务(见下方截图中的数字 1) -
选择
Jokes MCP服务(见下方截图中的数字 2)
-
选择
Not connected,然后选择 Create new Connection,创建新连接
-
选择
Create
-
选择
Add to agent,将工具添加到 Agent
-
在
Test your agent窗格中选择refresh icon
-
在
Test your agent窗格中发送以下消息:Can I get a Chuck Norris joke?此时会显示一条消息,提示需要额外权限才能运行此操作。这是因为操作向导中设置了用户身份验证。
-
选择
Connect
这会打开一个新窗口,你可以在其中管理此 Agent 的连接。
-
选择
JokesMCP旁边的Connect
-
等待连接创建完成,然后选择
Submit
-
现在连接应该已连通,状态应显示为
Connected
-
在浏览器中关闭“管理连接”选项卡
现在你应该已返回 Jokester Agent 页面。
-
在
Test your agent窗格中选择refresh icon
-
在
Test your agent窗格中发送以下消息:Can I get a Chuck Norris joke?现在会显示一个 Chuck Norris 笑话,而不是提示需要额外权限。如果没有显示笑话,你可能遗漏了先决条件:环境需要开启
get new features early开关。
-
在
Test your agent窗格中发送以下消息:Can I get a Dad joke?现在会显示一个爸爸笑话。

至此,Jokes MCP 服务已在 Microsoft Copilot Studio 中运行。
❌ 删除 Azure 资源
完成实验后,要删除 Azure 资源,请在终端中运行以下命令:
azd down
此命令会显示将要删除的资源,然后要求你确认。输入 y 确认后,资源便会被删除。这可能需要几分钟,但最后你会看到确认信息:

💡 已知问题和计划中的改进
Microsoft Copilot Studio 中的 MCP 存在一些已知问题和计划中的改进,详见这篇 Microsoft Learn 文章。
🗣️ 反馈
希望你喜欢这个实验。请抽空填写我们的反馈表单,告诉我们如何改进!
🚀 贡献
欢迎为本项目贡献内容并提出建议。大多数贡献都要求你同意贡献者许可协议(CLA),声明你有权且确实授予我们使用你所提交贡献的权利。详情请访问 https://cla.opensource.microsoft.com。
提交拉取请求时,CLA 机器人会自动判断你是否需要提供 CLA,并相应地为 PR 添加标记(例如,状态检查、评论)。只需按照机器人提供的说明操作即可。对于所有使用我们 CLA 的仓库,你只需完成一次此流程。
本项目采用了 Microsoft 开源行为准则。 如需了解更多信息,请参阅行为准则常见问题,或发送邮件至 [email protected] 提出其他问题或意见。
™️ 商标
本项目可能包含项目、产品或服务的商标或徽标。经授权使用 Microsoft 商标或徽标时,须遵守并遵循 Microsoft 商标和品牌指南。 在本项目的修改版本中使用 Microsoft 商标或徽标,不得造成混淆,也不得暗示 Microsoft 提供了赞助。 任何第三方商标或徽标的使用均须遵守相应第三方的政策。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。